1. 程式人生 > >以太坊私有鏈與聯盟鏈的坑

以太坊私有鏈與聯盟鏈的坑

記錄區域網下,多個私有節點連線為聯盟鏈的坑

創世區塊的建立

儲存為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])