Solidity
編譯合約 Solidity 瀏覽器時超出區塊氣體限制
使用 Solidity 瀏覽器 ( https://ethereum.github.io/browser-solidity/ ) 在 testnet 上使用注入的 web3 和 metamask 帳戶探勘合約,會引發此錯誤:
callback contain no result Gas required exceeds limit: 3000000
該合約(原始碼 => https://gist.github.com/computerphysicslab/f362383f9d3fed26becba48b934bbcfc)預計部署成本約為 600 萬天然氣(根據 JS VM 環境)。然而,當試圖增加氣體限制時,會拋出這些錯誤:
callback contain no result Gas required exceeds limit: 4000000 callback contain no result Gas required exceeds block gas limit: 5000000 callback contain no result Gas required exceeds block gas limit: 6000000 callback contain no result Gas required exceeds block gas limit: 10000000 ...
因此,似乎無法探勘該合約,因為區塊氣體限制約為 500 萬氣體。是否有可能以某種方式克服這個限制?
參考:
除非礦工增加區塊氣體限制,否則您唯一的選擇是將合約拆分為多個合約。
所以每個合約都有自己的地址,你可以在它們之間進行呼叫。例如,ICO 眾籌可以分為:
- Crowdsale:管理眾籌、代幣的分配方式、獎勵、開啟、關閉
- Token:實現ERC20,可以創建token,批准轉賬
- 錢包:管理眾籌期間收到的資金
由於每個契約的範圍有限,因此拆分也有助於安全審計。
每個合約都可以獨立部署,通過配置方法完成設置。