系统合约是 FISCO BCOS 区块链的重要设计思路之一,也是控制网络节点加入和退出的重要方式,每条区块链仅需部署一次系统合约。系统合约的详细介绍,请参看附录:11.7 系统合约介绍
切换到部署系统合约的目录下
cd /mydata/FISCO-BCOS/systemcontractv2
安装依赖环境
cnpm install
设置区块链节点RPC端口
vim ../web3lib/config.js
仅需将proxy指向区块链节点的RPC端口即可。RPC端口在节点的config.json中查看(参考:2.5.2 配置config.json(节点配置文件))。
var proxy="http://127.0.0.1:8545";
直接运行deploy.js部署系统合约。注意,此deploy.js与tool目录的是不同的两个文件。
babel-node deploy.js
部署成功,输出合约路由表。
RPC=http://127.0.0.1:8545
Ouputpath=./output/
SystemProxy合约地址 0x919868496524eedc26dbb81915fa1547a20f8998 # <-------------很重要
TransactionFilterChain合约地址 0x23df89a2893120f686a4aa03b41acf6836d11e5d
AuthorityFilter合约地址 0x4437f8c9cd1e6a3e8ec9c3460c4bc209acdca052
发送交易成功: 0xc173c4e910e1a38d2debbb7e29bd3962e8806e5855baf6104bd20c5ab826c98d
发送交易成功: 0xdcc57fc04867cef0f9499c1f03d22884a4a5e292296f98e3367b9307767feefa
AuthorityFilter版本号1.0
Group合约地址 0x61dba250334e0fd5804c71e7cbe79eabecef8abe
CAAction合约地址 0x60d4ee5c461677840ab3552a6845fdf7db4a5317
NodeAction合约地址 0xa40c864c28ee8b07dc2eeab4711e3161fc87e1e2
ConfigAction合约地址 0xfcd14ed03e6d94ca127d557a1883dd042a81ea11
FileInfoManager合约地址 0x73479ed8162e198b9627b962eb4aae7098bdc770
FileServerManager合约地址 0x1406a0c559995562fc77bf2a214a2dcfab4f6b2b
ContractAbiMgr合约地址 0x9216757a91607668cf8a7a38f8ae56206a6e9f6b
#......省略若干行...........
注册FileServerManager.....
发送交易成功: 0xe6b7971a727248ed7f120edcc7314129ced70c9ab546038feff6c372c68a9cc3
合约部署完成 系统代理合约:0x919868496524eedc26dbb81915fa1547a20f8998
-----------------系统路由表----------------------
0 )TransactionFilterChain=>0x23df89a2893120f686a4aa03b41acf6836d11e5d,false,18
AuthorityFilter=>1.0,0x4437f8c9cd1e6a3e8ec9c3460c4bc209acdca052
1 )ConfigAction=>0xfcd14ed03e6d94ca127d557a1883dd042a81ea11,false,19
2 )NodeAction=>0xa40c864c28ee8b07dc2eeab4711e3161fc87e1e2,false,20
3 )CAAction=>0x60d4ee5c461677840ab3552a6845fdf7db4a5317,false,21
4 )ContractAbiMgr=>0x9216757a91607668cf8a7a38f8ae56206a6e9f6b,false,22
5 )FileInfoManager=>0x73479ed8162e198b9627b962eb4aae7098bdc770,false,23
6 )FileServerManager=>0x1406a0c559995562fc77bf2a214a2dcfab4f6b2b,false,24
上述输出内容中,重要的是系统代理合约地址,即SystemProxy合约地址。如:
SystemProxy合约地址 0x919868496524eedc26dbb81915fa1547a20f8998
系统代理合约,是所有系统合约的路由,通过配置系统代理合约地址(SystemProxy),才能正确调用系统合约。各个区块链节点都应配置系统代理合约地址,才能正确调用系统合约。
修改所有区块链节点的config.json。将systemproxyaddress字段配置为,上述步骤输出的SystemProxy合约地址配置。
vim /mydata/nodedata-1/config.json
配置后,config.json中的systemproxyaddress字段如下:
"systemproxyaddress":"0x919868496524eedc26dbb81915fa1547a20f8998",
重启被配置的节点:
cd /mydata/nodedata-1/
chmod +x *.sh
./stop.sh
./start.sh #执行此步骤后不断刷出打包信息,表明重启成功
自此,系统合约生效,为配置多个节点的区块链做好了准备。系统合约的详细介绍,请参看附录:11.7 系统合约介绍