Go-Ethereum

從乙太坊中的終端連接不同網路上不同機器上的 2 個節點

  • September 12, 2017

從乙太坊的終端連接不同網路上不同機器上的 2 個節點。

我在我的 ubuntu 機器上執行了 3 個節點,比如 A,我已經為它們預先分配了一些數量,它們可以使用節點地址在彼此之間轉移該數量。

我想從另一台機器上傳輸/通信,比如 B,它也在上面執行 3 個節點。機器 A 上的節點如何連接到機器 B 上的節點。我想在 A 和 B 之間建立一個私有網路而不連接到主區塊鏈,以便 A 和 B 開始相互通信,

在第一個節點上我執行這個:

geth --genesis /home/cgen.json --datadir '/home/jedi/Desktop/node1' --networkid 12588 --port 30305 --verbosity 0 console

在第二個終端:

geth --genesis /home/customgen.json --datadir '/home/jedi/Desktop/node1' --networkid 12345 --nodiscover --port 30311 --verbosity 0 console --bootnodes "enode://5675641adc6106447d9741c48ce382aca7becddd6da99881e8c98ef26f73bf4a63252fb‌​e5ec29ddec6960cb78c7d69d39c181c6ca83e38d39670be6742f76d94@1.39.47.145:30311" 

不確定哪個geth版本。

生成一些隨機 ID,例如使用隨機點 org,讓我們使用88259. 在第一台機器上,你像這樣執行客戶端(注意我還更改了網路埠和 datadir 以避免與主網路衝突):

geth --datadir "/home/user/.eth-private" --port 30259 --networkid 88259

這將在您的第一台機器上執行一個私有乙太坊網路的新實例。

I0621 10:19:02.655014 ethdb/database.go:82] Alloted 128MB cache and 1024 file handles to /home/user/.eth-private/chaindata
I0621 10:19:02.827145 ethdb/database.go:169] closed db:/home/user/.eth-private/chaindata
I0621 10:19:02.827243 cmd/utils/flags.go:601] WARNING: No etherbase set and no accounts found as default
I0621 10:19:02.827886 ethdb/database.go:82] Alloted 128MB cache and 1024 file handles to /home/user/.eth-private/chaindata
I0621 10:19:02.840042 ethdb/database.go:82] Alloted 16MB cache and 16 file handles to /home/user/.eth-private/dapp
I0621 10:19:02.841749 eth/backend.go:172] Protocol Versions: [63 62 61], Network Id: 88259
I0621 10:19:02.841907 eth/backend.go:201] Blockchain DB Version: 3
I0621 10:19:02.842241 core/blockchain.go:206] Last header: #0 [d4e56740…] TD=17179869184
I0621 10:19:02.842260 core/blockchain.go:207] Last block: #0 [d4e56740…] TD=17179869184
I0621 10:19:02.842271 core/blockchain.go:208] Fast block: #0 [d4e56740…] TD=17179869184
I0621 10:19:02.842952 p2p/server.go:313] Starting Server
I0621 10:19:04.844709 p2p/discover/udp.go:217] Listening, enode://6179e58bb512415a76e4169dd25ae5a171e34069660b233cf79dabd3581d8dd1221a7f3a5e5d64251aa7e8ac20eda5430e42eed161e68cb05d05e6c3cab68a6e@[::]:30259
I0621 10:19:04.845128 p2p/server.go:556] Listening on [::]:30259
I0621 10:19:04.848679 node/node.go:296] IPC endpoint opened: /home/user/.eth-private/geth.ipc

現在,您從第一個節點中提取 enode uri,並將 IP 替換為您的區域網路(LAN,或者如果節點是分佈式的,則使用公共 IP)的 ID,如下所示:

enode://6179e58bb512415a76e4169dd25ae5a171e34069660b233cf79dabd3581d8dd1221a7f3a5e5d64251aa7e8ac20eda5430e42eed161e68cb05d05e6c3cab68a6e@192.168.1.159:30259

現在,您可以將此節點作為引導節點傳遞給第二個和第三個節點,如下所示:

geth --datadir "/home/user/.eth-private" --port 30259 --networkid 88259 --bootnodes "enode://6179e58bb512415a76e4169dd25ae5a171e34069660b233cf79dabd3581d8dd1221a7f3a5e5d64251aa7e8ac20eda5430e42eed161e68cb05d05e6c3cab68a6e@192.168.1.159:30259"

請注意,所有客戶端上的網路 ID 必須相同。它將嘗試連接到您的第一個節點。

如果有多個節點在執行,還可以在 bootnodes 參數中添加更多節點,只需用逗號分隔即可。

要使節點對等,您需要兩個節點上的三個參數相同:

  • 隨機數
  • 網路 ID
  • 創世紀文件

之後使用執行命令提供的 enode 值 admin.nodeInfo 。在**{::}**的位置放置其他機器的 IP。希望它能解決您的問題。

引用自:https://ethereum.stackexchange.com/questions/6373