Contract-Development

區塊氣體限制低於部署合約所需的限制

  • March 10, 2022

我正在嘗試在 ropsten 網路上部署一個需要約 7000000 氣體的契約,但是目前 ropsten 上的氣體限制為約 350 萬,我無法部署該契約。我能做些什麼呢?

您能否分享您的合約程式碼,以便我們嘗試查看導致高部署成本的原因?

這個問題可能有也可能沒有簡單的解決方案。您應該檢查在編譯的合約程式碼的大小上花費了多少 gas,以及在執行建構子上花費了多少。

嘗試通過以下方式減少契約規模:

  • 在啟用優化的情況下編譯它
  • 手動優化程式碼的大小。刪除重複的程式碼,並刪除不是絕對必要的程式碼。如果某些功能僅在客戶端需要,則將其從合約中刪除並在客戶端實現。
  • 將功能拆分為多個合約

嘗試通過以下方式降低建構子的 gas 成本:

  • 減少常量的大小和數量(例如數組文字、字元串文字)
  • 減少對儲存的寫入量。每個 256 位的儲存槽需要 20000 gas,所以設置一個 uint256 需要 20000,設置一個 64 字元的字元串需要 60000。
  • 限制對其他合約中函式的呼叫量
  • 如果您的建構子中有循環,請嘗試限制迭代次數
  • 一般限制在建構子中執行的工作量

使用不同的測試網!在撰寫本文時,每個測試網中的最新區塊的區塊氣體限制為:

  1. Rinkeby:1000萬(見區塊
  2. Kovan:1250萬(見區塊
  3. Goerli:800萬(見區塊

否則,您也可以隨時嘗試減少合約大小,請參見此處

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