HBD的供应量占比是如何计算出来的 & HF24时被我忽略掉的变化

最近HIVE上的小伙伴可能被文章奖励中的HBD发放情况给整懵了(话说你们明白这是啥意思不?),除了雷打不动的HP外,之前一段时间发放的全是HBD,然后又是HBD+HIVE,然后又是纯HIVE,现在又回到全是HBD的情况啦。

<p dir="auto"><img src="https://images.hive.blog/DQmesAB6qyH5t4zdnQQXMrLLQAzn8jSWAKSFL8chUa3wnsi/image.png" alt="image.png" /><br /> (图源 :<a href="https://pixabay.com/" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">pixabay) <p dir="auto">其实这些都是系统自我调节的啦,把我之前文章中的部分内容拿来直接用: <blockquote> <p dir="auto">HBD供应量控制在9%-10%之间,如果低于9%,那么文章奖励的流动性部分就100%发HBD(亦即HBD+HP),如果超过10%,那么就停发HBD(亦即HIVE+HP),9%-10%之间呢,则按线性比例发放。 <p dir="auto">最终这个供应量占比计算出来一个发放比例,也就是:<code>HBD_PRINT_RATE,上节我们详细介绍过它,这里我们不过多介绍了,现在一个新问题是HBD的供应量占比是如何计算出来的? <p dir="auto">其实单纯从字面意思,不看代码,我们也不难分析出来这个占比如何计算,无外乎<strong><em>HBD的资产比上系统的总资产。而系统的总资产其实有三个部分: <blockquote> <ul> <li>总的HP <li>总的HIVE <li>以及总的HBD <p dir="auto">其中总的HP+HIVE,系统中使用<code>current_supply来记录,总的HBD,系统中使用<code>current_sbd_supply,要计算比例的话,需要先把HBD资产的价值换算成HIVE,这可以通过<code>median_price来计算。 <p dir="auto">我们可以使用<code>get_dynamic_global_properties来获取<code>current_supply以及<code>current_hbd_supply,可以用<code>get_current_median_history_price来获取<code>median_price,这样就可以计算出总资产了,也就不难计算出占比了。 <p dir="auto">而这个总资产,其实系统中是有一个参数一直记录了,同样可以通过<code>get_dynamic_global_properties获取,它叫做:<code>virtual_supply。 <p dir="auto">也就是说,我们可以通过计算的方式获得<code>virtual_supply也可以直接获取<code>virtual_supply,然后用折算成等值HIVE的总HBD资产去计算比值,就可以得出供应量占比啦。 <p dir="auto">比如我撰写本稿时,使用代码读取以及计算出上述数值: <blockquote> <p dir="auto"><code>median_price: 0.644<br /> <code>current_supply: 357643553.419<br /> <code>current_hbd_supply: 28404073.896<br /> <code>virtual_supply_read: 401749258.226<br /> <code>virtual_supply_cal: 401749258.2264534 <p dir="auto">对照上述数值以及命令行钱包读取出来的数值,完全一致,说明读取还是计算都没问题。 <p dir="auto">然而用上述数值计算出来的占比以及<code>HBD_PRINT_RATE却与系统提供的数值大相径庭,问题出在哪里呢?查看<code>database.cpp的内容,我发现如下函数: <details><summary>Reveal spoiler<p dir="auto"><img src="https://images.hive.blog/DQmSRf3kaUmYXn3gtjyN8MovvL7nTSBos1aAScZ3KX7hhqa/image.png" alt="image.png" /> <p dir="auto">从这个函数的名字<code>database::calculate_HBD_percent不难看出它用来计算HBD占比的,然而和我的逻辑不同,这其中增加了红框部分代码。 <p dir="auto">也就是说<strong><em>HF24之后,计算HBD占比时,把国库(翻译成基金会更好一些?)中HBD减除掉了。而在HIVE中,国库账户为: <blockquote> <p dir="auto"><code>#define NEW_HIVE_TREASURY_ACCOUNT "hive.fund" <p dir="auto">所以我的代码中也要按这个逻辑处理才行,我直接使用<code>get_accounts读取 "hive.fund"这个账户中的HBD余额(<code>hbd_balance),并将其从<code>current_sbd_supply减除掉。 <p dir="auto">然后用更新后的<code>current_sbd_supply以及<code>current_supply以及<code>median_price来计算<code>virtual_supply并计算占比。 <p dir="auto">这次得到的结果就正常啦: <details><summary>Reveal spoiler<p dir="auto"><img src="https://images.hive.blog/DQmR8iCasXUBLwKTpoRE14wumYserZorjVnQ5nU2MUJpKXn/image.png" alt="image.png" /> <p dir="auto">而阅读一下HIVE v1.24.2(HF24)的Release log中会发现这样一条内容: <blockquote> <p dir="auto">The HBD in the decentralized hive fund doesn't count towards the debt ratio <p dir="auto"><img src="https://images.hive.blog/DQmXXkLLPBV3YHS4zYbHZMw6LEqAc5cGKfhswDQZ6NWg1UH/image.png" alt="image.png" /><br /> (图源 :<a href="https://pixabay.com/" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">pixabay) <p dir="auto">而v1.24.2的发布日期是2020年10月份,也就是说足足过了一整年我才发觉这个变化,惭愧呀! <h1>相关链接 <ul> <li><a href="https://gitlab.syncad.com/hive/hive/-/releases/v1.24.2" target="_blank" rel="noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">v1.24.2 <li><a href="https://hive.blog/hive-105017/@oflyhigh/6xm54s-hive">写给新人的说明:文章奖励中出现了HIVE,是怎么一回事?
Sort:  

都是香香的,我都喜欢!

完全看不懂呀!😄