Contract-Development
truffle migrate –network live –dry-run 的奇怪輸出
我無法使用 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 } } };