Contract-Development

truffle migrate –network live –dry-run 的奇怪輸出

  • February 25, 2018

我無法使用 Infura、MetaMask 和 Truffle 成功部署我的契約。

當我執行時,truffle migrate --network live我收到此錯誤:

Error encountered, bailing. Network state unknown. Review successful transactions manually. insufficient funds for gas * price + value

但是,如果我執行,truffle migrate --network live --dry-run我會得到以下輸出:

sender doesn't have enough funds to send tx. The upfront cost is: 672197500000000000 and the sender's account only has: 60000000000000000

假設價值是 wei,為什麼部署一個合約要花這麼多錢?我能做些什麼呢?

這是我的truffle.js文件:

var HDWalletProvider = require("truffle-hdwallet-provider");

var mnemonic = "my_mnemonic";

module.exports = {
 networks: {
   live: {
     network_id: 1,
     provider: new HDWalletProvider(mnemonic, "https://mainnet.infura.io/my_api_key")    
   }   
 }
};

你可以使用 remix.ethereum.org 來測試你的合約併計算 gas 使用量。對我來說,它在部署時大約使用 2M 氣體。

您沒有在配置中指定預設使用的氣體限制(大約 6.7M 氣體)。您可以嘗試在 truffle.js 中降低它。

var HDWalletProvider = require("truffle-hdwallet-provider");

var mnemonic = "my_mnemonic";

module.exports = {
 networks: {
   live: {
     network_id: 1,
     provider: new HDWalletProvider(mnemonic, "https://mainnet.infura.io/my_api_key"),
     gas: "4000000",           // 4M
     gasPrice: "20000000000"   // 20gwei
   }   
 }
};

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