主页 > imtoken钱包下载2.0版本 > 从源码教你如何搭建多节点以太坊私链(四)部署和连接多个节点
从源码教你如何搭建多节点以太坊私链(四)部署和连接多个节点
经过【教你如何从源码搭建多节点以太坊私链(二)搭建第一个节点])的操作,你就基本熟悉了如何搭建节点服务器了。在此基础上构建多节点并不复杂,只需按照以下步骤进行即可。
1. 使用相同的创世块文件 genesis.json
创世块 genesis.json文件内容如下:
{
"config": {
"chainId": 100,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x400",
"extraData" : "",
"gasLimit" : "0x2fefd8",
"nonce" : "0x00",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00",
"alloc": { }
}
2.用创世块json块初始化节点
执行以下命令初始化每个节点。
geth --datadir /data/00 init genesis.json
3.启动每个节点
执行以下命令启动每个节点。控制台参数表示启动后,启用命令行。重要:节点ID必须与创世文件中的chainId相同
#带geth命令行的方式启动
geth --networkid 100 --datadir /data/00 --rpc --rpcapi personal,db,eth,net,web3 console 2>>geth.log
#后台运行方式启动
nohup geth --networkid 100 --datadir /data/00 --rpc --rpcapi personal,db,eth,net,web3 &
4.获取节点信息
#接入geth控制台
geth attach ipc:/data/00/geth.ipc
# 获取节点信息
admin.nodeInfo.enode
节点信息如下:
格式如下:"ennode://<节点公钥>@[::]:
5.添加节点信息
添加节点信息有两种方式。 1.通过命令行添加。
#接入geth控制台
admin.addPeer("ennode://< node public key >@[node ip address]:?discport=")
根据实际操作经验,注意开启挖矿,否则无法成功添加节点信息。
通过配置文件添加。在这种情况下,geth 需要重新启动。在data/geth目录下,创建静态节点文件static-nodes.json一个节点放多少个以太坊地址好,写入各个节点的节点信息。
[
"enode://< node1 public key >@:?discport=" ,
"enode://< node2 public key >@:?discport=" ,
"enode://< node3 public key >@:?discport=" ,
]
然后启动geth
geth --networkid 100 --datadir /data/00 --rpc --rpcapi personal,db,eth,net,web3 console 2>>geth.log
6.节点确认
在每个节点上测试:
#已连接的其他节点的个数
net.peerCount
#返回其他节点的信息
admin.peers
然后从一个节点创建账户,开始挖矿、转账等操作,其他节点会自动同步区块信息。
7个自己的多节点私有链搭建总结
至此,大家应该对以太坊私链的搭建有了比较完整的了解。连接过程有几点需要注意:
(1) 两个节点必须加入同一个私链,即两个节点初始化的创世块必须完全相同。启动节点时使用相同的networkid。还要注意节点之间通信注意防火墙等问题一个节点放多少个以太坊地址好,如果端口被阻塞,肯定连接不上。如果租用云服务器,检查安全组中是否有对应端口(rpc端口如8545,节点互联端口如3030 3)已打开。
(2)A节点在添加节点B的enode字符串时,需要手动将enode字符串中的ip地址设置为节点B的IP地址。
(3)加入同一条私链后,区块信息会完全同步,所有交易也是已知的。但是不同节点创建的账户不能互相看到。但是可以查看他们的余额,并且转账交易没有问题。