美文网首页
[eos15]协议-共识协议-part2

[eos15]协议-共识协议-part2

作者: FriendOfTime | 来源:发表于2020-02-22 21:00 被阅读0次

    4 生产者投票/生产者调度

    对下一轮次BP的投票过程是被第二层DPoS执行的。严格来说,一个Token(通证)持有者必须先抵押Token,变成一个stakeholder(权益持有者),然后才可以投票。

    4.1 投票过程

    每一个EOS权益持有者可以在一次投票行为中为30个BP投票。被选举出来的21个BP代表整个EOS通证持有者,来生产区块、校验区块。其他BP按照得票顺序被放置在后备列表(standby list)中,当某个BP宕机时顶上。

    投票过程会一直执行,每个轮次(即每个BP用6秒时间生产12个块,共21*6=126秒)结束后,会重新计算BP获得的票数,产生新的21个BP。

    本轮次中,没有被投票的BP会用之前获得的票计算,但是由于存在投票衰退(vote decay),所以会重新计算实际的票数。

    被新投票的生产者也会保留他们原来的投票,并且如果某投票者重新投了该BP,则会用新的权重计算票数。

    可能有点绕,简单来说,就是每一个轮次会重新计算每个BP得到的票数。可以简单理解:票数 = 通证数 * 权重。权重是随时间变化的,每周会更新一次,每周大概增加1.3%(2的1/52次方=1.013419)。

    实际上,权重本身并没有”衰减“,只是投票的时间越新,其权重越大。也就是说,如果你在2018年6月投票,它的权重一直不变,如果赎回,现在重新投票,其权重就会增加。

    EOS这样设计主要有两个目的:

        通过允许新票比旧票更有分量来鼓励参与。

        给予那些积极参与重要治理事务的用户更多发言权。

    更加详细的内容可以见下面的扩展。

    4.2 生产者调度

    那么,被投票选中的前21个BP的生产块的顺序又是如何呢?其实很简单,就是按照生产者的字母顺序。因为前文也说了,这21个BP的权利是一样的,只要大家按照一致认可的一个顺序生产块即可。

    这里有一个关键点:这些数据(投票数据,21个BP的顺序等等一切数据)也都是作为交易数据存储在区块链中的,也都需要通过aBFT层被大多数节点确认,从而变成不可逆的

    每个生产者在当前轮次的第一个块中接收下一个轮次的生产者集合,需要注意的是,这个块是当前轮次,在当前轮次进行验证。即轮次N中的第一个块包括轮次N+1的BP及其顺序。

    当包含BP集合的第一个块被大多数生产者(2/3 + 1)认为是不可逆的时候,BP集合会在下一轮次中被激活。

    4.2.1 生产块相关参数

    每个轮次下:

    Parameter                            Description                                          Default     Layer

    P (producers)                number of active producers                             21          2

    Bp (blocks/producer)    number of contiguous blocks per producer      12          1

    Tb (s/block)                    Production time per block (s: seconds)          0.5          1

    不太理解为啥Bp和Tb属于aBFT层?

    通过以上参数,可以推算出下列参数:

    Variable                       Description                                           Equation

    B (blocks)              Total number of blocks                 Bp (blocks/producer) x P (producers)

    Tp (s/producer)      Production time per producer     Tb (s/block) x Bp (blocks/producer)

    T (s)                       Total production time                   Tp (s/producer) x P (producers)

    当某个块在指定的时间段内没有被特定的生产者生成时,就会产生缺口(gap)。如果生产者继续不产生超过给定超时(由第2层常量设置,现在貌似是24小时)的块,则生产者将被降级为备用列表(standby list)。


    扩展

    1、eos投票相关

    参考:http://www.btb8.com/eos/1809/12951.html (详细,推荐阅读)

    投票强度衰退背后的算法是什么? 当你深入研究计算投票衰减的代码时,你会注意到投票实际上并没有衰减。 相反却是所有的新选票的投票强度都比旧选票高,这种的方法效果相同但是更聪明有效。

    相关文章

      网友评论

          本文标题:[eos15]协议-共识协议-part2

          本文链接:https://www.haomeiwen.com/subject/sqerqhtx.html