区块链-多机构对等部署

构建联盟链,基于generator实现多机构对等部署(重点针对不同情况的操作步骤)

委员会议定

        群组、机构、节点、创世区块机构

下载generator

## 前置准备
# 下载
cd ~/
git clone https://gitee.com/FISCO-BCOS/generator.git
# 安装
cd ~/generator && bash ./scripts/install.sh
./generator -h
# 获取节点二进制
./generator --download_fisco ./meta
# 检查二进制版本
./meta/fisco-bcos -v

初始化机构

# 初始化证书颁发机构
# cp -r ~/generator 

# 初始化机构A
cp -r ~/generator ~/generator-A

# 初始化机构B
cp -r ~/generator ~/generator-B

# 初始化机构C
cp -r ~/generator ~/generator-C

1 创建链,生成初始群组和初始机构

1群组2机构4节点

  1. 机构A
    1. 节点30301 群组1
    2. 节点30302 群组1
  2. 机构B
    1. 节点30303 群组1
    2. 节点30304 群组1

1.1 链证书

        证书颁发机构生成

## 证书颁发机构: 初始化链证书
cd ~/generator

# 证书颁发机构: 生成国密证书
./generator --generate_chain_certificate ./dir_chain_ca -g
# 证书颁发机构: 生成普通证书
./generator --generate_chain_certificate ./dir_chain_ca_normal

ls ./dir_chain_ca # gmca.crt  gmca.key 分别为 链证书、链私钥
ls ./dir_chain_ca_normal # ca.crt  ca.key 分别为 为链证书、链私钥

1.2 新机构(含节点)

        1.2.1 证书颁发机构 生成、发送机构证书

cd ~/generator

# 证书颁发机构: 生成机构A证书
./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyA -g
./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca_normal agencyA_normal

# 证书颁发机构: 发送链证书、机构证书、机构私钥至机构A
cp ./dir_agency_ca/agencyA/* ~/generator-A/meta/
cp ./dir_agency_ca/agencyA_normal/* ~/generator-A/meta/


# 证书颁发机构: 生成机构B证书
./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyB -g
./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca_normal agencyB_normal

# 证书颁发机构: 发送链证书、机构证书、机构私钥至机构B
cp ./dir_agency_ca/agencyB/* ~/generator-B/meta/
cp ./dir_agency_ca/agencyB_normal/* ~/generator-B/meta/

        1.2.2 机构 配置node_deployment.ini、生成节点证书和节点P2P端口地址文件

## 机构A:修改配置文件
cd ~/generator-A
# 机构A:配置文件内容
cat > ./conf/node_deployment.ini << EOF
[group]
group_id=1

[node0]
; host ip for the communication among peers.
; Please use your ssh login ip.
p2p_ip=127.0.0.1
; listen ip for the communication between sdk clients.
; This ip is the same as p2p_ip for physical host.
; But for virtual host e.g. vps servers, it is usually different from p2p_ip.
; You can check accessible addresses of your network card.
; Please see https://tecadmin.net/check-ip-address-ubuntu-18-04-desktop/
; for more instructions.
rpc_ip=127.0.0.1
channel_ip=0.0.0.0
p2p_listen_port=30300
channel_listen_port=20200
jsonrpc_listen_port=8545

[node1]
p2p_ip=127.0.0.1
rpc_ip=127.0.0.1
channel_ip=0.0.0.0
p2p_listen_port=30301

channel_listen_port=20201
jsonrpc_listen_port=8546
EOF

# 机构A:根据node_deployment.ini生成节点证书、节点P2P连接地址文件
./generator --generate_all_certificates ./agencyA_node_info -g
ls ./agencyA_node_info


## 机构B:修改配置文件
cd ~/generator-B
# 机构B:配置文件内容
cat > ./conf/node_deployment.ini << EOF
[group]
group_id=1

[node0]
; host ip for the communication among peers.
; Please use your ssh login ip.
p2p_ip=127.0.0.1
; listen ip for the communication between sdk clients.
; This ip is the same as p2p_ip for physical host.
; But for virtual host e.g. vps servers, it is usually different from p2p_ip.
; You can check accessible addresses of your network card.
; Please see https://tecadmin.net/check-ip-address-ubuntu-18-04-desktop/
; for more instructions.
rpc_ip=127.0.0.1
channel_ip=0.0.0.0
p2p_listen_port=30302
channel_listen_port=20202
jsonrpc_listen_port=8547

[node1]
p2p_ip=127.0.0.1
rpc_ip=127.0.0.1
channel_ip=0.0.0.0
p2p_listen_port=30303
channel_listen_port=20203
jsonrpc_listen_port=8548
EOF

# 机构B:根据node_deployment.ini生成节点证书、节点P2P连接地址文件
./generator --generate_all_certificates ./agencyB_node_info -g
ls ./agencyB_node_info

        1.2.3 机构 相互交换连接信息文件

# 机构A:将节点P2P连接地址文件发送至机构B
cd ~/generator-A
cp ./agencyA_node_info/peers.txt ~/generator-B/meta/peersA.txt

# 机构B:将节点P2P连接地址文件发送至机构A
cd ~/generator-B
cp ./agencyB_node_info/peers.txt ~/generator-A/meta/peersB.txt

        1.2.5 新群组

        1.2.5.1 委员会 选取一个机构生成群组创世块

这里选定 机构A

        1.2.5.2 生成创世区块的机构 收集其他机构节点的节点证书

# 机构B:发送节点证书至生成创世区块机构A
cd ~/generator-B
cp ./agencyB_node_info/gmcert*.crt ~/generator-A/meta/

        1.2.5.3 生成创世区块的机构 配置group_genesis.ini

# 机构A:配置文件内容
cd ~/generator-A
cat > ./conf/group_genesis.ini << EOF
[group]
group_id=1

[nodes]
node0=127.0.0.1:30300
node1=127.0.0.1:30301
node2=127.0.0.1:30302
node3=127.0.0.1:30303
EOF

        1.2.5.4 生成创世块的机构 生成群组创世区块

# 机构A:生成群组创世区块
cd ~/generator-A
./generator --create_group_genesis ./group -g

        1.2.5.5 生成创世区块的机构  将生成的创世块文件至其他机构

# 机构A:分发群组1创世区块至机构B
cd ~/generator-A
cp ./group/group.1.genesis ~/generator-B/meta

        1.2.6 机构 生成启动节点

# 机构A:生成所属节点
cd ~/generator-A
./generator --build_install_package ./meta/peersB.txt ./nodeA -g
ls ./nodeA

# 机构A:启动节点
bash ./nodeA/start_all.sh
ps -ef | grep fisco

## 机构B:生成所属节点
cd ~/generator-B
./generator --build_install_package ./meta/peersA.txt ./nodeB -g
bash ./nodeB/start_all.sh

##查看群组1节点运行状态
ps -ef | grep fisco
tail -f ~/generator-A/node*/node*/log/log*  | grep +++
tail -f ~/generator-B/node*/node*/log/log*  | grep +++

2 已有链创建新机构,加入已有群组

1群组3机构6节点

  1. 机构A
    1. 节点30301 群组1
    2. 节点30302 群组1
  2. 机构B
    1. 节点30303 群组1
    2. 节点30304 群组1
  3. 机构C
    1. 节点30305 群组1
    2. 节点30306 群组1

2.1 新机构

        2.1.1 证书颁发机构 生成、发送机构证书

## 机构A:修改配置文件
cd ~/generator-C
# 机构A:配置文件内容
cat > ./conf/node_deployment.ini << EOF
[group]
group_id=1
 
[node0]
; host ip for the communication among peers.
; Please use your ssh login ip.
p2p_ip=127.0.0.1
; listen ip for the communication between sdk clients.
; This ip is the same as p2p_ip for physical host.
; But for virtual host e.g. vps servers, it is usually different from p2p_ip.
; You can check accessible addresses of your network card.
; Please see https://tecadmin.net/check-ip-address-ubuntu-18-04-desktop/
; for more instructions.
rpc_ip=127.0.0.1
channel_ip=0.0.0.0
p2p_listen_port=30304
channel_listen_port=20204
jsonrpc_listen_port=8549
 
[node1]
p2p_ip=127.0.0.1
rpc_ip=127.0.0.1
channel_ip=0.0.0.0
p2p_listen_port=30305
channel_listen_port=20205
jsonrpc_listen_port=8550
EOF
# 机构C:根据node_deployment.ini生成节点证书、节点P2P连接地址文件
./generator --generate_all_certificates ./agencyC_node_info -g
ls ./agencyC_node_info
 

        2.1.2 机构 配置node_deployment.ini、生成节点证书和节点P2P端口地址文件

# 机构C:将节点P2P连接地址文件发送至机构A
cd ~/generator-C
cp ./agencyC_node_info/peers.txt ~/generator-A/meta/peersC.txt

# 机构C:将节点P2P连接地址文件发送至机构B
cd ~/generator-C
cp ./agencyC_node_info/peers.txt ~/generator-B/meta/peersC.txt



# 机构A:将节点P2P连接地址文件发送至机构C
cd ~/generator-A
cp ./agencyA_node_info/peers.txt ~/generator-C/meta/peersA.txt
 
# 机构B:将节点P2P连接地址文件发送至机构C
cd ~/generator-B
cp ./agencyB_node_info/peers.txt ~/generator-C/meta/peersB.txt
 

        2.1.3 机构 生成启动节点

cd ~/generator-C

# 机构C:合并A和B的
cat peersA.txt peersB.txt > peersAandB.txt

# 机构C:生成所属节点
./generator --build_install_package ./meta/peersAandB.txt ./nodeC -g
ls ./nodeC

# 机构C:启动节点
bash ./nodeC/start_all.sh
ps -ef | grep fisco

##查看群组1节点运行状态
ps -ef | grep fisco
tail -f ~/generator-C/node*/node*/log/log*  | grep +++

3 已有链创建新群组,已有机构加入群组

2群组2机构6节点

  1. 机构A
    1. 节点30301 群组1 群组2
    2. 节点30302 群组1 群组2
  2. 机构B
    1. 节点30303 群组1 群组2
    2. 节点30304 群组1 群组2
  3. 机构C
    1. 节点30305 群组1
    2. 节点30306 群组1

3.1 选定新群组机构

        3.1.1 委员会 选定新群组包含的机构

这里选定群组A 包含 机构A、机构B

3.2 新建组

        3.2.1 委员会 选取一个机构生成群组创世块

这里选定 机构B

        3.2.2 生成创世区块的机构 收集其他机构节点的节点证书

# 机构A:发送节点证书至生成创世区块机构B
cd ~/generator-A
cp ./agencyA_node_info/gmcert*.crt ~/generator-B/meta/

        3.2.3 生成创世区块的机构 配置group_genesis.ini

# 机构B:配置文件内容
cd ~/generator-B
cat > ./conf/group_genesis.ini << EOF
[group]
group_id=2

[nodes]
node0=127.0.0.1:30300
node1=127.0.0.1:30301
node2=127.0.0.1:30302
node3=127.0.0.1:30303
EOF

        3.2.4 生成创世块的机构 生成群组创世区块

# 机构A:生成群组创世区块
cd ~/generator-B
./generator --create_group_genesis ./group -g

        3.2.5 生成创世区块的机构  将生成的创世块文件至其他机构

# 机构B:分发群组1创世区块至机构A
cd ~/generator-B
cp ./group/group.2.genesis ~/generator-A/meta

3.3 重启节点

# 机构A为现有节点初始化群组2
cd ~/generator-A
# 添加群组2配置文件至已有节点
./generator --add_group ./meta/group.2.genesis ./nodeA
# 重启机构A节点
bash ./nodeA/stop_all.sh
bash ./nodeA/start_all.sh


# 机构B为现有节点初始化群组2
cd ~/generator-B
# 添加群组2配置文件至已有节点
./generator --add_group ./meta/group.2.genesis ./nodeB
# 重启机构B节点
bash ./nodeB/stop_all.sh
bash ./nodeB/start_all.sh


## 查看群组2节点运行状态
ps -ef | grep fisco
tail -f ~/generator-A/node*/node*/log/log*  | grep +++
tail -f ~/generator-B/node*/node*/log/log*  | grep +++

4 已有链已有机构加入已有群组

2群组2机构4节点

  1. 机构A
    1. 节点30301 群组1 群组2
    2. 节点30302 群组1 群组2
  2. 机构B
    1. 节点30303 群组1 群组2
    2. 节点30304 群组1 群组2
  3. 机构C
    1. 节点30305 群组1 群组2
    2. 节点30306 群组1 群组2

5 已有链已有机构创建新节点

2群组2机构4节点

  1. 机构A
    1. 节点30301 群组1 群组2
    2. 节点30302 群组1 群组2
    3. 节点30306 群组1 群组2
  2. 机构B
    1. 节点30303 群组1 群组2
    2. 节点30304 群组1 群组2
  3. 机构C
    1. 节点30305 群组1 群组2
    2. 节点30306 群组1 群组2

......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值