-
Notifications
You must be signed in to change notification settings - Fork 256
搭建私有链开发环境
linj edited this page Nov 23, 2022
·
1 revision
私有链,也称专有链,节点的写入权限归某组织内部控制,读取权限和可视需求可选择性的公开。
私链采用raft共识,节点数配置一般为3,5,7等奇数个。区别于联盟链,私有链之前的区块同步采用主从同步的方式,更偏中心化一些,常用于对隐私保障和监管控制有更高要求的企业和集团内部场景。 本文介绍快速搭建一个包含3个节点的私有链开发环境,需要提前准备3台服务器。
- 下载多节点私有链集群软件包: 资源下载
- 在其中一台节点服务器上解压软件包到任意目录。
tar -zxvf chain33_raft_0370237.tar.gz
软件包包含以下文件:
chain33 -- chain33节点程序
chain33-cli -- chain33节点命令行工具
chain33.raft.toml -- chain33主链配置文件
genconfig.sh -- 节点目录生成工具
1.在准备的私有链其中一台节点服务器中使用工具生成3台服务器对应的节点目录。
假设3台服务器的ip分别为10.0.0.1
, 10.0.0.02
, 10.0.0.3
./genconfig.sh "10.0.0.1,10.0.0.2,10.0.0.3"
2.将生成的节点目录,分别发送到对应的节点服务器。
#将10.0.0.2文件发送到IP为10.0.0.2的节点服务器指定目录中,如root目录。
scp -r ./10.0.0.2 [email protected]:/root
#需要输入节点服务器的登录密码。文件发送需要一定时间,请耐心等待。
[email protected]'s password:
chain33 66% 50MB 129.2KB/s 03:21 ETA
1.登录各个服务器,切换至对应的节点目录下执行启动命令。
nohup ./chain33 -f chain33.raft.toml >/dev/null 2>&1 &
2.执行命令,查看进程。
ps -ef | grep -v grep | grep chain33
3.执行命令,查询节点同步状态。
./chain33-cli net is_sync
返回结果为true则说明运行成功。
4.执行命令,查询p2p节点信息。
./chain33-cli net peer
返回所有peer节点信息。
"peers": [
{
"addr": "172.0.10.2",
"port": 13802,
"name": "03a237a51519e0c094ceb01fc3ae08f8907ec3e7276bce207bfcb59930bae166c1",
"mempoolSize": 0,
"self": false,
"header": {
"version": 0,
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"txHash": "0x22db70a26130f2fe4758fd65bf016949c1c46f5642b4a556f8a0ff7a41350898",
"stateHash": "0xc34a7713273f1ac2256355c754b6c8ed9b9c726b84d16866ccaa4b7df29d7cc8",
"height": 0,
"blockTime": 1514533394,
"txCount": 1,
"hash": "0xc8799befacd9709a5f4dfa68d6fd53a37ccce83352997a132adfed7f46747757",
"difficulty": 0
}
},
{
"addr": "172.0.10.3",
"port": 13802,
"name": "02d3f515ff59216cb7ccfbed29c1f63346c3e75c7d9eb77387cf8a5d49c2ca1f1a",
"mempoolSize": 0,
"self": false,
"header": {
"version": 0,
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"txHash": "0x22db70a26130f2fe4758fd65bf016949c1c46f5642b4a556f8a0ff7a41350898",
"stateHash": "0xc34a7713273f1ac2256355c754b6c8ed9b9c726b84d16866ccaa4b7df29d7cc8",
"height": 0,
"blockTime": 1514533394,
"txCount": 1,
"hash": "0xc8799befacd9709a5f4dfa68d6fd53a37ccce83352997a132adfed7f46747757",
"difficulty": 0
}
},
{
"addr": "172.0.10.2",
"port": 13802,
"name": "02d6a5442db7adcb455e100643525bf14ccdc4f726f0871553646fd1f50fafe5d7",
"mempoolSize": 0,
"self": true,
"header": {
"version": 0,
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"txHash": "0x22db70a26130f2fe4758fd65bf016949c1c46f5642b4a556f8a0ff7a41350898",
"stateHash": "0xc34a7713273f1ac2256355c754b6c8ed9b9c726b84d16866ccaa4b7df29d7cc8",
"height": 0,
"blockTime": 1514533394,
"txCount": 1,
"hash": "0xc8799befacd9709a5f4dfa68d6fd53a37ccce83352997a132adfed7f46747757",
"difficulty": 0
}
}
]
}
如果执行出错,请检查logs/chain33.log
文件中的错误信息。
hello world