昨晚一个朋友上来和我说:“O哥O哥,现在STEEMIT发奖又没有STEEM啦,你写的帖子OUT啦!”
我吓得赶紧回顾一下我的帖子,还好我也没说发奖一直有STEEM,而是说系统会根据SBD的供应量占比来计算sbd_print_rate
,进而决定发奖时SBD、STEEM的分配比例。
所以,这个供应量占比是系统中很重要的数据,那么我们今天就来扯扯这个。
(图源 :pixabay)
安全提示:O哥闲扯淡系列本就是闲扯淡,诸位千万别当真!
计算SBD供应量占比
在上篇帖子《发奖有STEEM啦,来分析一下发奖的变化(其实没啥变化😰)》 我们翻出了sbd_print_rate
的计算代码。
其中SBD供应量占比代码如下:
auto percent_sbd = uint16_t( ( ( fc::uint128_t( ( dgp.current_sbd_supply * get_feed_history().current_median_history ).amount.value ) * STEEM_100_PERCENT ) / dgp.virtual_supply.amount.value ).to_uint64() );
咋一看代码可能有点纳闷:
dgp.current_sbd_supply * get_feed_history().current_median_history
SBD供应量 x 喂价,这是什么鬼?难道不应该除以喂价吗?难道我发现了一个了不起的BUG?研究了半天,发现有人遇到了和我同样的问题,别人给他的回复是 *
被重载,会自动处理价格(该乘乘,该除除),跪了。
把上述代码翻译成Python语言:
sbd_steem = current_sbd_supply/median_price
virtual_supply = current_supply + sbd_steem
percent_sbd = sbd_steem / virtual_supply * STEEM_100_PERCENT
让我来计算一下当前占比
可见当前SBD占比为1.915%
,低于2%(STEEM_SBD_START_PERCENT),所以计算出来的sbd_print_rate为100%,从dgp中读出来的sbd_print_rate也是100%。
关于SBD占比的思考
在回头看我们的占比计算公式
sbd_steem = current_sbd_supply/median_price
virtual_supply = current_supply + sbd_steem
percent_sbd = sbd_steem / virtual_supply * STEEM_100_PERCENT
其中median_price
就是喂价的3.5日均价,如果SBD锚定1美元,那么上述计算公式没有任何问题。
但是实际上SBD与STEEM当前兑换价格约为1:1
,所以实际上供应量占比应该是:
sbd_steem = current_sbd_supply/1.0
virtual_supply = current_supply + sbd_steem
percent_sbd = sbd_steem / virtual_supply * STEEM_100_PERCENT
将这个公式代入我们的代码:
我们计算出的SBD供应量占比为:3.966%
sbd_print_rate 为 34.45%
也就是说应减少SDB的发行。
可是问题在于SBD已经很贵了,如果减少发行岂不是更贵了?
结论
- SBD的供应量占比来计算
sbd_print_rate
sbd_print_rate
决定发奖时SBD、STEEM的分配比例- SBD的供应量占比计算时用的是喂价而不是实际价格导致供应量结果偏低
- 偏低的供应量导致SBD增发
或许这才是合理的?晕了。
参考链接
This page is synchronized from the post: O哥闲扯淡:再谈SBD供应量占比