RC系统解密之最大MANA(max_mana) / 如何提升

in #steemdev6 years ago

想必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

参考链接

Sort:  

感謝o哥的解說。我初步看sp有三位數字,就和沒有限制錯不多。

Posted using Partiko iOS

Thank you for using @sleepagent bid bot serves.
This post has received a 100 % upvote from @sleepagent.

谢谢O哥~ 你知道rc的恢复速度是怎么计算了吗?感觉不是线性的

应该是和之前的BANDWIDTH以及Voting Power类似的算法
回头我确认一下

的确,这几天我弄个小号玩机器人,玩了几下RC不够用了。

什么时候这RC能代理能买卖?

自己玩的话,代理SP就好啦:)

感谢O哥"刻苦"学习为我们分析RC系统。感觉我还是没有听明白,呵呵。

哈哈,是我讲得不好😳

好好了解了, 但解決的方法不容易...

两个字:
充钱

我記得我有加上充錢這句,但好像沒上傳😂

Posted using Partiko iOS

干货满满!

Posted using Partiko Android

过奖啦:)

辛苦了! 👍 谢谢分享!

这个 RC 是防止垃圾泛滥的,但也限制了大家在Steem平台上的交互体验。一日一文,多次点赞是没问题,但是,发读文阅评就它就猛吃 RC。😢

good job

Coin Marketplace

STEEM 0.26
TRX 0.11
JST 0.033
BTC 64507.66
ETH 3080.07
USDT 1.00
SBD 3.85