共识可插拔¶
1. 节点配置¶
ChainSQL3.0对共识模块进行了抽象设计,实现接入了多种共识算法。目前已经支持的共识算法有RPCA、POP和HotStuff。可通过节点配置文件对链使用的共识算法类型和共识参数进行配置。
与原1.x.x-pop和2.x.x-shard版本进行对比,在共识配置方面的差异如下:
禁用了单独对POP共识算法进行配置的配置单元
[pconsensus]
。新增了可选的配置单元
[consensus]
可对节点使用的共识类型和共识参数进行配置。
注解
如节点不对共识算法类型和共识参数进行配置,节点默认使用POP共识算法及其默认参数。
下面对 [consensus]
配置单元中支持的配置项进行说明。
[consensus]
type = pop
min_block_time = 1000
max_block_time =1000
max_txs_per_ledger =10000
omit_empty_block = true
time_out = 3000
init_time = 10
max_txs_in_pool = 1000000
配置项 |
类型 |
单位 |
默认值 |
说明 |
---|---|---|---|---|
type |
字符串 |
N/A |
POP |
共识类型,可选值:RPCA/POP/HOTSTUFF,大小写不敏感 |
min_block_time |
正整数 |
毫秒 |
1000 |
最小区块间隔时间,最小值1000 |
max_block_time |
正整数 |
毫秒 |
1000 |
最大区块间隔时间,最小值1000,且大于或等于min_block_time |
max_txs_per_ledger |
正整数 |
N/A |
10000 |
每个区块包含的最大交易数,小于或等于max_txs_in_pool |
omit_empty_block |
布尔 |
N/A |
true |
是否忽略空区块 |
time_out |
正整数 |
毫秒 |
3000 |
对于POP共识,默认值为3000,并且如果配置的值小于或等于max_block_time,则值调整为max_block_time的2倍 |
time_out |
正整数 |
毫秒 |
5000 |
对于HotStuff共识,默认值为5000,并且如果配置的值小于2倍max_block_time加1000,则值调整为2倍max_block_time加1000 |
init_time |
正整数 |
秒 |
90 |
初始化时间,大于或等于2倍time_out |
max_txs_in_pool |
正整数 |
N/A |
100000 |
交易池的容量大小 |
注解
除了type配置项外,其它配置项均不影响RPCA共识算法
2. 查看共识信息¶
节点运行过程中,可通过命令行或者RPC接口查询节点的共识类型、共识参数和共识状态信息。
./chainsqld consensus_info
返回信息的部分字段与配置项一一对应,如下:
{
"result" : {
"info" : {
"initialized" : false,
"ledger_seq" : 2,
"new_round" : 1,
"parms" : {
"init_time" : 10,
"max_block_time" : 1000,
"max_txs_per_ledger" : 10000,
"min_block_time" : 1000,
"omit_empty_block" : true,
"time_out" : 5000
},
"proposing" : true,
"synched" : true,
"tx_count_in_pool" : 0,
"tx_pool_capacity" : 100000,
"type" : "hotstuff",
"validating" : true
},
"status" : "success"
}
}