今天, 不小心给一些YY股东发了两篇利息, 比如 @angerlina6688 美女,
24 minutes ago Transfer 0.009 SBD to angelina6688 Thank you for supporting @justyy ! Your 70.02 SP gives you daily interests of 0.009 SBD (5% APR) - (2017-12-29): 1 STEEM = 3.233 SBD 24 minutes ago Transfer 0.009 SBD to angelina6688 Thank you for supporting @justyy ! Your 70.02 SP gives you daily interests of 0.009 SBD (5% APR) - (2017-12-29): 1 STEEM = 3.233 SBD
就算行长给大家的新年礼物!
原因
每天利息都是用 crontab 定时在凌晨00:02分的时候用程序自动发的(然后会在 01:02, 02:02 … 每天前6个小时内再次检查补发), 已经很好的运行101天了, 以下是从日表得到的数据:
YY银行一共运行了: 101 天. YY银行一共有: 107 位股东(包括已经离开的). YY银行一共支付了: 222.28 SBD 的利息. 平均每天YY银行需支付: 2.20 SBD 的利息. 平均每周YY银行需支付: 15.41 SBD 的利息. 平均每月YY银行需支付: 66.02 SBD 的利息.
今天发两次的情况说来也真是有意思:
- 我记错时间了, 当00:01的时候我发现利息没有发出, 我以为程序挂掉了, 其实程序还没开始跑呢.
- 于是我在00:01将近00:02的时候手动跑程序发利息.
- 结果在00:02分的时候有一段时间两个同样的程序都在发利息, 所以有一部分是重复发的.
怎么样判断已经发过了?
我用了以下两个技巧:
- STEEMSQL 查询, 但是SteemSQL 会有8分钟的延时(每8分钟 SteemSQL 从区块链上取数据更新缓存)
- 本地文件做记号, 大概代码是:
1 2 3 4 5 6 7
fname = id + "_" + today + ".txt" if os.path.isfile(fname): print("transferred today already.") else: if steem.transfer(id, amount=x, asset='SBD', memo=interest, account='justyy') != None: print("transfered!") touch(fname)
fname = id + "_" + today + ".txt" if os.path.isfile(fname): print("transferred today already.") else: if steem.transfer(id, amount=x, asset='SBD', memo=interest, account='justyy') != None: print("transfered!") touch(fname)
两个程序都会先发完才做标记, 碰巧发利息的时候 steem.transfer 是比较耗时的(需要广播到STEEM区块链上), 所以两个程序就发了两次.
当然可以把 touch(fname) 做标记移到 steem.transfer 前, 也就是先标记, 然后再去发, 不过以前试过, 一旦标记上但是偶尔发不成功的话, 那么在1:02, 2:02 等第二次第三次机会发利息就会以为已经发成功了.
这次就算YY银行发糖果, 这个程序如果一个时候只跑一个的情况下鲁棒性还是挺强的, 这次分叉从实际上证明了可能存在的问题.
强烈推荐
- 英国代购-畅购英伦
- TopCashBack 返现 (英国购物必备, 积少成多, 我2年来一共得了3000多英镑)
- Quidco 返现 (也是很不错的英国返现网站, 返现率高)
- 注册就送10美元, 免费使用2个月的 DigitalOcean 云主机(性价比超高, 每月只需5美元)
- 注册就送10美元, 免费使用4个月的 Vultr 云主机(性价比超高, 每月只需2.5美元)
- 注册就送10美元, 免费使用2个月的 阿里 云主机(性价比超高, 每月只需4.5美元)
- 注册就送20美元, 免费使用4个月的 Linode 云主机(性价比超高, 每月只需5美元) (折扣码: PodCastInit2022)
- PlusNet 英国光纤(超快, 超划算! 用户名 doctorlai)
- 刷了美国运通信用卡一年得到的积分 换了 485英镑
- 注册就送50英镑 – 英国最便宜最划算的电气提供商
- 能把比特币莱特币变现的银行卡! 不需要手续费就可以把虚拟货币法币兑换
微信公众号: 小赖子的英国生活和资讯 JustYYUK