调用系统合约

文档目标

web3sdk提供了系统合约管理工具,本文档主要介绍这些管理工具,系统合约介绍参考 FISCO BCOS系统合约介绍

系统合约简单介绍

系统合约 详细说明
SystemProxy 系统合约代理合约
TransactionFilterChain 设置transaction过滤器
ConfigAction 设置/获取区块链系统参数
ConsensusControlMg 联盟控制合约
CAAction
证书列表黑名单管理:
包括将证书加入黑名单列表,将证书从黑名单列表删除,获取证书黑名单列表功能
ContractAbiMgr ABI相关合约

系统合约代理合约SystemProxy

SystemProxy

功能
遍历系统代理合约路由表,输出所有系统合约地址
使用方法:
#进入程序web3sdk所在目录(设web3sdk代码位于~/mydata/目录)
$ cd ~/mydata/web3sdk/dist/bin
$ chmod a+x web3sdk
$ ./web3sdk SystemProxy #调用SystemProxy

节点管理合约NodeAction

NodeAction

节点加入记账者列表

./web3sdk NodeAction registerNode ${node_json_path} 命令将${node_json_path} (${node_json_path}是节点配置文件相对于dist/conf的路径) 指定的节点加入到FISCO BCOS区块链网络中:

#进入bin目录(设web3sdk代码位于~/mydata/目录)
$ cd ~/mydata/web3sdk/dist/bin
$ chmod a+x web3sdk
$ ./web3sdk NodeAction registerNode ${node_json_path}
节点配置文件主要包括如下配置项:
配置项 详细说明
id 节点node id
ip 节点IP
port 节点P2P连接端口
desc 节点描述
agencyinfo 节点所属机构信息
idx 节点序号,按照加入顺序排序

一个简单的节点配置文件node.json示例如下:

{
   "id":"2cd7a7cadf8533e5859e1de0e2ae830017a25c3295fb09bad3fae4cdf2edacc9324a4fd89cfee174b21546f93397e5ee0fb4969ec5eba654dcc9e4b8ae39a878",
   "ip":"127.0.0.1",
   "port":30501,
   "desc":"node1",
   "CAhash":"",
   "agencyinfo":"node1",
   "idx":0
}
节点退出记账者列表

./web3sdk NodeAction cancelNode ${node_json_path} 将${node_json_path}指定的节点从FISCO BCOS区块链网络中退出(${node_json_path}是节点配置文件相对于~/mydata/web3sdk/dist/conf的路径,节点配置文件说明同上):

#进入bin目录(设web3sdk代码位于~/mydata/目录)
$ cd ~/mydata/web3sdk/dist/bin
$ chmod a+x web3sdk
$ ./web3sdk NodeAction cancelNode ${node_json_path}
显示记账列表信息

./web3sdk NodeAction all 查询区块链网络中所有记账节点信息:

#进入bin目录(设web3sdk代码位于~/mydata/目录)
$ cd ~/mydata/web3sdk/dist/bin
$ chmod a+x web3sdk
$ ./web3sdk NodeAction all
# 输出的记账节点信息如下:
===================================================================
=====INIT ECDSA KEYPAIR From private key===
NodeIdsLength= 1
----------node 0---------
id=28f815c7222118adaca6dfdefdda76906a491ae4ef9de4d311f3f23bd2371ee9d15e2f26646d1641bf6391b1c1489c8a1708e35012903f041d1841f58c63e674
nodeA
agencyA
E2746FDF0B29F8A8     

节点证书管理合约CAAction

CAAction

将指定节点证书加入黑名单证书列表

./web3sdk CAAction add ${node_ca_path} 将${node_ca_path}(${node_ca_path}是节点配置文件相对于dist/conf的路径)指定的节点证书信息添加到黑名单证书列表,加入成功后,其他节点将拒绝与此节点连接:

#进入bin目录(设web3sdk代码位于~/mydata/目录)
$ cd ~/mydata/web3sdk/dist/bin
$ chmod a+x web3sdk
$ ./web3sdk CAAction add ${node_ca_path}
从黑名单证书列表中删除指定节点证书信息

./web3sdk CAAction remove ${node_ca_path} 将${node_ca_path}(${node_ca_path}是节点配置文件相对于dist/conf的路径)指定的节点证书信息从黑名单证书列表中删除,其他节点恢复与该节点的连接:

#进入bin目录(设web3sdk代码位于~/mydata/目录)
$ cd ~/mydata/web3sdk/dist/bin
$ chmod a+x web3sdk
$ ./web3sdk CAAction remove ${node_ca_path}
显示区块链黑名单证书列表信息

./web3sdk CAAction all 获取记录在系统合约CAAction中的黑名单证书列表信息:

#进入bin目录(设web3sdk代码位于~/mydata/目录)
$ cd ~/mydata/web3sdk/dist/bin
$ chmod a+x web3sdk
$ ./web3sdk CAAction all

系统参数配置合约ConfigAction

ConfigAction

获取系统参数
./web3sdk ConfigAction get ${key} 系统合约ConfigAction读取${key}对应的值(ConfigAction中记录的系统参数说明参考 系统参数说明文档 )
设置系统参数
./web3sdk ConfigAction set ${key} ${setted_value} 将记录在系统合约ConfigAction中${key}对应的值设置为${setted_value}(ConfigAction中记录的系统参数说明参考 系统参数说明文档 )
FISCO BCOS系统合约ConfigAction主要配置选项
配置项 详细说明
maxBlockTransactions

控制一个块内允许打包的最大交易数量上限

设置范围: [0, 2000), 默认值:1000

intervalBlockTime

设置出块间隔时间

设置范围:大于等于1000, 默认值: 1000

maxBlockHeadGas

控制一个块允许最大Gas消耗上限

取值范围: 大于等于2000,000,000, 默认值: 2000,000,000

maxTransactionGas

设置一笔交易允许消耗的最大gas

取值范围: 大于等于30,000,000, 默认值: 30,000,000

maxNonceCheckBlock

控制Nonce排重覆盖的块范围

取值范围: 大于等于1000, 缺省值: 1000

maxBlockLimit

控制允许交易上链延迟的最大块范围

取值范围:大于等于1000, 缺省值:1000

CAVerify 控制是否打开CA验证,取值:true或者false, 缺省值: false
omitEmptyBlock

控制是否忽略空块

取值:true或者false, 缺省值:false

通过ConfigAction配置系统参数的例子如下:
# 进入bin目录(设web3sdk代码位于~/mydata/目录)
$ cd ~/mydata/web3sdk/dist/bin
$ chmod a+x web3sdk
# =====更改出块时间为2s====
$ ./web3sdk ConfigAction set intervalBlockTime 2000

# =====允许空块落盘=====
$ ./web3sdk ConfigAction set omitEmptyBlock false

# ====调整一笔交易允许消耗的最大交易gas为40,000,000
$ ./web3sdk ConfigAction set maxTransactionGas 40000000

# ====调整一个块允许消耗的最大交易gas为3000,000,000
$ ./web3sdk ConfigAction set maxBlockHeadGas 3000000000

# ==== 打开CA认证开关====
$ ./web3sdk ConfigAction set CAVerify true
# ......

联盟控制合约ConsensusControl

ConsensusControl

部署联盟共识模板
./web3sdk ConsensusControl deploy
获取联盟共识模板合约地址
./web3sdk ConsensusControl list
关闭联盟共识特性
./web3sdk ConsensusControl turnoff