[闲聊] Deep Reorg Protection 似乎无法自圆其说

楼主: kugwa (kugwa)   2019-06-08 17:44:46
其实以前就听过这个机制,只是因为一直想不通为什么需要,也找不到比较正式的文件,所以就不敢确定是否有区块链真的采用。
而不久前听说BCH原来有实作这个机制,就觉得还是要深究一下。
Deep Reorg跟普通Reorg没什么两样,只是分支点是在一个有点久以前的区块,
而Deep Reorg Protection就是故意不去理会从久远区块长出的新分支,即使这个新分支变成最长的。
以BCH来说,最新区块往回数10个,比这更老的区块长出的分支都会被忽略掉。
据我所知,Deep Reorg Protection的目的是防止51%攻击。论点主张,正常Reorg的深度通常只有1顶多2,
从10个之前的区块突然长出的分支,那一定是恶意发起企图篡改区块链用的。
但这个说法应无法自圆其说,理由如下。
假设51%攻击真的发生,出现了Deep Reorg的情境,而实作Deep Reorg Protection的节点则是故意不去Reorg。
考虑事发之后才上线的节点,他们无从判断那个分支在发生的当下到底是深还是浅。
如果新上线的节点听信“长的分支是Deep Reorg来的”,而选择了短的那条,也就是原本就是主链的那条,
那么任何一个人都可以自己随意开一个很短的分支,然后宣称
“我这条才是王道!原本比我长的其实都是Deep Reorg来的!”
来欺骗新上线的节点,没有方法可以分辨到底谁说的才是对的。
又如果新上线的节点直接选了最长的那条,那么Deep Reorg Protection就变得毫无意义了,因为新上线的节点并不配合。
如果用“这样也只能骗骗新上线节点而已,很多矿工都是不停机的”来反驳,
那就把51%攻击改成从深度9的区块(临界被判定为Deep Reorg的深度)来长出新的分支,
并且在这个区块即将变成深度10的时候把长链广播出去,由于网络延迟的关系,
就会有一半的在线节点判定这是Deep Reorg而予以忽略,另一半则判定是正常Reorg而接受新的最长链,导致网络分裂。
可以发现,不可能分辨出一个Reorg到底是恶意还是自然发生的,
因为不管把判定为Deep Reorg的深度定为多少,总是能用这种方式让一些节点以为是恶意一些节点以为是正常。
总之,Deep Reorg Protection似乎是多此一举的机制。
真的发生51%攻击导致网络分裂时,对于要统一回哪个分支的决定也没有帮助。
我认为在PoW体系里,想靠最长链以外的方式决定主链,往往只会得到反效果。
就算51%攻击真的出现的话那也必须接受,毕竟世界上本来就不存在100%不可篡改的记帐神器,即使是中心化的解法亦然。
到头来,还是只有最长链才是PoW体系里最强而有力的依凭。
https://www.reddit.com/r/btc/comments/ba9z6v/satoshis_opinion_on_reorg_protection/
这个讨论串内有中本聪对51%攻击的解说。
“即使在线节点目睹了整个篡改的过程,他们还是必须将最长链视为唯一信仰。”
他对这段的说明,应能印证我的论述,也能感觉得出他应该不会认同Deep Reorg Protection。
作者: rmp4rmp4bear (天然呆)   2019-06-08 18:49:00
我也是这样想的Deep reorg感觉像是为了把其他链例如BTC, BSV搞掉的准备
作者: DarkerDuck (達克鴨)   2019-06-08 20:12:00
交易所的节点哪有可能停机,这也不是为了解决51%攻击只要是本质是PoW类型的币,就不可能"解决"51%攻击这只能算是为了交易所,所设计的一个防御机制你交易所无论如何,只要确认数设定10就一定是达到了finality因为超过高度10的reorg几乎可以保证是51%攻击既然是51%攻击,就一定是需要整个社群介入的事件
楼主: kugwa (kugwa)   2019-06-08 20:18:00
应该说deep reorg的确通常是由51%攻击造成的,但是如果51%攻击发生时强制不让区块链进行deep reorg的话,那只会造成网络分裂。
作者: DarkerDuck (達克鴨)   2019-06-08 20:18:00
总不能跟BSV一样说deep reorg是feature
楼主: kugwa (kugwa)   2019-06-08 20:19:00
抱歉我是回一楼
作者: DarkerDuck (達克鴨)   2019-06-08 20:19:00
你们交易所确认给我设定一千就不会有问题了那这样到底有哪个交易所会认真地把这个币当成一回事??而最初比特币节点还挑了6这个参数当作够安全的参数因为经过计算,超过高度6还reorg不透过51%攻击几乎不可能发生假如真的发生超过高度10的reorg,需要整个社群的介入宁可先让网络先分裂,大家决定好哪条才是非攻击链学BTC发布带有checkpoint的新节点软件出来重新回复到只有单一链的状态,问题解决而不是让交易所白白损失巨大金额
楼主: kugwa (kugwa)   2019-06-08 20:27:00
但这样不就有模糊的空间了吗到底要多深的reorg才要人为介入判断然后假如大家意见不合又怎么决定以及要听谁的
作者: DarkerDuck (達克鴨)   2019-06-08 20:29:00
就算本来Bitcoin够安全的交易也有模糊空间啊为什么要设定6,不设定60?甚至还有零确认的交易。本来就不可能有100%的安全性就算是BTC,他的所有机制的安全性都是相对安全而已至于意见不合要听谁的,可以去查整个BTC的黑历史吧在中本聪消失后,有太多太多意见不合的时候了像是为什么选择6当够安全的确认数很显然也是"假设"恶意节点占10%那选择6当确认数,可以保证只有0.1%的机率会被婊到可直接看中本聪白皮书后面的计算https://bitcoin.org/bitcoin.pdf这机率比信用卡诈欺还要低,所以被认为"可以接受"
楼主: kugwa (kugwa)   2019-06-08 20:39:00
我知道交易不可能完全finalized只是我以为user是在清楚这一点的情况下使用bitcoin51%攻击发生的时候完全必须自认倒楣没想到还有让社群来介入这招说刚刚这个51%攻击不算数感觉好赖皮
作者: DarkerDuck (達克鴨)   2019-06-08 20:41:00
也不用自认倒楣啊知道有两条高度超过10的链基本上就是跳警告不会交易了反而是这个机制让交易所受到51%攻击后不用自认倒楣而其实中本聪时代的比特币节点有所谓的紧急广播只有中本聪和少数早期开发者有广播私钥告知大家发生攻击行为或是bug,这样不就超级中心化赖皮https://en.bitcoin.it/wiki/Alert_system反而现在把这个系统移掉了真的出包了,大家只好自认倒楣可以看1032的alert message就是URGENT: chain fork, stop mining on version 0.8网络分裂啦,还直接跟你讲说哪条链不要再用再挖了
楼主: kugwa (kugwa)   2019-06-08 21:18:00
看来密码货币终究无法脱离社群的支援独自运作跟我原先以为的定位不同板大让我见识了密码货币更真实的一面checkpoint到底是不是deprecated
作者: DarkerDuck (達克鴨)   2019-06-08 21:20:00
再偷偷讲个黑历史,为什么Alert System被移除了
楼主: kugwa (kugwa)   2019-06-08 21:20:00
我看源码里还是有检查checkpoint
楼主: kugwa (kugwa)   2019-06-08 21:21:00
但bitcoin wiki说已经不用了https://en.bitcoin.it/wiki/Checkpoint_Lockin
作者: DarkerDuck (達克鴨)   2019-06-08 21:21:00
但是又不想要更动这个从中本聪时代就有的系统所以干脆移掉 XDDD,加密货币仍然脱离不了人性斗争
楼主: kugwa (kugwa)   2019-06-08 21:23:00
那Alert System这段内幕是哪里流出的
作者: DarkerDuck (達克鴨)   2019-06-08 21:24:00
这也不算内幕吧,Gavin被斗走后就有讨论要怎么解决紧急广播问题,后来讨论不出来就整个砍掉啊我查到的是Bitcoin Core节点软件从2014年4月后的更新就不再加入新的check point通常要有check point是为了硬分叉更新不要选错链但现在BTC完全没有这方面的需要了但是旧的checkpoint就留着
楼主: kugwa (kugwa)   2019-06-08 21:44:00
原来如此还有一个想问的不是有个功能是invalidateblock & reconsiderblock吗前者是手动将某个区块打上invalid的flag当然效果只是作用在本地的block index这样就可以手动让节点不要走51%攻击那条链后者则是把invalid的flag拿掉让节点根据共识规则重新判断有这功能的话也不需要刻意弄一个deep reorg protection吧
作者: DarkerDuck (達克鴨)   2019-06-08 21:57:00
那这样就变成各说各话了啊现在deep reorg protection就是设下一个共识超过高度10的reorg基本上就被判定为51%攻击这个链将是invalid,分裂的网络待后续凝聚社群共识但你的做法是每个节点自己依照自己的看法判定那交易所假如设成高度是2就是51%攻击呢?那恐怕就天下大乱了更不用说假如每个矿工都自己想设多少就是多少那恐怕BCH的区块链天天分叉,完全无法正常运作这个功能主要是用在真的有争议的攻击上譬如之前有人想要取走所有segwit地址的BCH反正这个规则很明确,攻击行为没有模糊地带但是51%攻击如你说说是很模糊的每个节点判定标准都不一致的话,那后果就是没有共识当然也就不会有单一条的区块链
楼主: kugwa (kugwa)   2019-06-10 00:13:00
我是想说 只要reorg没有深到触动社群跳出来 那就都当没事大家就都认最长的而有人跳出来质疑有51%攻击的时候 大家暂且按兵不动觉得不是攻击的人就什么都不用做觉得是攻击的 那就先用invalidateblock来忽略攻击链等大家商量好之后 社群就发个有新checkpoint的更新
作者: DarkerDuck (達克鴨)   2019-06-10 00:19:00
这样做当然是可以,反正风险就自负而已
楼主: kugwa (kugwa)   2019-06-10 00:20:00
也就是出现争议的时候才用到invalidateblock
作者: DarkerDuck (達克鴨)   2019-06-10 00:20:00
任何矿工都可以压在觉得最后会获得共识的那条炼上面PoS会有问题就是验证者可以双压,PoW矿工只能单压因此比较少人承认的那条链通常很快就会被抛弃了只是这个设计不适用于遭到51%攻击的状态下
楼主: kugwa (kugwa)   2019-06-10 00:38:00
所以意思就是 deep reorg protection让大部分的节点坚持在原来的主链 然后理想情况下原来的主链马上可以反超变回最长而不小心没触发deep reorg protection的节点 选错边站就是很虽就对了
作者: DarkerDuck (達克鴨)   2019-06-10 00:42:00
你一直会错意,我直接发文好了
楼主: kugwa (kugwa)   2019-06-10 00:55:00
有劳 感恩
作者: DarkerDuck (達克鴨)   2019-06-10 01:04:00
deep reorg protection是所有bitcoin abc的节点都会触发,而bitcoin abc的算力占BCH的大多数

Links booklink

Contact Us: admin [ a t ] ucptt.com