星系共识真实运行中的节点奖励和数据分析

(编者按:此文由Wanchain验证节点成员Chainlayer分析撰写,Chainlayer也是Wanchain社区的忠粉。)
如果你最近参与了Wanchain的星系共识,而且也收到了一些奖励,但是搞不清楚奖励的数字是怎么计算出来的。那么此文是一篇很好的诠释性文章。我们一边介绍Wanchain的奖励机制,一边向你说明为什么你每天收到的奖励都在变化。
是运气还是公平?
你的收益和你的运气有很大的关系。星系共识上线运行了将近两周,我想社区中很多和奖励有关的问题都可以归结为两个字“运气”。但是,总是用“运气”来搪塞所有人的问题,难免有些敷衍,尤其是当人们发现自己的收益要明显少于他人的时候。所以,首先我想澄清一下,此处的运气并非完完全全指你很幸运。这里的运气是实实在在的数学意义上的概率,通过其背后科学缜密地设计,最终反映出来你是否幸运地得到奖励,得到多少奖励。

我先拿抛硬币的事情来举例。我们约定好,每次抛掷硬币,如果正面朝上,算我赢;如果背面朝上,算你赢。我们每抛掷10次记录下正面朝上的次数,这里我们把10次定为一组,当我们进行数十组这样的抛掷后,将记录的正面朝上的次数绘成统计图。

星系共识真实运行中的节点奖励和数据分析

上图反映了经过数十组试验,硬币每抛掷10次有多少次正面朝上的概率。你可以清楚地看到,10次中有5次正面朝上的概率是最高的,接近25%。换言之,如果此时你我两人的收益分配是按照硬币正反面的次数来决定,那么你我收益最终平分的概率同样是25%。根据我们的常识判断,这种通过硬币正反面的方式来决定收益分配是公平的。
下面我们增加游戏的难度。我们让6个人参与掷骰子的游戏。假定骰子是6个面,且数字分别是1,2,3,4,5,6。此时你选定数字6,那么每抛一次骰子,你将有1/6的概率抛中数字6。假如你每抛掷骰子60次记录下数字为6朝上的次数,这里我们把60次定为一组,当我们进行数十组这样的抛掷后,数字6朝上的次数所绘成的统计图会非常接近上面提到的抛硬币的统计图。也就是说,每抛掷60次,约有10次的机会是数字6朝上。假如你能够进行10000次这样的试验,你的结果将如下图所示。

星系共识真实运行中的节点奖励和数据分析

但需要指出的是,在你进行10000次的抛掷过程中,并不是每抛掷6次,就必有一次是6朝上。因为6朝上的次数增加并不总是线性的,有时你抛6次,没有一次能抛中数字6,而有时6次却中了两次甚至三次。但从大样本来看,你抛中数字6的概率是非常接近1/6的。所以,当你连续抛中数字6时,你觉得这是运气还是公平呢?我想,这便是既有运气成份,又是公平体现吧。
Wanchain星系共识统计分析
在Wanchain星系共识中,验证节点被选中进入随机数生成组(RNP)或出块者选择组(EL)如同掷骰子一样,同样是随机的。每一个Epoch(即每一天),主网会在第2880个区块上选出下一个Epoch(即第二天)的验证节点。想象在一个圆形时钟上,根据验证节点和委托人的总质押量,每一个验证节点占据了这个时钟的一小段时间。系统会随机选出时钟24小时的49个时间点,这些刚好落在这49个时间点上的验证节点就是能够进入下一轮Epoch共识并获得奖励的验证节点,其中25个是RNP节点,24个是EL节点。一个验证节点是允许在一个Epoch中被多次选中的(后面具体介绍为什么)。
你可能要问了,为什么我们把星系共识的机制设计的像抽奖一样,而不是直接按各节点的质押比例进行简单粗暴的奖励分配呢?原因是,按有关比例进行奖励的分配反倒做不到公平公正。在PoS共识机制中,奖励是分配给实实在在参与了共识劳动的节点,所以针对具体某一个Epoch,任何一个验证节点只有两种状态:要么参与了共识劳动,要么未参与共识劳动。(编者按:这一点和目前市面上不少所谓的资金盘项目的奖励分配逻辑是很不一样的,星系共识背后的逻辑是有严谨的数学理论支撑和真实的权益挖矿过程,讲究的是按劳分配,多劳多得,通过节点的彼此劳动付出,从而保证Wanchain主网的安全和主链的正确延续。)验证节点的数量和每个验证节点在全网中的权重每时每刻都在变化,因此你无法固定有关权重的比例。验证节点的收益应当只发放给参与了共识劳动的节点,只有这样的经济激励设计,才会让那些经常被选中的验证节点变得更有积极性,也让那么不能被选中的验证节点想尽办法提高自己被选中的机率(如提高自身质押量、吸引更多委托量等)。
因此,根据第1个Epoch中最后一个区块时间节点上各验证节点的权重,系统会在第二个Epoch的第2880个区块决定哪些验证节点能够进入到第3个Epoch进行共识劳动。以此类推。
奖励分配
除了EL节点组和RNP节点组外,还有一个重要的概念就是SL节点组(Slot Leader即出块者)。SL节点在第2个Epoch时就是EL节点,在第3个Epoch时才成为SL节点。SL负责真正的出块工作,所有SL节点在当前Epoch中随机选中并出块,共同完成一个Epoch内的全部17280个区块。这就意味着在某个具体的Epoch中,EL、SL和RNP分别获得奖励额的25%,25%和50%。
所以,假如一个Epoch中的总奖励额是100,那么EL和SL各得25,RNP得到50。EL和RNP获得的奖励额是固定的。但SL负责权益挖矿(出块),它的奖励额是动态的,接近25但略有浮动,其具体数值取决于SL节点组在当前Epoch下能产生多少区块和它们的活性系数。
当前Epoch下EL,SL和RNP节点可获得的奖励额与验证节点质押量无关。这也是为什么质押量大的节点几乎可以在每个Epoch中被选中,甚至在一个Epoch内被多次选中。如果大节点无法被多次选中的话,大节点收到的奖励额将与其自身的质押权重不成比例。
每一个Epoch的总奖励额为6849.3WAN(即2.5M/365=6849.3)。如果我们根据排名前30的验证节点的权重,将奖励额进行分配,可以得到如下图:

星系共识真实运行中的节点奖励和数据分析

一个Epoch下,最少的奖励是1EL,大约68WAN,1RNP的奖励大约是140WAN。很明显你可以看到,只有排名前15的验证节点,其权重所对应的奖励比例才能超过68WAN这道线;只有排名前8的验证节点,其权重所对应的奖励比例才能超过140WAN。我们把这30个节点的权重再放回到前面提及的时钟上,排名第16的节点,权重只有0.66%,相当于只占了一天24小时中的9.5分钟。
排名第30的节点按其权重来看,每天理应收到21.92WAN。但节点真正被选中(比如RNP节点)是能够收到140WAN的奖励。针对具体单个节点,如前面所述,只有选中和不被选中两种状态,所以,第30名的节点被选中成为RNP的概率是15.7%(21.92/140)。这个概率相当于投掷骰子,抛中数字6朝上的概率。
现在,我们重新回到第一幅图来看:

星系共识真实运行中的节点奖励和数据分析

上图所示,是不是抛10次硬币,5次正面朝上的概率是最大的?其中这种说法并不全面。正反面次数各占一半的概率确实占到约25%,数值是最高的,但仍有75%的概率是正面朝上的次数和反面朝上的次数不一致的情况。这种分布规律就是数学上经典的钟型曲线。
Wanchain的奖励分布完全符合钟型曲线。经历任意数量的Epoch,奖励分配情况符合节点权重的次数是最多的,但是奖励分配情况不符合节点权重的次数同样也不少。而这并不意味着不公平,而是没有更好的途径能让让奖励分配变得更为公平。令人放心的是,整个共识过程中所谓的“运气好”和“运气差”的机会是均等的。单个验证节点质押量的增加也并不会导致全网平均选中概率的变化。同样,作为委托人,你委托给大额节点,选中概率高,但单次发放到你手中的奖励会较少;你委托给小额节点,选中概率低,但单次发放到你手中的奖励会较多。所以,把时间轴拉长,作为委托人,只要你所投的验证节点的质押周期恒定,在线活性恒定,那么你获得的奖励基本是一样的。
从长期来看,运气的因素会趋近于零,所有验证节点和委托人的收益都将无限接近于其质押量占全网的权重。
希望以上的分析能让你对Wanchain星系共识的奖励分配有更深刻的认识。