Truffle

松露遷移:錯誤:需要身份驗證:密碼或解鎖

  • December 17, 2021

我正在使用 Truffle 部署契約並遇到錯誤Error: authentication needed: password or unlock。我已經檢查了 相關 問題,發現只有醜陋的黑客攻擊,例如“使用直接在節點上解鎖所需帳戶web3.personal.unlockAccount”。truffle.js但是當我想部署新版本時,我不想每次都連接到我的節點(我有 3 個測試網路)。

我的問題是:有沒有辦法在松露基礎設施中指定密碼來解鎖項目from下欄位中指定的帳戶networkpasswordpass不起作用。

好的,最後我添加了一些程式碼來即時解鎖帳戶。我不想儲存密碼truffle.js(但這是可能的),所以做接下來的事情:

改成1_initial_migration.js這樣:

const Web3 = require('web3');

const TruffleConfig = require('../truffle');

var Migrations = artifacts.require("./Migrations.sol");


module.exports = function(deployer, network, addresses) {
 const config = TruffleConfig.networks[network];

 if (process.env.ACCOUNT_PASSWORD) {
   const web3 = new Web3(new Web3.providers.HttpProvider('http://' + config.host + ':' + config.port));

   console.log('>> Unlocking account ' + config.from);
   web3.personal.unlockAccount(config.from, process.env.ACCOUNT_PASSWORD, 36000);
 }

 console.log('>> Deploying migration');
 deployer.deploy(Migrations);
};

而不是打電話truffle deploy,我像這樣執行它:

ACCOUNT_PASSWORD=MySup4P@ssw0rd truffle deploy

如您所見,節點 url 和埠是從配置中獲取的,因此可以在password那裡添加欄位,然後在遷移中檢查“可呼叫性”,即:

...
password: function() { return process.env.ACCOUNT_PASSWORD }
...

– 相同,但密碼邏輯將移至truffle.js

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