泰岳链节点搭建
今天尝试搭建一个泰岳链联盟链(4节点),本地搭建,先在家目录下建立一个目录nodes,在该目录下建立4个子目录node1~node4,并分别在节点目录里建立相应的数据目录(data).
开始申请4个根证书,(证书申请可以使用openssl工具,泰岳链文档中有申请方法),申请完证书后,还需要为4个节点分别指定一个nodekey,由于是一个全新的联盟链,所以需要重新构建创世区块及bootnode节点,以方便节点启动后能够快速的发现对方。
最后的目录结构如图:
nodekey是一个节点连接的身份标识,通常它以一个私钥对应的公钥来表示,现在对应4个节点我们需要生成4组nodekey相关的私钥并生成节点对应的enode
。
./genkey --sum 4 generate
./taiyue endoe privkey
privkey: 表示下方生成的私钥
privkey: c6fc8ff991e0e48ae91d4af0ac7cb757c1ac0ac98d810764b6a86fd6fc9ec3a1
pubkey: 04f955a64a54f93bfb1b79a5f6bc899e59b320a1c520fdc01d2df821076f746d448fcd00ff14f8ab9c10aef3dac567c6e9ab2f05ac8e82bda2edaf8cad5ef8a449
enode://f955a64a54f93bfb1b79a5f6bc899e59b320a1c520fdc01d2df821076f746d448fcd00ff14f8ab9c10aef3dac567c6e9ab2f05ac8e82bda2edaf8cad5ef8a449@192.168.0.101:30313
-------------------------------------------------------
privkey: 7059e585a85f35408b1207ca6c5a310ae8bcd4654170fdb1c7b3a5e9ebb5a04f
pubkey: 0463888e7a3ee5c389bbebe335626bcff4056827b0506683a11e2ca269491976c316c948198bf1a1b338bf79afa163c71e7779e89b001b2f299d162934c74cc67d
enode://63888e7a3ee5c389bbebe335626bcff4056827b0506683a11e2ca269491976c316c948198bf1a1b338bf79afa163c71e7779e89b001b2f299d162934c74cc67d@192.168.0.102:30313
-------------------------------------------------------
privkey: 9e948e4ae44fcab9071db5c317201d4cf1c2608a8b6b260dc8d931cdb322529e
pubkey: 0445ded3363b0afafc760e166c07e3b57e7c0de2bb72149ce6eb37f3fad59a79042d02c46079983807fe068eda867efa8f2698872c255227e075e68757d82c2aab
enode://45ded3363b0afafc760e166c07e3b57e7c0de2bb72149ce6eb37f3fad59a79042d02c46079983807fe068eda867efa8f2698872c255227e075e68757d82c2aab@192.168.0.103:30313
-------------------------------------------------------
privkey: ead5dc9a01c3875b3000779f0bfe9d23ce2ee991088fd90328346a4d1055918b
pubkey: 0468b1f3424e09f2665871ba46618b5a38cbb1ed1fd7f60c0b183b99d9e503017c7b950840d57c66af6936e0ae801d6efdd84dcffc142a35007f51056918bf2c5a
enode://68b1f3424e09f2665871ba46618b5a38cbb1ed1fd7f60c0b183b99d9e503017c7b950840d57c66af6936e0ae801d6efdd84dcffc142a35007f51056918bf2c5a@192.168.0.104:30313
-------------------------------------------------------
在构造好enode后,开始构造genesis,使用提供的genesis.json模板,简单起见,我们只改committe字段其他不改。将之前生成的4个公钥填在publickey字段。
"committee":[
{
"address": "0x76ea2f3a002431fede1141b660dbb75c26ba6d97",
"publickey": "0x04f955a64a54f93bfb1b79a5f6bc899e59b320a1c520fdc01d2df821076f746d448fcd00ff14f8ab9c10aef3dac567c6e9ab2f05ac8e82bda2edaf8cad5ef8a449"
},
{
"address": "0x831151b7eb8e650dc442cd623fbc6ae20279df85",
"publickey": "0x0463888e7a3ee5c389bbebe335626bcff4056827b0506683a11e2ca269491976c316c948198bf1a1b338bf79afa163c71e7779e89b001b2f299d162934c74cc67d"
},{
"address": "0x1074f7deccf8c66efcd0106e034d3356b7db3f2c",
"publickey": "0x0445ded3363b0afafc760e166c07e3b57e7c0de2bb72149ce6eb37f3fad59a79042d02c46079983807fe068eda867efa8f2698872c255227e075e68757d82c2aab"
},{
"address": "0xd985e9871d1be109af5a7f6407b1d6b686901fff",
"publickey": "0x0468b1f3424e09f2665871ba46618b5a38cbb1ed1fd7f60c0b183b99d9e503017c7b950840d57c66af6936e0ae801d6efdd84dcffc142a35007f51056918bf2c5a"
}
]
构建好genesis.json后,可以开始创建创世区块了。
./taiyue --datadir “./nodes/node1/data” init genesis.json “./certlist”
注: ./certlist是之前生的4个CA证书的目录,生成后将data目录拷贝node2,node3,node4目录。
生成创世区块后,开始分别配置4个节点的配置文件,分别使用config.toml模板文件。
- [taiyue]
CommitteeKey = "0xc6fc8ff991e0e48ae91d4af0ac7cb757c1ac0ac98d810764b6a86fd6fc9ec3a1"
Host = "192.168.0.101"
Port = 40301
StandbyPort = 40311
> 注: 4节点分别配置之前申请的4组私钥及ip地址,端口分别用{ [40301,40311], [40302,40312], [40303,40313], [40304,40314]}
- [node]
DataDir = "./nodes/node1/data"
HTTPHost = "192.168.0.101"
HTTPPort = 40401
> 注:DataDir配置之前的数据目录,HTTPHost 配各自的IP,端口[40401,40402,40403,40404]
+[Node.P2P]
ListenAddr = "192.168.0.101:30313" # 节点相应的IP
EnableMsgEvents = false
P2PNodeCertFile = "./nodes/node1/root1.pem" # 节点相应证书路径
P2PKey = "0xc6fc8ff991e0e48ae91d4af0ac7cb757c1ac0ac98d810764b6a86fd6fc9ec3a1" #对应的私钥
BootstrapNodes = ["enode://f955a64a54f93bfb1b79a5f6bc899e59b320a1c520fdc01d2df821076f746d448fcd00ff14f8ab9c10aef3dac567c6e9ab2f05ac8e82bda2edaf8cad5ef8a449@192.168.0.101:30313",
"enode://63888e7a3ee5c389bbebe335626bcff4056827b0506683a11e2ca269491976c316c948198bf1a1b338bf79afa163c71e7779e89b001b2f299d162934c74cc67d@192.168.0.102:30313",
"enode://45ded3363b0afafc760e166c07e3b57e7c0de2bb72149ce6eb37f3fad59a79042d02c46079983807fe068eda867efa8f2698872c255227e075e68757d82c2aab@192.168.0.103:30313",
"enode://68b1f3424e09f2665871ba46618b5a38cbb1ed1fd7f60c0b183b99d9e503017c7b950840d57c66af6936e0ae801d6efdd84dcffc142a35007f51056918bf2c5a@192.168.0.104:30313"]
将配置好的config.toml拷贝相应的目录,./nodes/node1/config.toml
至此我们已经做完启动前的所有准备工作,现在可以依次启动服务了。
taiyue --config "./nodes/node1/config.toml