FISCO-BCOS环境搭建(四)多节点组网

第六章 多节点组网

FISCO BCOS区块链中的节点,只有被注册过,表示加入了网络,才能正常的运行。

多节点组网依赖系统合约,在进行多节点组网前,请确认:

(1)系统合约已经被正确的部署。

(2)所有节点的config.json的systemproxyaddress字段已经配置了相应的系统代理合约地址。

(3)节点在配置了systemproxyaddress字段后,已经重启使得系统合约生效。

(4)/mydata/FISCO-BCOS/systemcontractv2/下的config.js已经正确的配置了节点的RPC端口。

6.1 注册节点

所有的节点注册流程都相同。在注册节点时,需先注册创世节点,再注册普通节点

6.1.1 编写注册配置文件

以注册创世节点为例。

cd /mydata/FISCO-BCOS/systemcontractv2/
vim node1.json

内容需要与节点config.json中NodeextraInfo字段的内容对应。若在不同机器上组网时,ip填写的是外网ip。编写好的注册配置文件如下:

{    "id":"24b98c6532ff05c2e9e637b3362ee4328c228fb4f6262c1c751f51952012cd68da2cbd8655de5072e49b950a503326942297cfaa9ca919b369be4359b4dccd56",
    "ip":"127.0.0.1",
    "port":30303,
    "category":1,
    "desc":"node1",
    "CAhash":"",
    "agencyinfo":"node1",
    "idx":0
}

6.1.2 注册

在注册前,请确认已注册的所有节点,都已经启动。

用编写好的注册配置文件(node1.json)注册节点。(创世节点在被注册时,应启动起来)

babel-node tool.js NodeAction registerNode node1.json

可看到注册信息

RPC=http://127.0.0.1:8545
Ouputpath=./output/
{ HttpProvider: 'http://127.0.0.1:8545',
  Ouputpath: './output/',
  privKey: 'bcec428d5205abe0f0cc8a734083908d9eb8563e31f943d760786edf42ad67dd',
  account: '0x64fa644d2a694681bd6addd6c5e36cccd8dcdde3' }
Soc File :NodeAction
Func :registerNode
系统合约地址0x919868496524eedc26dbb81915fa1547a20f8998
node.json=node1.json
NodeAction合约地址0xa40c864c28ee8b07dc2eeab4711e3161fc87e1e2
发送交易成功: 0xd70d129a60f9ff355acb13acd7769e99442cc72fe0e1e8f2b49b64a96072b3d7

6.1.3 查看入网情况

查看节点是否已经在节点列表中

babel-node tool.js NodeAction all

可看到被注册的节点信息,节点已经加入了网络

系统合约地址0x919868496524eedc26dbb81915fa1547a20f8998
NodeAction合约地址0xa40c864c28ee8b07dc2eeab4711e3161fc87e1e2
NodeIdsLength= 1
----------node 0---------
id=24b98c6532ff05c2e9e637b3362ee4328c228fb4f6262c1c751f51952012cd68da2cbd8655de5072e49b950a503326942297cfaa9ca919b369be4359b4dccd56
ip=127.0.0.1
port=30303
category=1
desc=node1
CAhash=
agencyinfo=node1
blocknumber=25
Idx=0

6.1.4 注册更多的节点

在注册更多的节点前,请确认创世节点是第一个被注册的,并且网络中所有被注册过的节点都已经启动。

重复上述过程,注册更多节点。待注册的普通节点先不要启动。

vim node2.json #修改内容与config.json内容对应
babel-node tool.js NodeAction registerNode node2.json
cd /mydata/nodedata-2/
./start.sh #将被注册的节点启动起来,此时节点已经被注册,可刷出打包信息

再次查看入网情况:

cd /mydata/FISCO-BCOS/systemcontractv2/
babel-node tool.js NodeAction all

可看到输出了节点信息(node1),节点加入网络

系统合约地址0x919868496524eedc26dbb81915fa1547a20f8998
NodeAction合约地址0xa40c864c28ee8b07dc2eeab4711e3161fc87e1e2
NodeIdsLength= 2
----------node 0---------
id=24b98c6532ff05c2e9e637b3362ee4328c228fb4f6262c1c751f51952012cd68da2cbd8655de5072e49b950a503326942297cfaa9ca919b369be4359b4dccd56
ip=127.0.0.1
port=30303
category=1
desc=node1
CAhash=
agencyinfo=node1
blocknumber=25
Idx=0
----------node 1---------
id=b5adf6440bb0fe7c337eccfda9259985ee42c1c94e0d357e813f905b6c0fa2049d45170b78367649dd0b8b5954ee919bf50c1398a373ca777e6329bd0c4b82e8
ip=127.0.0.1
port=30403
category=1
desc=node2
CAhash=
agencyinfo=node2
blocknumber=26
Idx=1

6.2 查看节点连接

执行脚本

cd /mydata/FISCO-BCOS/systemcontractv2/
babel-node monitor.js

可看到不断刷出连接信息和块高。已连接节点数表示的是被查询的节点与其它节点连接的个数,即被注册的节点总数减1。此例子中,网络中有2个节点。被查询的节点是创世节点,与创世节点连接的节点只有一个,所以已连接节点数为1。

已连接节点数:1
...........Node 0.........
NodeId:b5adf6440bb0fe7c337eccfda9259985ee42c1c94e0d357e813f905b6c0fa2049d45170b78367649dd0b8b5954ee919bf50c1398a373ca777e6329bd0c4b82e8
Host:127.0.0.1:30403

当前块高26
--------------------------------------------------------------

6.3 节点退出网络

要让某节点退出网络,需执行以下脚本。执行时,指定相应节点的注册配置文件。此处让node2退出为例。

babel-node tool.js NodeAction cancelNode node2.json

执行后有如下输出:

RPC=http://127.0.0.1:8545
Ouputpath=./output/
{ HttpProvider: 'http://127.0.0.1:8545',
  Ouputpath: './output/',
  privKey: 'bcec428d5205abe0f0cc8a734083908d9eb8563e31f943d760786edf42ad67dd',
  account: '0x64fa644d2a694681bd6addd6c5e36cccd8dcdde3' }
Soc File :NodeAction
Func :cancelNode
系统合约地址0x919868496524eedc26dbb81915fa1547a20f8998
node.json=node2.json
NodeAction合约地址0xa40c864c28ee8b07dc2eeab4711e3161fc87e1e2
发送交易成功: 0xe3544a63bbcbd1234e48dfa8f228684617a993addfadefd0aeefe39b517354ab

查看节点连接,看不到相应节点的信息,表示节点已经退出了网络。

babel-node tool.js NodeAction all

你可能感兴趣的:(BCOS)