大概在北京时间上午八九点钟的时候,有朋友问我STEEMIT网站怎么访问不了啦?一看是熟悉的504 gateway time-out错误,我就放心了,因为STEEMIT站点抽风不是一次两次的事情了,有时候是因为DDOS、有时候是官网节点升级、有时候是JUSSI缓存出错,我已经见怪不怪了。
(图源 :pixabay)
STEEM停止出块
然后过了好长一段时间,STEEMIT还没有好,并且BUSY啊、DLive啊、DTube啊通通都访问不了啦,我执行一下我在本地机器上的测试脚本,测试了几个公共节点,STEEMIT官方的以及几个非官方的通通都挂了。
这时候我也没太担心,因为节点挂了,还有节点没挂嘛,说明STEEM区块链没问题。然而我使用一个没挂的节点执行了一下get_dynamic_global_properties
发现了一个很严重的问题,steem的最新区块还停留在几个小时前。当时读回的数据是这样的
'head_block_number': 23847548,
'last_irreversible_block_num': 23847529,
'time': '2018-07-03T00:47:00',
而我执行上述操作的时间是在北京时间11:50,也就是说STEEM区块链近三个小时没有新的区块产生了😱。有时候我们读带JUSSI的节点因为缓存的问题,也可能出现类似的情况,但是我确定当前访问的这个节点没加JUSSI,我换了另外一个节点,得到的结果一样,于是我得出一个吓人的结论:STEEM区块链卡壳了。
于是我登陆https://steem.chat 进入见证人频道,一看大家果然在讨论这个问题,并且看到了官网的公告信息:
The dev team is aware of the current issues and is working on a patch that will be rolled out to witness nodes. The chain has not forked and no funds are at risk.
为了让大家安心,我在公众号STEEMIT上发布了一条群发消息:
(可惜每天只能群发一条信息,哈哈)
开发人员&见证人定位并解决问题
大约在北京时间下午一点左右:
STEEMIT开发人员在Github上提交了修改
感兴趣的可以去看一下这个修改
这个账户出名喽,他干啥操作了?
https://github.com/steemit/steem/commit/ecb2a90e9e2268e40916eb5bc57fde07aade5260
简单地说,相当于从银行取负的一百万,你去银行和柜员说我要取款负的一百万,好一点的柜员会你说:滚,厉害点的柜员就会直接打精神病院的电话,让他们来抓你了。
但是遗憾的是STEEM区块链还真就去做这个操作了,然后发现操作不明白啦,就傻眼了,然后就卡住了(具体细节我也没研究啊)
STEEMIT的开发人员很快定位并解决了BUG,并发布了Steem 0.19.5,简单地说重置那个人的操作并且在代码上做对应的检查防止再次发生类似操作。但是光STEEMIT自己更新代码没有用啊,需要绝大多说见证人都更新到新版本才可以。
这时候我们STEEM见证人是多么负责任就提现出来啦,Steem 0.19.5版本发布没多久,大部分见证人就都已经完成了更新,比如说我们中文区的见证人 @abit 。
然后的事情就简单了,STEEM区块链开始出块,大家发现STEEMIT、BUSY等各种网站都正常了,大家又可以愉快地玩耍了。
简单总结
- 有人试图Power down 负的VESTS
- STEEM代码没对此进行检查导致STEEM区块链停止出块
- STEEMIT官方及时定位问题并发布了补丁
- 见证人们及时地打了补丁
- STEEM区块链开始正常出块,大家又可以愉快玩耍
补充一下微信公众号的二维码,感兴趣的朋友可以关注一下
图看不到啊
原来如此,这说明这条链也出现了故障了。代码还是不完美?或者说过于中心化?要达到BTC那条链那样稳固还需要时日。
看来以后攻城狮们还要有点反人类的思维!
这个修改(确切说是补丁)直接把 ID写进代码里,估计这人真的要出名了。
有点好奇的是,如果其他ID也这么操作,是不是会再次卡壳啊?
不会的,还有其它几处修改,这个带名字的修改是用于 见证人replay 过程的,这个是已经发生的,所以写名字。在
libraries/chain/steem_evaluator.cpp
的改动就是用于即将发生的检查:原来如此,恍然大悟
先謝謝團隊的反應, 見證人也是. 但未來還會有類似的狀況嗎? 這些不合理的操作?
原來如此,沒想到代碼竟然會犯這種錯。。
話說這應該是少數淺顯易懂的版本升級了!
哈哈哈让人有点哭笑不得啊!
Posted using Partiko Android
steem 应该感谢那个账号啊,发点奖金什么的,发现这么大的问题。
这个我非常赞同。
哈哈
19.5? 好像才5天前见到说HF20和19.4.
19.5是19.3的打补丁版
纯粹好奇那个人取了负的VEST的结果是什么?
系統就掛啦,不是嗎?可能都沒回傳結果了吧....
对哦 笨问题
我本来想如果系统允许,Power Down负的难道会得到正的吗。。。
我说昨天怎么什么都上不去了,谢谢你这么详细的解释。那个用户好像被系统删除了?他/她的页面没有了
再次见证了世界上没有完美的代码,哈哈
每每发生这种事情,都是涨知识的机会。
原来是这样
我說你整天寫程序帖,怎摸沒給你搞出點名堂啦?看看人家一出名就天下知哪!歷史留名哪!
算了算了,讓我教你一招:Power Down數字改用中文,保證系統又會掛了....
mayday mayday .... blockchain crash
你以为我没试过?然后就挨打了~~
被打還沒出名,你這混的不咋地道.....
负的power down……他是想要负负得正吗 =w=
太创意的思维果然不是人人都有的啊。
解释但非常生动:
这个bug也是够有意思,看来测试用例里 对于这条没有写好极限值。
刚才我的还出现了不能点赞和评论的问题!现在好了!
博主也辛苦了!🙏
哈哈哈哈,码农们会心一笑!
原来一个人的操作竟然可以造成那么大的全网瘫痪…以前是想都不敢想的
Hello, excellent publication, I invite you to know my blog, as well as those who have been able to read my comment, in it you will find interesting publications about my work waiting for you to like it. Greetings.