Contract-Development
區塊氣體限制低於部署合約所需的限制
我正在嘗試在 ropsten 網路上部署一個需要約 7000000 氣體的契約,但是目前 ropsten 上的氣體限制為約 350 萬,我無法部署該契約。我能做些什麼呢?
您能否分享您的合約程式碼,以便我們嘗試查看導致高部署成本的原因?
這個問題可能有也可能沒有簡單的解決方案。您應該檢查在編譯的合約程式碼的大小上花費了多少 gas,以及在執行建構子上花費了多少。
嘗試通過以下方式減少契約規模:
- 在啟用優化的情況下編譯它
- 手動優化程式碼的大小。刪除重複的程式碼,並刪除不是絕對必要的程式碼。如果某些功能僅在客戶端需要,則將其從合約中刪除並在客戶端實現。
- 將功能拆分為多個合約
嘗試通過以下方式降低建構子的 gas 成本:
- 減少常量的大小和數量(例如數組文字、字元串文字)
- 減少對儲存的寫入量。每個 256 位的儲存槽需要 20000 gas,所以設置一個 uint256 需要 20000,設置一個 64 字元的字元串需要 60000。
- 限制對其他合約中函式的呼叫量
- 如果您的建構子中有循環,請嘗試限制迭代次數
- 一般限制在建構子中執行的工作量
使用不同的測試網!在撰寫本文時,每個測試網中的最新區塊的區塊氣體限制為:
否則,您也可以隨時嘗試減少合約大小,請參見此處。