其實以前就聽過這個機制,只是因為一直想不通為什麼需要,也找不到比較正式的文件,所以就不敢確定是否有區塊鏈真的採用。
而不久前聽說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。