Solidity

由於資金不足,“遷移”無法部署

  • May 12, 2020

我收到錯誤:

由於資金不足,“遷移”無法部署。發件人沒有足夠的資金來發送 tx。前期費用為:45000000000000000 發件人賬戶只有:0

當我遷移到 Rinkeby 測試網路時。我正在嘗試使用來自水龍頭的帳戶#2 中有足夠的乙太幣,但 Truffle 一直在嘗試使用其中餘額為 0 的帳戶#1。Truffle 在什麼時候嘗試連接到 MetaMask?是 Node 還是 Truffle 不能正常工作?以及如何更改 Truffle 辨識的帳戶,以便我可以連接到帳戶 #2,而不是帳戶 #1?

到目前為止,我已經嘗試過:

  1. 解除安裝並重新安裝 Truffle
  2. 註銷並重新登錄 MetaMask 並在帳戶之間切換
  3. 將 gas/gasPrice 更改為更高的值或將其註釋掉
  4. 更改節點版本

我正在使用“@truffle/hdwallet-provider”:“^1.0.35”

   rinkeby: {
     provider: () =>
       new HDWalletProvider(
         mnemonic,
         `https://rinkeby.infura.io/v3/${infuraKey}`
       ),
     network_id: 4, // rinkeby's id
     gas: 4500000, // rinkeby has a lower block limit than mainnet
     gasPrice: 10000000000,
     confirmations: 2,
     timeoutBlocks: 200,
     skipDryRun: false,
   },

要使用第一個以外的帳戶,您必須向HDWalletProvider. 第三個參數為賬戶索引,預設為0。例如使用第五個:

provider: () => {
   return new HDWalletProvider(mnemonic, URL, 4);
}

如果需要,您可以指示載入多個帳戶。載入前 5 個帳戶

provider: () => {
   return new HDWalletProvider(mnemonic, URL, 0, 5);
}

Truffle 將使用從提供者返回的第一個帳戶,但您可以使用fromtruffle-config.js更改預設帳戶

networks: 
 develop: {
   provider: () => {...},
   from: "0x01230123...0123",
   gas: "4500000",
   gasPrice: "10000000000",
 }
}

您還可以在部署時通過新參數覆蓋預設配置

module.exports = function(deployer) {
 deployer.deploy(Migrations, {
   from: "0x444433332222....0000",
   gas: "1000000",
   gasPrice: "9000000000",
 });
};

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