Go-Ethereum
從乙太坊中的終端連接不同網路上不同機器上的 2 個節點
從乙太坊的終端連接不同網路上不同機器上的 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://5675641adc6106447d9741c48ce382aca7becddd6da99881e8c98ef26f73bf4a63252fbe5ec29ddec6960cb78c7d69d39c181c6ca83e38d39670be6742f76d94@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。希望它能解決您的問題。