案例分析之:HIVE 代码中变量(参数)命名导致的血案

大家都知道,在HIVE上发帖,根据系统当前的HBD_PRINT_RATE,我们可能会拿到HP+HBD或者HP+HIVE+HBD或者HP+HIVE的组合,这个我在我之前不少文章中分析过,所以就不在赘述了。

image.png
(图源 :pixabay)

奖励的发放

但是你知道吗?还有个参数会决定这些组合中,VP vs HIVE+HBD的比例,比如我们可以通过控制这个参数,实现100%的Power UP,而一般情况,我们都是使用默认的50% HBD / 50% HP的设置:

Reveal spoiler

image.png

那么你知道这个选择到底意味着什么呢,说为什么选择中没有提到HIVE?以及这个比例到底是由什么来控制的?

要说明第一个问题,其实很简单,答案就是所谓的50% HBD / 50% HP,其实更确切地来讲,应该是50%的流动性Token以及50%的锁仓Token

所谓的流动性Token,是指HIVE、HBD之一或者两者的组合,具体发的是什么,HBD_PRINT_RATE决定;所谓的锁仓Token就是Vests亦即HP。

这样一描述,大家都就清楚了,所以我们调整这个比例,就是调整奖励发放时,流动性Token以及锁仓Token的比例。比如Power Up 100%就是选择全部锁仓,不要一丁点流动性。

朋友可能会问,我们是否可以选择j奖励全部以流动性Token发放,而不要锁仓Token呢?答案是不可以(通过第三方服务不算),我们必须至少选择50%的锁仓Token,剩下的50%我们可以自己调整比例

神奇的参数

好,下面我们来看第二个问题,这个比例是由谁来控制的呢?

使用https://hiveblocks.com/ 查看文章的properties 信息,不难发现,这个比例是由percent_hbd来控制的,比如我最近的一篇文章的属性信息中就可以看到如下参数:

Reveal spoiler

1652364321(1).png

那么问题来了,在HIVE的代码中,10000代表的是HIVE_100_PERCENT,也就是说100%,那么percent_hbd = 100%是意味着奖励全部以流动性发放吗?

当然不是,我说过了我们必须至少选择50%的锁仓Token,剩下的50%我们可以自己调整比例所以上述100%,其实意味着,剩下的50%流动性Token 100%以流动性Token形式发放

举例来说,假定一篇文章获得100$的奖励,假设没有设定Beneficiaries,假定当前HBD_PRINT_RATE为100%HBD。那么点赞者(Curators)和作者会各自获得一半的奖励50$,而作者的50$中的一半是以HP形式发放的,剩下的25$会根据percent_hbd的设置,如果我们设置的是10000,那么我们就会拿到25$的HBD。

是不是有点拗?原来percent_hbd是作者奖励中百分之五十的Percent,而不是作者奖励的Percent;是流动性Token的Pencent,而不是HBD的Percent,这多少让人有些容易误解。

中招的DAPP

如果我们将这个参数/变量修改为liquid_percent,然后限制它最大值为5000(亦即50%),代码中再做相应的调整,是不是就不容易引起误会了呢?

比如我们将liquid_percent设置成5000,就代表50% HBD / 50% HP;如果设置成0,就代表Power Up 100%,如果设置成2500,就代表75%的奖励Power UP,剩余的25%以流动性代币发放。这多直观啊!

而事实是,真的有DAPP因为不了解这个参数,将percent_hbd理解成我假想的liquid_percent的工作方式。当用户选择50% HBD / 50% HPpercent_hbd设置成5000,这就会导致作者收益75% Power UP, 25%以流动性代币发放

按说以多少比例发放都是奖励,并且加一起都是100%,不过实际上要看币价上涨还是下跌,如果像最近的下跌行情,几天前HP发放时可能值1$,现在值不到0.5$了,岂不是亏啦?

当然,如果币价上涨,那将是另外一个故事了。当时不管涨跌,事情都应该按他设置的样子来才对。那么到底应该像我设想的那样去改hived代码?还是该设置有误的DAPP去调整呢?好像后者更现实一些。

image.png
(图源 :pixabay)

已经和相关的DAPP负责人说了这个事,希望他那边能推动尽快修复吧。


有关奖励发放以及percent_hbd具体如何起作用,请参考:database::cashout_comment_helper以及database::create_hbd,这里就不再赘述了。

Sort:  

Your content has been voted as a part of Encouragement program. Keep up the good work!

Use Ecency daily to boost your growth on platform!

Support Ecency
Vote for new Proposal
Delegate HP and earn more

muy bueno todo de pana excelente me gusto mucho esa explicación c

谢谢O哥。终于知道咋回事啦。