配置管理与测试
Fisco BCOS 配置管理
节点配置
介绍了节点和账本配置方法,包括端口、证书、日志、群组、共识、存储、交易池、同步、流控等配置项。
FISCO BCOS支持多账本,每条链包括多个独立账本,账本间数据相互隔离,群组间交易处理相互隔离,每个节点包括一个主配置config.ini
和多个账本配置 group.group_id.genesis
group.group_id.ini
。
config.ini:主配置文件,主要配置RPC、P2P、SSL证书、账本配置文件路径、兼容性等信息。
group.group_id.genesis ∶群组配置文件,群组内所有节点一致,节点启动后,不可手动更改该配置。主要包括群组共识算法、存储类型、最大gas限制等配置项。
group.group_id.ini:群组可变配置文件,包括交易池大小等,配置后重启节点生效。
关于配置
配置P2P:
当前版本FISCO BCOS必须在config.ini配置中配置连接节点的P和Port,P2P相关配置包括:
• listen_ip : P2P监听IP,默认设置为0.e.0.0 。
• listen_port:节点P2P监听端口。
• **node, ***︰节点需连接的所有节点 ip:Port或DomainName:Port。该选项支持域名,但建议需
要使用的用户手动编译源码。
配置账本文件路径:
[group]配置本节点所属的所有群组配置路径︰
• group_data_path:群组数据存储路径。
• group_config_path:群组配置文件路径。
配置证书信息:
基于安全考虑,FISCO BCOS节点间采用SSL加密通信,[network_security]配置SSL连接的证书信息
• data_path : 证书和私钥文件所在目录。
• key : 节点私钥相对于data_path 的路径。
• cert : 证书node.crt相对于data_path的路径。
• ca_cert : ca证书文件路径。
• ca_path : ca证书文件夹,多ca时需要。
配置黑名单列表
cr1.idx:黑名单节点的Node lD,节点Node ID可通过 node .nodeid文件获取; icx是黑名单节点的索引。
配置日志信息
配置节点兼容性
https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/manual/configuration.html
组员(群组系统)配置
介绍了组员节点的加入和推出方法,包括节点加入/退出网络、节点加入/推出群组、转化成共识节点、观察者节点及游离节点等操作
共识配置
[consensus]涉及共识相关配置,包括:
• consensus_type:共识算法类型,目前支持PBFT,Raft和rPBFT,默认使用PBFT共识算法;
• max_trans_num:一个区块可打包的最大交易数,默认是1000,链初始化后,可通过控制
台动态调整该参数;
• consensus_timeout:PBFT共识过程中,每个区块执行的超时时间,默认为3s,单位为秒,
可通过控制台动态调整该参数;
• node.idx:共识节点列表,配置了参与共识节点的Node ID,节点的Node ID可通过
${data_path}/node.nodeid文件获取(其中${data_path}可通过主配置config.ini的
[network_security].data_path配置项获取)
状态模式配置
• state用于存储区块链状态信息,位于genesis文件中[state]:
• type:state类型,目前支持storage state和MPT state,默认为storage state,storage
state将交易执行结果存储在系统表中,效率较高,MPT state将交易执行结果存储在MPT树
中,效率较低,但包含完整的历史信息。
gas配置
FISCO BCOS兼容以太坊虚拟机(EVM),为了防止针对EVM的DOS攻击,EVM在执行交易时,引入了gas概念,用来度量智能合约执行过程中消耗的计算和存储资源,包括交易最大gas限制和区块最大gas限制,若交易或区块执行消耗的gas超过限制(gas limit),则丢弃交易或区块。
FISCO BCOS是联盟链,简化了gas设计,仅保留交易最大gas限制,区块最大gas通过共识配置的max_trans_num和交易最大gas限制一起约束。FISCO BCOS通过genesis的[tx].gas_limit来配置交易最大gas限制,默认是300000000,链初始化完毕后,可通过控制台指令动态调整gas限制。
EVM配置
FISCO BCOS v2.4.0引入Free Storage Gas衡量模式,提升CPU和内存在Gas消耗中的占比。
Free Storage Gas模式的开启和关闭通过genesis文件的evm.enable_free_storage配置项控制。
• evm.enable_free_storage设置为true:开启Free Storage Gas模式
账本可变配置说明
数据库相关配置项
• scroll_threshold_multiple:当type为Scalable时,此配置项用于配置区块数据库的切换阈
值,按scroll_threshold_multiple*1000。默认为2,区块数据按每2000块存储在不同的
RocksDB实例中。
• db_ip:当type为MySQL时,需要配置该字段,表示MySQL的IP地址。
• db_port:当type为MySQL时,需要配置该字段,表示MySQL的端口号。
• db_username:当type为MySQL时,需要配置该字段,表示MySQL的用户名。
• db_passwd:当type为MySQL时,需要配置该字段,表示MySQL用户对应的密码。
• db_name:当type为MySQL时,需要配置该字段,表示MySQL中使用的数据库名。
• init_connections:当type为MySQL时,可选配置该字段,表示与MySQL建立的初始连接数,默认15。使用默认值即可。
• max_connections:当type为MySQL时,可选配置该字段,表示与MySQL建立的最大连接数,默认20。使用默认值即可。
交易池配置
FISCO BCOS将交易池容量配置开放给用户,用户可根据自己的业务规模需求、稳定性需求以
及节点的硬件配置动态调整交易池配置。
交易池容量限制
为防止过多交易堆积在交易池内占用太多内存,FISCO BCOS提供了[tx_pool].limit和
[tx_pool].memory_limit两个配置项来限制交易池容量:
• [tx_pool].limit: 限制交易池内可以容纳的最大交易数目,默认为150000,超过该限制后,客户端发到节点的交易会被拒绝。
• [tx_pool].memory_limit: 交易池内交易占用的内存大小限制,默认为512MB,超过该限制后,客户端发到节点的交易会被拒绝。
交易池推送线程数配置
为提升区块链系统性能,FISCO BCOS采用了交易回执异步推送逻辑,当交易上链后,交易池内的推送线程会把交易上链的回执异步推送给客户端,为防止推送线程过多占用较多的系统资源,也为了防止推送线程过少影响交易推送的时效性,FISCO BCOS提供了
[tx_pool].notify_worker_num配置项来配置异步推送线程数目:
• [tx_pool].notify_worker_num:异步推送线程数目,默认为2,建议该值不超过8
组员节点管理
FISCO BCOS引入了游离节点、观察者节点和共识节点,这三种节点类型可通过控制台相互转换。
• 组员
共识节点:参与共识的节点,拥有群组的所有数据(搭链时默认都生成共识节点)。
观察者节点:不参与共识,但能实时同步链上数据的节点。
• 非组员
游离节点:已启动,待等待加入群组的节点。处在一种暂时的节点状态,不能获取链上的数据。
配置CA黑白名单
介绍了如何通过配置CA黑白名单,实现拒绝与无关的链的节点或指定节点建立连接,或实现仅允许与白名单中的节点建立链接。
存储加密
介绍了设置落盘加密的流程,保证了运行联盟链的数据在硬盘上的安全性
账户权限控制
介绍了基于角色的账户权限控制方法。
设置SDK白名单
介绍了设计节点所服务的SDK证书白名单方法。
Fisco BCOS 测试
1.通过Java SDK进行压力测试
(以在Ubuntu系统中安装OpenJDK 11为例)
1 | # 安装open JDK 11 |
编译源码
1 | # 下载源码 |
配置Demo
1 | $ cd dist |
执行示例压力测试程序
1 | # CRUD测试插入1000笔#CRUD合约压测 |