在Azure上可以直接由Marketplace佈署Ethereum Network。佈署完成後,我們可以透過Marketplace佈署Truffle Client機器,也可以直接在Linux上安裝Truffle作為client端的開發測試工具。以下是我在測試過程中遇到的一些問題。
1. 當執行Truffle migrate時,出現Authentication Neded:Password or unlock錯誤
Ethereum的Transaction Node為了安全考量,預設會將帳號鎖定;任何寫入Blockchain的交易都需要先unlock帳號。
使用geth或truffle可以透過下列指令來解鎖
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. 在geth或truffle執行以上代碼時,可能會遇到The method personal_unlockAccount does not exist的錯誤
Ethereum Network執行時,Server端需要載入額外的Management API,Client端方可使用這些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 &
其中黃色部分即是新增的指令
沒有留言:
張貼留言