在之前的帖子《STEEM是如何产出以及如何分配的》我曾提到每天系统产生的STEEM,有10%会分配给区块制造者(block producers)。
(图源 :pixabay)
HF17以后,STEEM系统取消了矿工挖矿,区块制造者体系由19+1+1改成20+0+1,亦即得票数TOP20的见证人,和随机选择的见证人。
我们好奇见证人收入到底有多少呢?所以就探究了一下,顺便记录下来供大家参考。
见证人总日收入
前边的文章中我们已经计算出每个区块的见证人收入,但是每250K个区块,通胀率是缩减的,不巧刚刚计算一下,通胀率由8.94%变成了8.93%,尽管差异不大,但是数据要更新一下喽。
新的数据如下:
以上数据是每块的数据,STEEM目前每三秒一个块,我们可以据此计算出每日收益
所以,所有见证人每日见证人总收入约为:6701个STEEM
见证人收益的分配算法
以上计算仅仅是为了阐明问题,实际上见证人收益是按块发放的,亦即见证人每生成一个块,就会获得对应的奖励。
那么具体是如何发放的呢?大致看如下代码就清楚了:
首先需要获得witness_schedule
对象
我们用API获取一下,大致是这个样子
然后再看这段代码就好理解了
其中STEEM_MAX_WITNESSES
值为21
#define STEEM_MAX_WITNESSES 21
也就是说,
- TOP20见证人,每块拿到见证人收益的
21/25
- 随机选出的见证人,每块拿到见证人收益的
21*5/25
总量其实没有变化,但是在TOP20和随机见证人奖励分配之间做个很好的权衡。
注1:代码中虽然有矿工,但是'max_miner_witnesses': 0
所以没矿工啥事
注2:代码中写着top19,应该是历史遗留问题,HF17之后是TOP20
按这个我们计算一下分配,得出如下数据:
见证人日收益
知道上述分配比例后,计算见证人日收益就很好计算啦。
每3秒一个块,每轮21个见证人,需要63秒,也就是说TOP20见证人63秒轮到一次,我们可以用每天总秒数来计算出块奖励。
计算结果如下:
注意,其中TOP20奖励是每人奖励,随机见证人奖励是总奖励
总结
- 见证人组成 TOP20 + 1随机
- TOP20 每人每天奖励:
268.04个STEEM
- 随机见证人,大家一起分:
1340.21个STEEM
- 每日见证人总奖励约为:
6701个STEEM
问题,随机见证人单个块奖励没啥疑问,总奖励咋分配呢?是平分1340STEEM吗?叫随机见证人妥当吗?是不是该叫备选见证人或者分时(timeshare)见证人? 备选见证人奖励和见证人得票数之间又有什么关系?
我会在后续文章中和大家一起分享学习成果,这篇就这样了,暂且留些悬念。
This page is synchronized from the post: 见证人收益有几何?