2017年10月11日

[Ethereum][Blockchain] Authentication Neded:Password or unlock 與 personal_unlockAccount does not exist

Azure上可以直接由Marketplace佈署Ethereum Network。佈署完成後,我們可以透過Marketplace佈署Truffle Client機器,也可以直接在Linux上安裝Truffle作為client端的開發測試工具。以下是我在測試過程中遇到的一些問題。

1.       當執行Truffle migrate時,出現Authentication Neded:Password or unlock錯誤

EthereumTransaction Node為了安全考量,預設會將帳號鎖定;任何寫入Blockchain的交易都需要先unlock帳號。

使用gethtruffle可以透過下列指令來解鎖

personal.unlockAccount(web3.eth.accounts[0],"Pass Phrase");

使用node.js (web3.js)可以透過以下程式代碼

'use strict';

var Web3 = require('web3');

var web3 = new Web3();

web3.setProvider(new web3.providers.HttpProvider('http://<IP>:8545'));

 

web3.personal.unlockAccount(web3.eth.accounts[0],'<Pass phrase>');

 

2.       gethtruffle執行以上代碼時,可能會遇到The method personal_unlockAccount does not exist的錯誤

Ethereum Network執行時,Server端需要載入額外的Management APIClient端方可使用這些management API

載入方式:

SSH到所有的Transaction Node,修改以下的檔案

/home/<user>/start-private-blockchain.sh

nohup geth --datadir $GETH_HOME -verbosity $VERBOSITY --bootnodes $BOOTNODE_URLS --maxpeers $MAX_PEERS --nat none --networkid $NETWORK_ID --identity $IDENTITY $MINE_OPTIONS $FAST_SYNC --rpc --rpcaddr "$IPADDR" --rpccorsdomain "*" --rpcapi "eth,net,web3,admin,personal" >> $GETH_LOG_FILE_PATH 2>&1 &

其中黃色部分即是新增的指令

 


沒有留言:

About Me