Solidity

Ganache + Truffle:如何在不考慮 gas 的情況下部署合約

  • May 4, 2020

我正在與 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 沒有阻止它,我認為您將不得不以某種方式終止該程序。

希望能幫助到你。

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