Solidity
Ganache + Truffle:如何在不考慮 gas 的情況下部署合約
我正在與 Ganache 和 Truffle 合作。我正在嘗試部署一種巨大的智能合約,但這個智能合約中的大部分功能都是 pre-prod 功能,所以我並不擔心現實世界的遷移。
因此,我試圖在本地使用 ganache 部署我的智能合約,而不想擔心 gas 使用。無論我嘗試了什麼,我仍然得到錯誤:
"SmartContractName" ran out of gas (using a value you set in your network config or deployment parameters.)
我一直在玩 Ganache 區塊限制和 gas 價格:
ganache-cli -g 0 -l 1000000000000
我一直在玩遷移文件中的 gasreturn deployer.deploy(SmartContractName, { gas: 400000000000 })
我一直在玩 truffle-config:
development: { host: "localhost", port: 8545, network_id: "*", gas: 1000000000, gasPrice: 0 }
到目前為止,沒有任何效果。有沒有人有辦法解決嗎?
如果沒有看到程式碼,就不可能確認這一點,但我懷疑您的程式碼包含一個無限循環,或者可能只是一個循環次數不合理的循環。
無界
for
循環和遞歸是反模式。看到這個:https ://blog.b9lab.com/getting-loopy-with-solidity-1d51794622ad根據您的問題,我認為您了解建構任何氣體需求將超過網路 gasLimit(目前約為 800 萬)的東西是毫無意義的,並且您正確地將其設置為更高的開發網路
-l n
。它已經被提高到離譜的高度,這就是為什麼我認為沒有上限就足夠了。是時候弄清楚為什麼契約開始了一段永遠不會回來的旅程。如果這是普通電腦並且 gasLimit 沒有阻止它,我認為您將不得不以某種方式終止該程序。
希望能幫助到你。