[閒聊] Deep Reorg Protection 似乎無法自圓其說

看板DigiCurrency (數位貨幣)作者 (闇黑聖飢魔)時間5年前 (2019/06/08 17:44), 5年前編輯推噓2(20121)
留言123則, 3人參與, 5年前最新討論串1/2 (看更多)
其實以前就聽過這個機制,只是因為一直想不通為什麼需要,也找不到比較正式的文件,所以就不敢確定是否有區塊鏈真的採用。 而不久前聽說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。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.170.109.166 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/DigiCurrency/M.1559987089.A.C72.html ※ 編輯: kugwa (118.170.109.166 臺灣), 06/08/2019 18:02:24

06/08 18:49, 5年前 , 1F
我也是這樣想的
06/08 18:49, 1F

06/08 18:51, 5年前 , 2F
Deep reorg感覺像是為了把其他鏈例如BTC, BSV搞掉
06/08 18:51, 2F

06/08 18:51, 5年前 , 3F
的準備
06/08 18:51, 3F

06/08 20:12, 5年前 , 4F
交易所的節點哪有可能停機,這也不是為了解決51%攻擊
06/08 20:12, 4F

06/08 20:13, 5年前 , 5F
只要是本質是PoW類型的幣,就不可能"解決"51%攻擊
06/08 20:13, 5F

06/08 20:14, 5年前 , 6F
這只能算是為了交易所,所設計的一個防禦機制
06/08 20:14, 6F

06/08 20:15, 5年前 , 7F
你交易所無論如何,只要確認數設定10
06/08 20:15, 7F

06/08 20:15, 5年前 , 8F
就一定是達到了finality
06/08 20:15, 8F

06/08 20:18, 5年前 , 9F
因為超過高度10的reorg幾乎可以保證是51%攻擊
06/08 20:18, 9F

06/08 20:18, 5年前 , 10F
既然是51%攻擊,就一定是需要整個社群介入的事件
06/08 20:18, 10F

06/08 20:18, 5年前 , 11F
應該說deep reorg的確通常是由51%攻擊造成的,但是如果51%
06/08 20:18, 11F

06/08 20:18, 5年前 , 12F
攻擊發生時強制不讓區塊鏈進行deep reorg的話,那只會造成
06/08 20:18, 12F

06/08 20:18, 5年前 , 13F
網路分裂。
06/08 20:18, 13F

06/08 20:18, 5年前 , 14F
總不能跟BSV一樣說deep reorg是feature
06/08 20:18, 14F

06/08 20:19, 5年前 , 15F
抱歉我是回一樓
06/08 20:19, 15F

06/08 20:19, 5年前 , 16F
你們交易所確認給我設定一千就不會有問題了
06/08 20:19, 16F

06/08 20:20, 5年前 , 17F
那這樣到底有哪個交易所會認真地把這個幣當成一回事??
06/08 20:20, 17F

06/08 20:20, 5年前 , 18F
而最初比特幣節點還挑了6這個參數當作夠安全的參數
06/08 20:20, 18F

06/08 20:21, 5年前 , 19F
因為經過計算,超過高度6還reorg
06/08 20:21, 19F

06/08 20:21, 5年前 , 20F
不透過51%攻擊幾乎不可能發生
06/08 20:21, 20F

06/08 20:24, 5年前 , 21F
假如真的發生超過高度10的reorg,需要整個社群的介入
06/08 20:24, 21F

06/08 20:25, 5年前 , 22F
寧可先讓網路先分裂,大家決定好哪條才是非攻擊鏈
06/08 20:25, 22F

06/08 20:25, 5年前 , 23F
學BTC發佈帶有checkpoint的新節點軟體出來
06/08 20:25, 23F

06/08 20:26, 5年前 , 24F
重新回復到只有單一鏈的狀態,問題解決
06/08 20:26, 24F

06/08 20:26, 5年前 , 25F
而不是讓交易所白白損失巨大金額
06/08 20:26, 25F

06/08 20:27, 5年前 , 26F
但這樣不就有模糊的空間了嗎
06/08 20:27, 26F

06/08 20:27, 5年前 , 27F
到底要多深的reorg才要人為介入判斷
06/08 20:27, 27F

06/08 20:27, 5年前 , 28F
然後假如大家意見不合又怎麼決定
06/08 20:27, 28F

06/08 20:28, 5年前 , 29F
以及要聽誰的
06/08 20:28, 29F

06/08 20:29, 5年前 , 30F
就算本來Bitcoin夠安全的交易也有模糊空間啊
06/08 20:29, 30F

06/08 20:29, 5年前 , 31F
為什麼要設定6,不設定60?甚至還有零確認的交易。
06/08 20:29, 31F

06/08 20:29, 5年前 , 32F
本來就不可能有100%的安全性
06/08 20:29, 32F

06/08 20:29, 5年前 , 33F
就算是BTC,他的所有機制的安全性都是相對安全而已
06/08 20:29, 33F

06/08 20:30, 5年前 , 34F
至於意見不合要聽誰的,可以去查整個BTC的黑歷史吧
06/08 20:30, 34F

06/08 20:30, 5年前 , 35F
在中本聰消失後,有太多太多意見不合的時候了
06/08 20:30, 35F

06/08 20:32, 5年前 , 36F
像是為什麼選擇6當夠安全的確認數
06/08 20:32, 36F

06/08 20:33, 5年前 , 37F
很顯然也是"假設"惡意節點佔10%
06/08 20:33, 37F

06/08 20:34, 5年前 , 38F
那選擇6當確認數,可以保證只有0.1%的機率會被婊到
06/08 20:34, 38F

06/08 20:34, 5年前 , 39F
可直接看中本聰白皮書後面的計算
06/08 20:34, 39F
還有 45 則推文
06/08 21:51, 5年前 , 85F
後者則是把invalid的flag拿掉讓節點根據共識規則重新判斷
06/08 21:51, 85F

06/08 21:52, 5年前 , 86F
有這功能的話也不需要刻意弄一個deep reorg protection吧
06/08 21:52, 86F

06/08 21:57, 5年前 , 87F
那這樣就變成各說各話了啊
06/08 21:57, 87F

06/08 21:58, 5年前 , 88F
現在deep reorg protection就是設下一個共識
06/08 21:58, 88F

06/08 21:58, 5年前 , 89F
超過高度10的reorg基本上就被判定為51%攻擊
06/08 21:58, 89F

06/08 21:59, 5年前 , 90F
這個鏈將是invalid,分裂的網路待後續凝聚社群共識
06/08 21:59, 90F

06/08 21:59, 5年前 , 91F
但你的做法是每個節點自己依照自己的看法判定
06/08 21:59, 91F

, , 92F
打錯字

06/08 22:01, 5年前 , 93F
那交易所假如設成高度是2就是51%攻擊呢?
06/08 22:01, 93F

06/08 22:01, 5年前 , 94F
那恐怕就天下大亂了
06/08 22:01, 94F

06/08 22:06, 5年前 , 95F
更不用說假如每個礦工都自己想設多少就是多少
06/08 22:06, 95F

06/08 22:07, 5年前 , 96F
那恐怕BCH的區塊鏈天天分叉,完全無法正常運作
06/08 22:07, 96F

06/08 22:08, 5年前 , 97F
這個功能主要是用在真的有爭議的攻擊上
06/08 22:08, 97F

06/08 22:08, 5年前 , 98F
譬如之前有人想要取走所有segwit地址的BCH
06/08 22:08, 98F

06/08 22:09, 5年前 , 99F
反正這個規則很明確,攻擊行為沒有模糊地帶
06/08 22:09, 99F

06/08 22:09, 5年前 , 100F
但是51%攻擊如你說說是很模糊的
06/08 22:09, 100F

06/08 22:09, 5年前 , 101F
每個節點判定標準都不一致的話,那後果就是沒有共識
06/08 22:09, 101F

06/08 22:10, 5年前 , 102F
當然也就不會有單一條的區塊鏈
06/08 22:10, 102F

06/10 00:13, 5年前 , 103F
我是想說 只要reorg沒有深到觸動社群跳出來 那就都當沒事
06/10 00:13, 103F

06/10 00:14, 5年前 , 104F
大家就都認最長的
06/10 00:14, 104F

06/10 00:15, 5年前 , 105F
而有人跳出來質疑有51%攻擊的時候 大家暫且按兵不動
06/10 00:15, 105F

06/10 00:15, 5年前 , 106F
覺得不是攻擊的人就什麼都不用做
06/10 00:15, 106F

06/10 00:16, 5年前 , 107F
覺得是攻擊的 那就先用invalidateblock來忽略攻擊鏈
06/10 00:16, 107F

06/10 00:18, 5年前 , 108F
等大家商量好之後 社群就發個有新checkpoint的更新
06/10 00:18, 108F

06/10 00:19, 5年前 , 109F
這樣做當然是可以,反正風險就自負而已
06/10 00:19, 109F

06/10 00:20, 5年前 , 110F
也就是出現爭議的時候才用到invalidateblock
06/10 00:20, 110F

06/10 00:20, 5年前 , 111F
任何礦工都可以壓在覺得最後會獲得共識的那條鍊上面
06/10 00:20, 111F

06/10 00:21, 5年前 , 112F
PoS會有問題就是驗證者可以雙壓,PoW礦工只能單壓
06/10 00:21, 112F

06/10 00:22, 5年前 , 113F
因此比較少人承認的那條鏈通常很快就會被拋棄了
06/10 00:22, 113F

06/10 00:22, 5年前 , 114F
只是這個設計不適用於遭到51%攻擊的狀態下
06/10 00:22, 114F

06/10 00:38, 5年前 , 115F
所以意思就是 deep reorg protection讓大部分的節點堅持在
06/10 00:38, 115F

06/10 00:39, 5年前 , 116F
原來的主鏈 然後理想情況下原來的主鏈馬上可以反超變回最長
06/10 00:39, 116F

06/10 00:41, 5年前 , 117F
而不小心沒觸發deep reorg protection的節點 選錯邊站就是
06/10 00:41, 117F

06/10 00:41, 5年前 , 118F
很雖就對了
06/10 00:41, 118F

06/10 00:42, 5年前 , 119F
你一直會錯意,我直接發文好了
06/10 00:42, 119F

06/10 00:55, 5年前 , 120F
有勞 感恩
06/10 00:55, 120F

06/10 01:04, 5年前 , 121F
deep reorg protection是所有bitcoin abc的節點都會
06/10 01:04, 121F

06/10 01:05, 5年前 , 122F
觸發,而bitcoin abc的算力佔BCH的大多數
06/10 01:05, 122F

07/12 21:04, 5年前 , 123F
997字 * 6星 = 5982 PCH
07/12 21:04, 123F

07/12 21:27, 5年前 , 124F
文章代碼(AID): #1S-uEHno (DigiCurrency)
文章代碼(AID): #1S-uEHno (DigiCurrency)