将偷懒进行到底:简单修改使用beem的claim_account功能

Words
608
Reading
3 min
Listen
Play
7y

很早之前,在机器上放了个申领账户(claim_account)的脚本,使用的是beem这个python库,申领账户可以理解成使用闲余RC资源免费领门票,等有需要的时候就可以用门票注册账户。


(图源 :pixabay)

STEEM分叉成HIVE和STEEM后,我这个申领账户的脚本就罢工了,最近一直瞎忙,也懒得去看哪里的问题。

AssetDoesNotExistsException

昨晚抽出时间检查一下,原来是beem提示AssetDoesNotExistsException异常,详情如下:

beem.exceptions.AssetDoesNotExistsException: HIVE chain_assets:[{'asset': '@@000000013', 'symbol': 'SBD', 'precision': 3, 'id': 0}, {'asset': '@@000000021', 'symbol': 'STEEM', 'precision': 3, 'id': 1}, {'asset': '@@000000037', 'symbol': 'VESTS', 'precision': 6, 'id': 2}]

这种情况,有两个办法,一种是去更新beem库。holger80@holger80 (beem创建者)已经更新了beem库,让其支持STEEM和HIVE两条链;另一种方式就是去在原来的代码上进行修改,使其可以工作。

对我而言,我只是使用其中一个claim_account功能,我觉得修改代码让这个功能可以工作,相对来讲,应该会简单一些,那就试试喽。

首先,针对AssetDoesNotExistsException,这个其实和steem-python中的如下问题类似:

AssertionError: The chain you are connecting to is not supported

我了解一下,针对这个问题,beem有两种方案,一种是在beemgraphenebase/chains.py的known_chains中加入HIVE chain信息,另一种是使用custom_chains ,而后者无需改动库代码。

所以我在我脚本中加入如下信息:

custom_chains = {
    'HIVE': dict(
        chain_assets=[
            dict(asset='@@000000013', id=0, precision=3, symbol='HBD'),
            dict(asset='@@000000021', id=1, precision=3, symbol='HIVE'),
            dict(asset='@@000000037', id=2, precision=6, symbol='VESTS')
        ],
        chain_id="0" * int(256 / 4), min_version='0.23.0', prefix='STM'
    )
}

然后将如下代码:

steem = Steem()

修改为:

steem = Steem(custom_chains =custom_chains )

再次执行代码,上述错误不见啦。

MissingRequiredActiveAuthority

原以为这么一改就OK了,虽知道按下了葫芦起了瓢,执行一下脚本,又出现了新的错误。

beemapi.exceptions.RPCError: missing required active authority:Missing Active Authority oflyhigh

是不是有点面熟,这和我在steem-python遇到的错误完全一样嘛:

missing required active authority:Missing Active Authority oflyhigh

那修改的思路也有了,这次我采取点粗暴的方式,在beembase/operations.py中,将class Claim_account(GrapheneObject)的内容做如下修改:

image.png

再去测试,一切OK,又可以愉快地领账号啦:

image.png

账号账号,快到碗里来:

image.png

总结

没用重新安装库,库代码中只改动了一行,脚本中加一点配置,beem就可以工作啦。holger80@holger80 的这个库真是了不起。

当然了,不懒的话,还是推荐大家更新库,毕竟beem里边改动的更多,会更加完善一些。

相关链接

将偷懒进行到底:简单修改使用beem的claim_account功能 | Ecency