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

2020-02-22  本文已影响0人  FriendOfTime

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 (详细,推荐阅读)

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

上一篇下一篇

猜你喜欢

热点阅读