Truffle
松露遷移:錯誤:需要身份驗證:密碼或解鎖
我正在使用 Truffle 部署契約並遇到錯誤
Error: authentication needed: password or unlock
。我已經檢查了 相關 問題,發現只有醜陋的黑客攻擊,例如“使用直接在節點上解鎖所需帳戶web3.personal.unlockAccount
”。truffle.js
但是當我想部署新版本時,我不想每次都連接到我的節點(我有 3 個測試網路)。我的問題是:有沒有辦法在松露基礎設施中指定密碼來解鎖項目
from
下欄位中指定的帳戶network
?password
或pass
不起作用。
好的,最後我添加了一些程式碼來即時解鎖帳戶。我不想儲存密碼
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