Gas-Limit

合約超過區塊氣體限制

  • August 4, 2017

我有一個相當複雜的合約,它繼承自一堆其他合約,例如 OpenZeppelin ERC20 庫和 Oraclize 庫。

當我將它部署到 Remix 或 Mist 的測試網上時,它說所需的 gas 為 630 萬,超過了限制。有沒有辦法可以零碎地部署它,或者我只需要讓契約不那麼複雜?

如果我不使用 Oraclize,所需的 gas 將下降到 400 萬,我可以成功部署聯繫人。

這是一個教程和一般方法:

https://dappsforbeginners.wordpress.com/tutorials/interactions-between-contracts/

您將契約拆分為多個契約,並且可以創建對“父”契約的引用,例如:

contract referencedContract {   
 function fn() {}
}

contract referencingContract{

 // create reference to contract
 referencedContract m = referencedContract(referencedContractAddress);

 // call referenced contract method
 m.fn();
}

您有時可以使用將程式碼分成多個契約。從理論上講,您可以將任何規模的合約劃分為具有足夠工作量的庫。

您在契約中使用了任何結構嗎?您可以通過庫和using for聲明使它們更易於使用並消耗更少的空間。

即使庫不能很好地工作,有時也可以將一個 dapp 拆分為幾個協同工作的合約。(例如,ENS 系統以這種方式使用多個合約,更不用說使用者添加的所有契約和解析器了。)

引用自:https://ethereum.stackexchange.com/questions/23642