区块锻造者,指在BFChain网络中那些负责收集事件信息并将其打包到区块里的节点(即矿工)。除了具有普通节点的特性外,区块锻造者还需负责如下事务:
在BFChain网络中,每一轮的区块锻造者共有57个。BFChain区块锻造者是根据受托人获得的得票数及其在线率等参数综合计算推选出来的。
流程中,区块锻造者的产生主要包含三个部分:
本章主要介绍第一和第三部分,其中第二部分的投票,将在 共识投票机制 一章中描述,此章节不做详细说明。
为了提高共识效率,在BFChain区块链生态中,地址账户只要持有主链权益,即可申请成为受托人。所有地址账户均可以对已开启接收投票的受托人进行投票,系统将按照一定的算法规则从中选举出57位受托人。这57位受托人,即区块锻造者,将负责锻造下一轮的57个区块。
在BFChain生态中,主要有如下两类受托人:
链上规则:
BFChain生物链林提供如下事件接口,用于将节点绑定的地址账户注册成为受托人:
有关该接口的详细使用方法,请参见开发者社区相关文档。
地址账户成功申请成为受托人之后,还需要配置是否参与锻造者竞选(即,接收投票),默认为拒绝投票。参与锻造者竞选意味着链上其他节点将有可能会投票给此受托人,则,其有可能会被选上成为区块锻造者。
需要注意的是,若受托人有幸被选中成为区块锻造者,在锻造区块时因节点未准备好(如区块高度未同步完、节点网络不稳定、节点正在升级更新中等等),而导致无法锻造区块,则将会影响受托人接下来的竞选,大大降低后续被选中的概率。为了降低受托人的掉线率,建议在节点未准备好时,先拒绝参与锻造者竞选(即拒绝投票),直到节点准备好了,再开启接收投票。
BFChain生物链林提供如下事件接口,用于节点配置是否参与锻造者竞选:
默认为拒绝投票
有关以上两个接口的详细使用方法,请参见开发者社区相关文档。
投票是指,链上所有持有主链权益的地址账户,均可以在已支持的各类Dapp(如BFChain APP)或者节点程序中对受托人进行投票。受托人获得越多的节点投票,其成为锻造者的概率将越大。
BFChain生物链林提供如下事件接口,用于节点进行投票:
投票相关规则详见共识投票机制一章,此处不再赘述。
链上节点通过参与投票(自动投票和手动投票),将手中获得的选票投给参与竞选的受托人。底层将在本轮轮末块时,统计本轮被投中的所有受托人。这些被投中而推荐上来的受托人会进入候选区,系统将根据底层的选举规则(详见下文“成为锻造者”部分)从候选区中最终选出下一轮的57位区块锻造者。
只有进入候选区的受托人(以下称之为候选人)才有可能被选中成为下一轮区块的锻造者;
系统将根据底层既定的共识从候选人中选出57位,作为下一轮的区块锻造者。
底层的规则,主要取决于以下两个参数:
判断方法:
若两个候选人的得票数相同,则再比较在线率:在线率高的,优先被选中
例如:
候选人 | 锻造区块数 | 掉线数 | 在线率 | 得票数 |
---|---|---|---|---|
A | 70 | 30 | 70% | 100 |
B | 90 | 10 | 90% | 99 |
C | 85 | 15 | 85% | 100 |
D | 100 | 0 | 100% | 50 |
在上面的表单中,各候选人被选中的概率由大到小依次为:C > A > B > D
BFChain初始锻造者(即第一轮的区块锻造者)是按照底层竞选共识(如上文),从114个创世受托人中选举出来。此后的每一轮区块锻造者将通过上文描述的竞选流程选举出来。