以太坊搭建多节点和单个节点的思路是一样的,先启动各个单节点,然后通过节点发现的方式将多个节点连接起来,
实现对多个节点的数据同步和后续操作;
我们以搭建两个节点并组成一个私有链网络,将两个节点分别称为node1和node2;
1 创建节点目录
1 2 3 4
| # 创建两个节点目录 cd private-chain mkdir node1 mkdir node2
|
2 分别初始化节点
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| { "config": { "chainId": 123, "homesteadBlock": 0, "eip150Block": 0, "eip155Block": 0, "eip158Block": 0 }, "alloc" : {}, "coinbase" : "0x0000000000000000000000000000000000000000", "difficulty" : "0x2", "extraData" : "", "gasLimit" : "0xffffffff", "nonce" : "0x0000000000000042", "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "timestamp" : "0x00" }
|
1 2 3
| # 初始化节点 geth --datadir ./node1/data init genesis.json // 初始化node1节点 geth --datadir ./node2/data init genesis.json // 初始化node2节点
|
3 启动节点
1 2 3 4 5 6 7 8 9 10 11
| # node1_start.sh
#!/bin/bash geth --datadir ./node1/data --networkid 8888 --nodiscover \ --port 30303 \ --http.port 8545 \ --http --http.addr 0.0.0.0 --http.vhosts "*" \ --http.api "db,net,eth,web3,personal,debug" \ --http.corsdomain "*" \ --rpc.enabledeprecatedpersonal \ --snapshot --allow-insecure-unlock console 2>> geth.log
|
1 2 3 4 5 6 7 8 9 10 11
| # node2_start.sh
#!/bin/bash geth --datadir ./node2/data --networkid 8888 --nodiscover --authrpc.port 8552 \ --port 30304 \ --http.port 8546 \ --http --http.addr 0.0.0.0 --http.vhosts "*" \ --http.api "db,net,eth,web3,personal,debug" \ --http.corsdomain "*" \ --rpc.enabledeprecatedpersonal \ --snapshot --allow-insecure-unlock console 2>> geth.log
|
4 查看节点信息
1 2 3 4
| # 在node2节点窗口查看节点信息 > admin.nodeInfo.enode "enode://2f08c93824c4b68f8755867db1582281f7ba233b623f9fe4088204cabb3256d3977d318d6b9eda38d18a7c410cb747b869ab95c9bbdcd3343af75c7e786f12dd@127.0.0.1:30304?discport=0"
|
5 手动添加节点
1 2 3 4 5 6 7
| # 在node1节点窗口添加节点2 > admin.addPeer("enode://2f08c93824c4b68f8755867db1582281f7ba233b623f9fe4088204cabb3256d3977d318d6b9eda38d18a7c410cb747b869ab95c9bbdcd3343af75c7e786f12dd@127.0.0.1:30304?discport=0") true
# 查看当前一共连接了几个节点数 > web3.net.peerCount 1
|