Solidity

合約程式碼無法儲存,請檢查您的gas量

  • February 9, 2022

我知道這個問題之前已經討論過好幾次了,但是我無法從任何答案中得到解決我的問題的方法,

在添加以下功能之前,我的契約部署得很好,

function setApproval(address addr, bool approved)payable returns(string, uint, uint) {

      //some logical operations and assignments

   }

一旦我添加功能並嘗試部署契約,我就收到了這個錯誤

遇到錯誤,放棄。網路狀態未知。手動查看成功的交易。錯誤:無法儲存合約程式碼,請檢查您的gas量。

測試 rpc 伺服器顯示以下日誌

交易:0xD5791AC0C6059CBD43E00A7FABE566ADA3F0572966F12FF25DA6E04215840F39合約創建:0x9062592C5DD06340401C5DD06340401C1E750DDB025DEFABF5BE煤氣用途:4712388塊編號:16塊時間:2017年7月22日星期六03:30:30(印度標準時間)執行時誤差:瓦斯

在刪除此功能合約後再次部署且沒有錯誤

這個功能有什麼問題?

我的合約程式碼大約 250 行,合約程式碼大小有限制嗎?

提前致謝

在你的2_deploy_contracts.js文件中,改變氣體價格預設為更高的數字,即:

// 2_deploy_contracts.js

const MyContract = artifacts.require('./MyContract.sol')

module.exports = function (deployer) {
 deployer.deploy(MyContract, { gas: 5000000 })
}

我有同樣的問題,這對我有用。

當合約從介面繼承並且沒有實現函式時,將發出此錯誤。

松露 4.0.4 solc 0.4.18

interface IF { 
   function doSomething() external view returns(uint); 
}

contract Inherit is IF {
   Inherit() public; 
}

部署時。會發出錯誤:

合約程式碼無法儲存,請檢查您的gas量

解決方案是實現該功能。

contract Inherit is IF {
   doSomething() external view returns(uint) {
       return 5;
   }
}

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