分享时间:2019年5月19日晚8点-10点 分享嘉宾:TsiMing Ho

Amy:欢迎加入比特币学习群,参加由捐赠者徐锴、联通集团(用阿里云,联通集团免费帮你砍价15%—30%,咨询微信:sxm125125)、比特币车友会、hiblockchain.io赞助的比特币(BSV)学习会。近期BCH的升级闹剧传遍币圈,接下来由TsiMing Ho为大家分享《BCH升级闹剧,以及BSV的路线优势》,对这次闹剧以及BSV的路线优势进行详细的讲述。TsiMing Ho 是太阳谷之后另一名知乎大神,在知乎上分享了一系列BSV的雄文,现就职于日本某初创区块链公司担任后端开发。

TsiMing Ho :

15日晚间bch如约进行升级,区块链的升级是公开的,人人都可以见证,bch也就在众目睽睽之下,搞出一个又一个的笑话,这些行为充分体现了什么叫做POW联盟链,也充分体现了abc的开发团队是如何将区块链这个网络系统当做玩具来玩耍。也为所有人上了一堂生动的实践课,对于价值系统,协议稳定,限制底层开发者权力的bsv路线才是终极解决方案。

当晚本人从头至尾见证了这一闹剧,从升级开始,然后由于特殊交易触发了bug,导致所有矿池打包的交易都无法广播,整个网络卡住近一小时,然后大陆系的算力连出十几个空快争取补丁,就在补丁还没有安装好的时候,bch被一个修复了bug的匿名矿池fake unknown打出了块,这个块搜刮了大量sw地址里的币,然后这个块被大陆系算力重组并回滚了部分交易。之后补丁上线,内存池中所有特殊交易都被清除,bch逃过一劫。

我们就详细解析一下这次升级,分析为何每次bch升级都像一次紧急作战一样,以后是否还会出现类似的攻击,bch存在哪些隐患,以及为什么bsv稳定协议如此重要。另外,针对很多朋友一直困惑的sw地址恢复这个问题,进行一下说明。

经过详解

bug触发

就在看似风平浪静的升级背后,一个阴谋正在酝酿,就在bcher弹冠相庆,准备庆祝安全升级的时候,bch却久久无法出块。高度卡在582681,持续近1小时没有出块。起初大家以为是运气值的问题,直到骷髅群友yqh发消息说bch的客户端出现大量异常日志,日志只显示一个信息,too many sign ops。

我们知道,在去年11月的bch分叉之争中,双方争论的两个重点,一个是交易的排序方式ctor(这个东西限制了并行交易验证,同时也很难实现unwriter的新型数据库,新纪元。这个问题以后专门写文章讨论),另一个就是新操作码dsv。dsv与其他的操作不同的一点是,它是一个运算量非常大的操作码,虽然和一些简单操作码占据相同的体积,收取相同的费用,却包含了大量的签名校验操作,要校验这个操作码,所有的客户端都要去投入大量的运算力去计算这个。如果有矿工打包了具备大量这种操作码的区块,那直接的后果就是瘫痪所有网络节点。

abc开发者当然考虑到这个问题,因此在代码里硬编码了一个机制,就是一笔交易的sigop(签名操作脚本)上限是20000。

这里我们看一下abc的路线的一个矛盾点,由于bch什么都想向代码里抄,所以引进dsv这样的特殊操作码,但是为了引进这个,又需要引入一个硬编码的上限20000。我们深受其害的扩容之争就来自一个硬编码的区块大小上限,而现在bch又添加了一个这样的操作码上限,带来的直接后果就是,如果真的像bch希望的那样,有很多应用来使用这个操作,然后有些复杂应用就无法突破这个操作上限,到那时又需要寄希望于abc的开发团队来“扩容”,如果跟比特大陆关系好,那好办,按照这次打补丁的效率,2小时给你全网升级,如果关系不好,就是不给你开放这个上限,那就必然又会重蹈当年扩容之争的覆辙,而这次abc和当年的core是一副嘴脸。bch是不屈服core的霸权而产生的,结果内部却滋生了另一个core,真是嘲讽。所以abc的矛盾点就在于,想快速迭代,就必须开发者集权,而使用者就必须屈从于开发者,也就是必须屈从于比特大陆及其联盟,bch也就必然演化成一个联盟链,我这里大胆预测,bch未来必然会滑向pos以及变种的pos,因为这是最适合联盟链的工作方式。

回到我们的这次bug,abc的开发者为了炫技增加的dsv,不料留下了技术负债。有攻击者发现了一个0day(未公开)的bug,简单来说就是矿池在计算sigops的个数时,会将sigops错误地计算为0,而客户端在校验区块的时候会正确计算。因此攻击的交易中有大量Check Data Sig这样的操作码,刚好超过客户端接受的上限,这个bug的影响就是运行abc节点的矿池在打包交易时认为那些超过操作码个数的交易是合法的,而abc的客户端却认为这些交易不合法,因此客户端接收到矿池发来的新区块之后,校验交易时就会出现开头说的too many sigops的问题,也就会拒绝矿池的区块。而矿池不知道发生了什么,还在打包这样的交易,也就出现了后面abc矿池和abc客户端相互掣肘,互相锁死对方的搞笑场面。

而这个bug产生之后,abc方面集体沉默,就轻描淡写的写道有人攻击bch,却没有一篇像样的分析来反思一下这个bug。反倒是bsv的技术群对这个问题很是重视,第一时间开始讨论和排查问题,然后很快一位不愿意透露姓名的刘先生就写出了一份完整而专业的bug分析和报告。说明了一点,bsv社区才是真正关心技术发展,真正关心比特币应用落地的社区,和一些只会操盘,只会写一些入门读物来忽悠韭菜炒作的项目有天壤之别。这里贴上链接,向大神致敬。

BCH升级攻击分析

注:剩下更多重点内容(约全文的三分之二)请点击下面的bsv链上完全版。链上详细解析完全版​www.bitpaste.app(Amy:想阅读完整文章、请点击链接看链上版本,按要求注册moneybutton支付bsv即可阅读,丝般顺滑的
moneybutton ,你值得拥有!)

这里我解释一下,为什么使用这种paywall的方式,来隐藏部分内容,并使用付费阅读的模式。有很多方面的考虑。希望大家理解。

首先因为这篇文章是分享给amy的bsv学习群使用的,因此需要保证学习群可以获得独家一手且完整的内容,这样可以激励更多希望了解bsv的新人加入学习群。

其次,编写这些文章需要消耗我大量的休息时间来收集资料,组织文章,设置1块钱的门槛虽然不多,但是也算是对作者辛勤劳动的一点点鼓励(如果按照时薪算的话,我投入在这些文章里的成本非常的巨大)。

再次,我更加希望那些真正愿意了解和尝试bsv优势的朋友来阅读,如果你真的对bsv有强烈的兴趣,那我真诚地推荐你去注册一个money button,向里面汇一点bsv,然后亲身体验一下bsv带来的优质的用户体验,和上面可以实现的应用。我相信,真正对bsv感兴趣的朋友会去体验一下这个优秀的项目的。我也不希望一些无脑黑和喷子来获得这些信息,如果你不理解bsv,不支持bsv,i have no time to convince you。

最后我希望大家更多地把bsv当成现金用起来,只有bsv真正投入使用才能创造更大的价值,1块钱的小额支付其实对我无关痛痒,流动起来的钱才是钱,我希望用自己的努力,去给bsv创造更多的交易量,同时创造更多的价值,只有大家都尝试使用bsv的应用,才能让这些应用更好地发展下去,谢谢大家的支持。

发表评论

电子邮件地址不会被公开。