前言
生产环境中,关于Signer的数量,Quroum的取值,都是有一套理论的,这个理论的来源就是ChainCore联合共识白皮书
Signer数量,Quroum取值
关于Signer数量,一般根据规模,业务来制定。
一般来说,如果是公司内部独立使用的私有链,则将Generator指定为Signer即可。
如果是联盟链,联盟中每个成员要求至少有个Signer,那么关于Quroum的设置,目前推荐以过半为准,即 (int)(Signer / 2) + 1
几个保证
一下内容,M代表Quroum,N代表Signer数量
安全性保证
只要保证不超过有 2M - N - 1 签名者违反协议,就可以保证区块链数据的安全性
只要保证不超过有 N - M 个签名者违反协议,就可以保证,当区块头中的共识程序被满足时,就能找到对应的有效历史记录
区块链活性保证
对于ChainCore区块链活性的保证,只需要保证两点
- Generator没有故障(可以通过集群,数据库高可用)
- 不超过 N - M 个签名者发生故障
区块链失活修复措施
- 查询Generator数据库中blocks表区块数量
- 查询每个Signer数据库中signed_blocks表中签名的区块,将表中区块与Generator中区块对其(删除多余的区块记录)
解决失活问题后,一定记得调整整个区块链的Quroum参数