温故而知新:见证人收益几何?

in HIVE CN 中文社区2 months ago

前些天写了一个帖子《纸上得来终觉浅:粗略计算一下HIVE上股份的年化收益率》,写完之后颇有感慨,若当年自己就能想明白这些事,岂不是早就成为亿万富翁了?

image.png
(图源 :pixabay)

可惜这世界上没有后悔药,换个角度想,如果自己真的成了亿万富翁,那还能像现在这样钻研程序、写帖子嘛?估计每天都过着纸醉金迷、醉生梦死的生活,岂不是成了社会渣滓,所以塞翁失马焉知非福

话说有朋友之前那篇文章后,又问我作者、见证人、DHF的收益都是咋分配的?擦,文章不是说了嘛,每年的通胀,作者/策展人分配到65%、DHF 10%、股权所有者 15%,剩下的就是见证人的10%啦

啥,还不明白,那我就得来好好说说啦,今天就来讲讲见证人收益这块。其实6年多以前我曾经发文讲过,但彼时HIVE还没分叉,也不存在DHF这块,所以这么多年下来变化也挺大的。

再有就是,时隔六年多,好多事情,好多细节,我不说忘得一干二净也忘得差不多了,所以权且当作复习一下,毕竟温故而知新,可以为师矣

好言归正传,我们来一起再次学习一下见证人收益&分配情况。

通胀率 & 通胀

在上篇文章中,我们介绍了通胀率、总供应量两大概念,并有此计算出每年的通胀。

先来回顾一下,计算通胀率的几大因素:

  • 初始通胀率
  • 终止通胀率
  • 通胀率缩窄周期
  • 当前区块(head_block_num)

1710383680674.png
(HIVE源码中通胀率的计算)

总供应量,上篇文章中我们得出结论:

总供应量可以直接通过get_dynamic_global_properties获得,那就是其中的virtual_supply。

好了,根据以上信息,依据上篇文章中提到的计算方法,我们可以获取当前HIVE区块链的年通胀。

新HIVE的产生 &分配

好,现在我们可以计算出年通胀,那么乘上比例,算出见证人收益,完工。擦,我想这样的话,可能会挨一通暴打。

为了避免挨打,我们来继续讨论一下新的HIVE是怎么产生的呢? 比如说什么时机产生的呢?

我们继续来看代码:

auto new_hive = ( props.virtual_supply.amount * current_inflation_rate ) / ( int64_t( HIVE_100_PERCENT ) * int64_t( HIVE_BLOCKS_PER_YEAR ) );

这条代码中处于database::process_funds()中,被database::_apply_block调用,也就是说每应用一个区块,都会被处理一次。

继续分析上述代码,我们发现每个区块产生的HIVE,是使用总供应量以及当前年通胀率计算出来的通胀,再除以每年产生的区块数,计算出当前区块应该产生的HIVE数量。

这样才是合情合理的,毕竟各种奖励都是每个区块更新的,而不是一年更新一次,哈哈哈。

再来看分配情况:
image.png

由代码中不难看出,几大部分的分配情况和我们上篇文章中得出的结论是一样的,就是按照配置的分配比例进行分配。

这其中有两点需要注意一下:一,不同HF时期,比例是有所区别的;二:见证人收益是作者、DHF、股东分配后剩余的部分。

见证人收益的分配

好,我们已经计算出每个区块中属于见证人奖励的部分啦,但是这部分奖励分给谁呢?作为见证人之一,我当然希望都分给我,但是显而易见这是不现实的。

同样从代码中我们可以找到具体的分配方法:

image.png

image.png

这其中用到了两部分内容,分别是wso,以及cwit,分别为witness schedule object以及current witness object

我们来获取一下witness schedule object,长这个样子:
image.png

结合上述代码(其中HIVE_MAX_WITNESSES为21)以及上边的witness schedule object,我们得出如下结论:

  • TOP20见证人,每块拿到见证人收益的21/25
  • 分时(timeshare)见证人,每块拿到见证人收益的21x5/25

也就是说,见证人奖励总量其实没有变化,但是在TOP20和随机见证人奖励分配之间做个很好的权衡。

计算一下

至此,我们捋通顺了见证人收益的全过程,我们用Python代码模拟一下上述过程,计算一下当前HIVE区块链上的见证人奖励情况:

通胀率:
image.png

每块新产生的HIVE:
image.png

分配情况以及每块的见证人奖励:
image.png

也就是说,TOP 20见证人出块,能获得0.2574个HIVE,备选/分时(timeshare)见证人出块,可以获得1.2870个HIVE奖励(奖励均以HP以及vesting shares发放)。

image.png
(图源 :pixabay)

好了,大致就是这样啦,今天就和大家一起学习到这里,你学废了嘛?

Sort:  

#define HIVE_MAX_WITNESSES 21

代码中HIVE_MAX_WITNESSES是一个宏定义,代表HIVE每轮见证人为21个(20+1)
其中20个为TOP 20见证人,亦即代码中的elected(当选)见证人
剩下的1个从剩余的备选见证人中按照一定算法选出,亦即代码中的(timeshare)分时见证人

代码位置:libraries/protocol/include/hive/protocol/config.hpp

大佬讲的越多,我越能够感受差距有多大。当一切变成遥不可及的时候,我一般只专注自己能做的事情,比如写写文,评论评论,其他的就不关注了,因为我实在不是那块料。😂😂

但是,你可以帅啊

O哥,O哥,成了亿万富翁之后,记得给HIVE拉盘哦🤣

我是越看越迷糊那种

太棒了 我最喜欢学习新的知识😁

见证人收益很不错👍👍

😂😅学废了
@tipu curate 2

!ALIVE
!LOL

I threw a boomarang a few years ago that never came back.
I now live in constant fear.

Credit: bulldog-joy
@oflyhigh, I sent you an $LOLZ on behalf of phillarecette

(8/10)
Delegate Hive Tokens to Farm $LOLZ and earn 110% Rewards. Learn more.

@oflyhigh! You Are Alive so I just staked 0.1 $ALIVE to your account on behalf of @ phillarecette. (9/10)

The tip has been paid for by the We Are Alive Tribe through the earnings on @alive.chat, feel free to swing by our daily chat any time you want, plus you can win Hive Power (2x 50 HP) and Alive Power (2x 500 AP) delegations (4 weeks), and Ecency Points (4x 50 EP), in our chat every day.