每天进步一点点:有趣的claim_reward_balance

忘记从哪次硬分叉开始,文章/点赞收益不直接发放了,而是进入到一个叫做reward_***_ balance的池子,然后需要用户自己申领(claim)一下,才会到达账户余额中。


(图源 :pixabay)

以我的账户为例,当前这个池子的余额如下:

Reveal spoiler

image.png

尽管你领或者不领,钱都在那里,不会少(随着文章/点赞收益等发放只会变多),但是感觉还是回到账户里更好一些,况且HIVE POWER越多,点赞收益越高,颇有些复利效应呢,所以收取收益还是很重要的。

收取收益使用的是claim_reward_balance,我定义个简单如下操作模板:

>op = ['claim_reward_balance',{
    'account': '',
    'reward_sbd': '',
    'reward_steem': '',
    'reward_vests': '',
  }]

程序中部分代码如下:

op[1]['account'] = "oflyhigh"
op[1]['reward_steem'] = "0.000 HIVE"
op[1]['reward_sbd'] = "0.000 HBD"
op[1]['reward_vests'] = "0.000001 VESTS"

然后追加操作并签名广播:

trx.append_op(op)
trx.sign_digest(wif)
ret = trx.broadcast()

成功广播的transaction大致长成这样:

{'expiration': '2020-04-26T02:43:43',
 'operations': [['claim_reward_balance',
                 {'account': 'oflyhigh',
                  'reward_sbd': '0.000 HBD',
                  'reward_steem': '0.000 HIVE',
                  'reward_vests': '0.000001 VESTS'}]],
 'ref_block_num': 5502,
 'ref_block_prefix': 4148586632,
 'signatures': ['20288535518661dd5ce376a812436a630d546d12b01333a64b0d9837155b4c102a0818f55cd99e72725889e1501d2251d24f55a11216eebadde9ffcee91943b537']}

https://hiveblocks.com/上可以查看成功的记录:

Reveal spoiler

image.png

为什么是0 HP呢,因为我收取的太少,显示上被四舍五入了。

好了,这看起来并没有什么呀?为什么标题要叫:有趣的claim_reward_balance,标题党嘛?当然不是,你难道没有发现,其实收益是可以只收取部分的,是不是很好玩?

所有的都设置为零是否可以呢?我试了一下,出现如下提示:

('Assert Exception:reward_steem.amount > 0 || reward_sbd.amount > 0 || '
'reward_vests.amount > 0: Must claim something.')

就是可以少收,但是不难一点不收,那不是扯蛋呢嘛,哈哈。

那么收取全部收益是如何实现的呢?答案很简单,先读取账户信息,然后获取待收取的资产,然后一起收取就好了,思路就是这样了,实现也很简单,就不贴代码了。

怎么样,是不是很好玩?

Sort:  

I have picked your post for my daily hive voting initiative, Keep it up and Hive On!!