Skip to content

搭建私有链开发环境

linj edited this page Nov 23, 2022 · 1 revision

搭建私有链开发环境

私有链,也称专有链,节点的写入权限归某组织内部控制,读取权限和可视需求可选择性的公开。

应用场景

私链采用raft共识,节点数配置一般为3,5,7等奇数个。区别于联盟链,私有链之前的区块同步采用主从同步的方式,更偏中心化一些,常用于对隐私保障和监管控制有更高要求的企业和集团内部场景。 本文介绍快速搭建一个包含3个节点的私有链开发环境,需要提前准备3台服务器。

下载软件包

  1. 下载多节点私有链集群软件包: 资源下载
  2. 在其中一台节点服务器上解压软件包到任意目录。
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文件中的错误信息。

Clone this wiki locally