Contract-Deployment

Kovan 合約創建 gas 限制行為

  • October 17, 2019

我有一個相當大的契約,我必須在 Kovan 網路上創建以進行測試。當我試圖創建上述契約時,會發生相當奇怪的行為。

行為是:每當交易消耗的限制超過6000000氣體時,交易就會失敗並出現氣體不足的錯誤(儘管10000000指定了氣體限制(這是塊氣體限制)。

現在我的聯繫人理論規模在創建時限制在 6.8-7 百萬左右。

這是一些範例事務:當我從程式碼中刪除一些函式(與初始化無關)時,這個成功: https ://kovan.etherscan.io/tx/0x0d903408120c352876879d833ecfec01f7f4b8b3a17967b6f4920b4d30c9253b

這個失敗(原始交易大小58236/2`字節),意味著大約 582.36 萬限制 + 一些 EVM 指定的氣體成本(契約創建等),結果超過 600 萬: https ://kovan.etherscan.io/tx/0xc8a1a2d4c3c010801cd769b0325c4bf1c8dcb2bc47f76505f91dface7cb62050

問題:

  • 正如您在這兩種情況下看到的那樣,在區塊中為新交易留下了足夠的空間,是否有某種我不知道的限制?
  • 有關如何解決此問題的任何提示?
  • 這個行為鏈/節點是特定的嗎?

實際上還沒有在任何其他鏈上測試過這個。

我知道從所有標準來看,這是一個大型契約,但是將其拆分為更多的子契約會增加每筆交易的運營成本 + 增加邏輯複雜性(確保只有允許的參與者才能訪問特定的公共方法)。最重要的是,它已經是一系列相互關聯的契約的一部分。

自https://eips.ethereum.org/EIPS/eip-170以來,乙太坊的智能合約執行時硬編碼限制為 24 KB 。

此限制與塊氣體限制不同。

注意:編譯返回一個由建構子和執行時組成的字節碼,只有最後一部分必須在 24 KB 的限制內。

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