一 環境以及軟件版本:
1)VMware Workstation 12 Pro
2)Ubuntu 16.04 desktop
3)以太坊geth go語言客戶端(Version: 1.8.2-unstable)
4)go語言版本 1.9.4(geth 需要1.7或以上的版本)
二 如何連接:
Geth會持續嘗試在網絡上連接到其他節點,直到有了端點為止。節點通過發現協議找到對等端。在發現協議中,節點互相
閑聊發現網絡上的其他節點。最開始,geth會使用一系列輔助程序節點,這些輔助程序節點的端點記錄在源代碼中。
三 檢查連接和enode身份:
通過net模塊可以查看當前客戶端連接的對等端數量以及節點是否在監聽。
> net.listening
true
> net.peerCount
0
四 節點
Geth支持一個叫靜態節點的特征,如果有特定的端點,它會一直想與靜態節點連接,如果斷開,靜態節點就會再次連接。
可以配置永久性靜態節點,在當前節點數據目錄下創建static-nodes.json文件,內容如下:
[ "enode://f4642fa65af50cfdea8fa7414a5def7bb7991478b768e296f5e4a54e8b995de102e0ceae2e826f293c481b5325f89be6d207b003382e18a8ecba66fbaf6416c0@33.4.2.1:30303",
"enode://pubkey@ip:port"
]
也可以通過控制臺添加
>admin.addPeer("enode://867739a9292f889afc02c5e2badb965886fd85d3a3a76a70d41def32240e85c105f46944d82ac68718e4f57cead2b23b96cf467ef949a4c231b996a368ff1169@[::]:30303?discport=0")
true
如果想要了解對等端點的信息(IP地址,端口號等等)
>admin.addPeer("enode://8fb1cc35aea0211046f480067bd24ae19181eaff507689a0e6d14ddd58b6441331c8c0d5158f6d0da6306da042c0ddb7d94baf578e1c9f82a36056e49b16660d@[::]:30303?discport=0" ... )
true
> admin.peers
[{ caps: ["eth/63"],
id:"8fb1cc35aea0211046f480067bd24ae19181eaff507689a0e6d14ddd58b6441331c8c0d5158f6d0da6306da042c0ddb7d94baf578e1c9f82a36056e49b16660d",
name: "Geth/v1.8.2-unstable-0b814d32/linux-amd64/go1.9.4",
network: {
inbound: false,
localAddress: "[::1]:41010",
remoteAddress: "[::1]:30303",
static: true,
trusted: false },
protocols: {
eth: {
difficulty: 262144,
head: "0xa0e580c6769ac3dd80894b2a256164a76b796839d2eb7f799ef6b9850ea5e82e",
version: 63 } } }]
本地起了兩個節點以方便測試:
?//第一個節點
tmpPrivate# /eth/go-ethereum/build/bin/geth --datadir "chain" init genesis.json
/eth/go-ethereum/build/bin/geth --datadir "chain" --nodiscover --networkid 15 --port 30306 console 2>> eth.log
?//第二個節點?
tmpPrivateOne# /eth/go-ethereum/build/bin/geth --datadir "chain" init genesis.json
/eth/go-ethereum/build/bin/geth --datadir "chain" --nodiscover --networkid 15 console 2>> eth.log?