區塊鏈 13 | 自製一個以太坊私有鏈(二)
以太坊私有鏈新增同步節點、挖礦節點
Published in
5 min readMay 11, 2021
接續上一篇,區塊鏈 12 | 自製一個以太坊私有鏈(一),如果要在完成私有鏈的創建後新增節點,要怎麼做呢?
新增同步節點
同步節點就是沒有打包區塊權限的,只有持續更新鏈的資訊的權限。
在桌面上新增一個節點目錄 node3,使用創世區塊初始化節點。
Desktop $ geth — datadir node3 init test/test.json
啟動節點
Desktop $ geth — datadir node3 — networkid 12345 — port 2000 — nodiscover console
設定 peers 間的連線
- 設定節點間的連線 方法1
新增 json檔:node3/geth/static-nodes.json
["enode://64715674a27331d1b6678dbfca5b8460c8c611f49572b8154a69ea85f4f682091ee12b5f9b8df756074fe62b80c765c68d6954417f7dbbc6483d1d2db06c6718@127.0.0.1:8000","enode://id@ip:port",]
- 設定節點間的連線 方法2
node3 $ admin.nodeInfo.enodenode1/node2 $ admin.addPeer("enode://374dc8511dcc571451568eb5eabc8faf3d00761e05b8bb74d41d1046268e3cf210075cf36d95a09cebce45514f19d44661aa1e6fda148e11a6b54a7a9e0f663d@127.0.0.1:30303")
新增出塊節點
出塊節點就是節點不只會會持續更新鏈的資訊,並且有打包區塊的權限。
在桌面上新增一個節點目錄 node4,使用創世區塊初始化節點
Desktop $ geth –datadir node4 init test/test.json
建立帳號
Desktop $ geth –datadir node4 account new
設定節點間的連線
- 設定節點間的連線 方法1
新增 json檔:node4/geth/static-nodes.json
[“enode://64715674a27331d1b6678dbfca5b8460c8c611f49572b8154a69ea85f4f682091ee12b5f9b8df756074fe62b80c765c68d6954417f7dbbc6483d1d2db06c6718@127.0.0.1:8000”,“enode://id@ip:port”,]
啟動節點,同步節點資訊
node4 $ geth --datadir ./ --networkid 12345 --port 2000 --unlock 0x6218eEF39cF293b3d9d42d06eE8745e4dd640f72 --allow-insecure-unlock
--nodiscover
- 設定節點間的連線 方法2
在node1 加入挖礦節點:node4
node1 $ > admin.addPeer("enode://374dc8511dcc571451568eb5eabc8faf3d00761e05b8bb74d41d1046268e3cf210075cf36d95a09cebce45514f19d44661aa1e6fda148e11a6b54a7a9e0f663d@127.0.0.1:30303")
退出後,重新啟動node1,為要使用rpc應用。要加入參數 rpc、 rpcapi
node1 $ geth --datadir ./ --networkid 12345 --rpc --rpcapi "admin,db,eth,debug,miner,net,personal,web3,clique" --rpcaddr "0.0.0.0" --mine --unlock "0x21100A46aE6C549809C22B8423f95f1D5F80e270" --allow-insecure-unlock --nodiscover consolenode1 $ > clique.propose(“0x6218eef39cf293b3d9d42d06ee8745e4dd640f72”,true)node1 $ > clique.getSnapshot // 查看是否添加成功
node4就可以挖礦了
node4 $ miner.start()
Geth常用的參數
- allow-insecure-unlock:新版的geth基於安全的考量,停止使用http來解鎖帳戶,但是還是可以透過此指令來解鎖帳戶。
- rpc:開啟HTTP-RPC。可以進行智能合約的部署(deploy)與呼叫(call)
- rpcapi:客戶端可連接的應用。包括eth, net, web3..等
- rpcaddr:HTTP-RPC服務接口地址(默認值:”localhost”)
- mine:啟動挖礦