从币安想回滚被盗BTC交易,谈比特币如何从代码上确保 “不可篡改性”
1、赵长鹏所称的,可能回滚(rollback)BTC交易来挽回币安所丢的7000BTC一事(直播视频(带中文字幕))引起很大争议。
2、此回滚在技术上可行:只要有超过51%算力,在盗币交易区块前,重新开始挖一个分叉,并且只剔除掉那笔被盗交易(和后续交易),正常打包原链上的其它交易,那在新分叉长度超过原来被盗链后,就会发生区块重组(reorg)。
重组(reorg)可以简单理解为:新分叉覆盖了原被盗链,效果是:在不影响其它交易的情况下,单独回滚那一笔盗币交易。
3、此回滚遭到社区成员激烈反对(我也反对),因为这改变了比特币最重要的特性:不可篡改性。但也有人开始进一步考虑:
@潘志彪kevin:
1. 如果丢币的是某国政府,甚至FBI这样的机构呢?如果该机构要求各家矿池,无论公司或个人,进行算力重组会发生什么?
2. 如果盗币的是全球知名恐怖组织呢?假设他们拿着7K的币去买核弹呢?
潘志彪给出的回答(相关微博)是:运行全节点,然后在重组(reorg)发生前,主动打全节点补丁(UASF),该补丁可以强行认可被盗交易,使得高度即使胜出的重组链,也无法重写现有的数据。
4、潘志彪的回答行不通,按他的做法,并不能阻止BTC交易被修改,只是通过主动打补丁,分叉出一条交易没有被修改的分叉链而已。
如果政府合乎法律地要求矿池(大部分为公司运营)单独回滚某笔盗币交易,那矿池只能照做。回滚了这一笔交易,短时间也不会产生多大直接影响,可以预计回滚后的分支,还是会占据大部分市值、用户、资源。
按潘志彪的流程,仅仅是少数人(有能力在短时间注意到事件,并打全节点补丁)保留了一条未被修改的链,最后可能会形成类似ETH(回滚了DAO盗币) & ETC(保留了DAO盗币)这样的双链。
5、那么,如果认为比特币的 “不可篡改性” 非常重要,那应该怎么做?很简单,不允许深度重组(reorg)就可以了。比特币历史上除了BUG,从未发生过6区块以上的重组(reorg),用户也普遍认为6确认为安全,因此可以直接在代码里写:不接受10区块以上的重组(reorg)。
6、是不是很眼熟?没错,这就是BCH在和BSV算力战期间,增加的保护规则(滚动检查点)。如果盗币发生在BCH上,那就根本不会有这样的争执,因为BCH一旦10确认以上,就绝对不可回滚——注意是绝对,哪怕你多100倍算力挖分叉也没用,代码不接受10区块以上的重组(reorg)。
这不就是像潘志彪这样的BTC(Core)支持者,梦寐以求而不得的 “不可篡改性” 吗?:)
7、滚动检查点这一保护规则,直接确保了BCH就算是小算力链,也不怕算力攻击,交易所也普遍降低了对BCH确认数的要求,使得BCH更好用。
然后BSV支持者就气疯了,开始胡扯一些 “滚动检查点 防止了矿工自由竞争” 之类的歪理邪说。对于这些胡扯,只要一句话就能噎死:为什么要允许逆转6区块确认?
历史上发生过正常的6区块回滚吗?连3区块都几乎没有吧。(除了BSV瞎搞巨块,自己日了自己的那次6区块回滚外:)
6区块回滚就是攻击,为什么要允许攻击的发生?
8、从这件事,就可以看出BCH的路线:渐进演化、务实主义、用户数至上。
问题:“不可篡改性” 有风险?(有人要攻击?有人被盗币想回滚交易?)
解决:增加规则,禁止10区块以上深度重组,确保10确认绝对安全。
9、顺便说一下,中本聪也是典型的务实主义,在比特币还很弱小时,不和维基解密纠缠在一起(中本聪说服维基解密的创始人阿桑奇,不使用比特币捐助),确保比特币的存活,而不是挑衅美国政府:我就给维基解密捐款了,有本事来封我啊。
相比之下,BSV社区邪教气质四射:
币安你不下架我,你就是孙子!
是币安需要BSV,而不是BSV需要币安
然后还恬不知耻地声称是中本聪思想的继承者,真是令人汗颜。