Web3js

使用 truffle 和 Genache 遷移具有特定帳戶的合約,沒有硬編碼地址

  • January 1, 2019

積木建造者!我正在嘗試使用 truffle 和 Genache 遷移我的兩個智能合約。我想指定本地現有的部署帳戶。但是,當我嘗試遷移契約時,我收到錯誤提示,即提供的地址無效。

這是我的2_deployed_contracts.js

var Bank = artifacts.require("Bank");
var Client = artifacts.require("Client");

module.exports = function(deployer, accounts) {
 deployer.deploy(Bank, {from: accounts[0], value: 
 web3.utils.toWei("30", "ether")}).then((bank)=>{
   return deployer.deploy(Client, bank.address, {from:accounts[1]});
 });
};

以及報錯提示:

Error:  *** Deployment Failed ***

"Bank" -- Provided address "d" is invalid, the capitalization checksum test 
failed, or its an indrect IBAN address which can't be converted..

at /usr/local/lib/node_modules/truffle/build/webpack:/packages/truffle- 
deployer/src/deployment.js:364:1
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)

只有當我在from欄位中硬編碼帳戶地址時,遷移成功。帳戶變數似乎不像大多數其他文章建議的那樣工作。我不知道為什麼,因為我認為松露會注入賬戶變數。

你的accounts論點在錯誤的位置(第二而不是第三)。

改變這個:

module.exports = function(deployer, accounts)

對此:

module.exports = function(deployer, network, accounts)

PS:在Provided address "d" is invalid錯誤中,d可能是您的網路名稱中的第一個字母 - development- 與您的 Truffle 配置文件 ( truffle-config.js) 中的配置相同。

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