想必STEEM HF20以来最让人又爱又憎的东西莫过于RC系统了(Resource Credit System),爱它是因为它的引进会防止STEEM网络被滥用,为STEEM的可持续发展铺平道路;恨它是因为它曾给我们很多人带来困扰,尤其是对于一个SP小户而言,这个困扰可能至今尚未消除。
(图源 :pexels.com)
为了搞明白RC系统到底是啥玩意,我准备去刻苦学习一下,请不要鄙视我用刻苦这个词,因为对于一个半吊子程序员,要搞明白这个复杂系统的那怕一小小丁点功能,其实也是很困难的。
闲话少叙,之前STEEM的带宽系统(bandwidth)中,用户有一个可用带宽概念,简单来讲,就是对于某个用户而言系统中有多少带宽可以被使用。在RC系统中也有一个类似的概念,它的名字叫做max_mana
。
以我的账户 @oflyhigh 为例,可以在steemd.com中查询到如下内容:
其中
max_mana 164,858,794,024,586
看起来好长一串数字(是不是代表我有好多资源可用😀),那么这个max_mana
是如何计算出来的呢?
通过阅读代码,我发现max_mana
使用如下代码获取:
mbparams.max_mana = get_maximum_rc( account, rc_account );
而get_maximum_rc
的代码如下:
从中我们不难看出max_mana的计算规则
:
- 当前用户持有的vesting_shares
- 减去用户代理出去的vesting_shares
- 加上用户收到的vesting_shares代理
- 加上
max_rc_creation_adjustment
- 减去下次Powerdown要变现的vesting_shares
其它几项都好理解,但是max_rc_creation_adjustment
这个是什么鬼?通过阅读代码我们不难发现,这个值是在创建RC账户时就被确定的了create_rc_account
在create_rc_account
的实现中
通过上述分析,不难得出结论,max_rc_creation_adjustment
就是注册RC账户时注册费(STEEM形式)按当时状况计算的vesting_shares
。(这个也解释了为何有的用户持有0SP,但是RC还不少,因为注册费高呀)
所以max_mana的计算规则
简单来讲就是:
用户vests - 代理出去的vests + 收到代理的vests + 注册费vests + 下次power down vests
(图源 :pexels.com)
所以如果RC不够用,如何提升max_mana
的方法就显而易见了(当然了,你RC够用就随便喽)
- Power up SP
- 减少对外代理
- 避免Power Down
参考链接
This page is synchronized from the post: RC系统解密之最大MANA(max_mana) / 如何提升