其实以前就听过这个机制,只是因为一直想不通为什么需要,也找不到比较正式的文件,所以就不敢确定是否有区块链真的采用。
而不久前听说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。