以太坊私有鏈與聯盟鏈的坑
阿新 • • 發佈:2018-12-29
記錄區域網下,多個私有節點連線為聯盟鏈的坑
創世區塊的建立
儲存為json格式
{ "nonce": "0x0000000000000042", "timestamp": "0x00", "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "extraData": "0x00", "gasLimit": "0x8000000", "difficulty": "0x400", "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase": "0x3333333333333333333333333333333333333333", "alloc": { }, "config": { "chainId": 15, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 } }
difficulty:設定為0x400,設定過大,miner.start()會經常卡住。
初始化創世區塊
geth --datadir "/home/ubt/mychain/" init ./CustomGenesis.json
啟動私有鏈
geth --identity "mychain" --datadir "/home/ubt/mychain/" --rpc --rpcapi "db,eth,net,web3,admin,miner,personal,rpc" --rpccorsdomain "*"--nodiscover --networkid 100 console
坑:--nodiscover 使用這個引數,在連線多個私有節點時候一定要用,這樣你的節點就不會被其他人發現,除非手動新增你的節點。否則,就只有一個被無意新增到一個陌生區塊鏈上的機會,那就是跟你有相同的genesis檔案和networkID,然後同步到他的節點區塊高度,而不是原來自己節點的高度,造成聯盟鏈轉賬不成功。
建立賬戶
personal.newAccount(‘123')
開啟挖礦
miner.start(1)
區域網聯盟鏈搭建
用虛擬機器開啟另一個節點,要求虛擬機器為2G記憶體、2個cpu,同步聯盟鏈節點高度需要。
通過addPeer新增第一個節點
admin.addPeer('enode://b4a4e74ded2c2ee0a5a6c8251036e098dd7e76594656708fdc6015d8de52b2631[email protected]192.168.1.105:30303')
@[::]:30303 改為第一個節點的IP地址
新增完後會同步節點區塊高度,注意對比第一個節點與第二個節點高度是否一致,通過eth.blockNumber查詢
發起轉賬
personal.unlockAccount(eth.coinbase) //先解鎖賬戶
eth.sendTransaction({from: eth.coinbase, to: '目標地址', value: 1000000000000000000}) //value單位wei
開啟挖礦可看到目標地址的餘額增加。
-------------------------------------------------------------------------------------
rpcapi常用操作
新建賬戶personal.newAccount(‘123')檢視餘額eth.getBalance(eth.accounts[0])檢視錢包賬戶personal.listWallets解鎖賬戶(轉賬時)
personal.unlockAccount('賬戶地址')開始挖礦miner.start(1)區塊高度eth.blockNumber停止挖礦miner.stop()挖礦獎勵地址更換miner.setEtherbase(eth.accounts[1])