Segwit2X 測試版心得感想(LUKE)

“Segwit2X 測試版”解讀與感想(原文)

By Luke Dashjr

夢網譯

(本文底部有白話文重點整理)

Segwit2x 測試版所做的改變可以分成五個部分。

首先我們先看最簡單的部分:品牌/名牌。“Bitcoin Core 0.14.1” 被改成了 “btc1 Core 1.14.3”。這沒什麼可以討論的。(值得一提的是他是基於0.14.1改的,而不是修復了miniupnpc 漏洞的0.14.2版<1>。)

   下一個是第五號測試網路。這是一個全新的測試網路,我想我應該永遠不會理解他們為啥要建一個新的測試網路。如果你要測試Bitcoin的新功能,就直接在現有的測試網路上測啊! 為啥要建立一個新的?

   在策略上,btc1節點只要一上線(不管有沒有執行硬叉分或軟叉分)就會有的明顯改變會是:Core的版本中16k sigop的限制會被改為32k sigops。另外支持Sigwit2X的礦池與礦工只要連上btc1節點的話會發現容量上限會是8MB且sigops的限制會成為160k。這個容量上限或許是一個BUG,因為在硬分叉執行之前,這部分不應該會有變動。但是也沒差,因為現有的區塊規範不會超越現有的限制。且我不認為會有礦工想打包這麼多的交易數據。<2>

   Btc1 有包含大家都不太認識的BIP91。旨在把Segwit的觸發門檻降低到80%支持,且持續幾天。基本上它就是BIP148,但是允許擁有20%算力的礦工能一票否決。<3>

   最後! 說到硬分叉。這段代碼根本不需要第四位元的支持,他是定時的。設定在Segwit上線的12960個區塊後無條件啟動,並且無視Segwit的版本。代表就算彼特大陸阻攔了Segwit2X。由BIP148(也就是UASF啟動的Segwit也會觸發這個定時器。(簡單說:如果Segwit 永遠不上線的話,硬分叉就永遠不會發生)

   如果硬分叉真的發生了。它會把區塊大小上限擴成8MB(代碼上偽裝成是2MB),160ksigop上限(當然也是有偽裝成20k)。之後它會有Segwit特有的8M的塊重<4>上限。這樣一個常規區塊最終大小預計將會是4MB~8MB

然後為了解決簽名目標(sighash )的尺寸問題,它會加一個1MB的新限制。限制每一筆轉帳的非見證資料( non-witness data)大小。

最後為了避免原始的bitcoin在重組時覆蓋掉它的鏈,硬分叉會限制第一個分叉後的區塊會要有大於1MB的非見證資料。(其實有更好的辦法,就是利用硬分叉的那個bit。這樣也能防止重組影響到SPV輕量錢包。)

 

現在! 輪到我說說我(Luke Dash Jr.)的看法了。我認為4MB~8MB的大區塊是很不理智的。現在的1MB都已經算是很危險了。我想除非他們能真的做出有用的改變,不然我不會支持這個硬分叉的。

有用的改變舉例:

1. 原生支持合併挖礦(merged mining),這中本聰早在多年以前初次討論硬分叉時就提出過了。

2. 修復一些高明的可攻擊漏洞,比如時間扭曲攻擊<5>(time warp attack)。

   我相信我絕對不是第一個察覺到以上這些問題點的人。所以我有相對極高的信心這次的Segwit2X會失敗收場。

總結來說,我認為Sigwit2X的真正目的<作者註1>:推延Segwit的上線時間。這是在轉移焦點! 為了轉移即將到來的BIP148:UASF的注意力(它100%會發生)。刻意的推動BIP91+Segwit2X來取代BIP148是礦業為了奪到一票否決權的一次有力嘗試。其最終目的是在最後一刻可以叫停並讓之前花費的心力全數作廢。如果沒有足夠的主要節點能在八月前升級BIP148的話。比特大陸將會有機會進行一次分鏈攻擊(chain split attack),去欺騙沒升級的節點去跟隨他們自創的無效鏈。可怕的是,這些節點可能在被金融孤立前不會有能力察覺自己已經被攻擊了。

唯一避免這的辦法就是升級BIP148,並且要多要快。在八月前有越多的參與者就會越安全。BIP148並沒有禁止Segwit2X,它甚至沒有要求你要運行Segwit節點。BIP148唯一的作用就是不讓礦工禁止其他人使用Segwit。 (譯者:就是你不要用可以,但別妨礙他人)。只要BIP148的節點夠多,礦業將無法對舊的節點執行“零損失”的分鏈攻擊。

如果Segwit2X的推動者沒有使壞,執行BIP148對你根本沒有影響。如果Segwit2X的推動者不幸有使壞,那BIP148將會是你的最後防線。

 

註釋:

作者註1:

   我這樣說Sigwit2X的真正目的不代表我在暗示紐約共識(NYA)會議上的參與者都是懷抱這個目的! 只是Sigwit2X的整體設計上實在是太適合作為這種目的的執行工具。讓我不禁懷疑彼特大陸是有意這麼設計。其他與會者不見得會完全知情。

註1:miniupnpc 是一個彼特幣有用到的目錄系統。在其1.9.20151008之前有著緩存譯出的漏洞。

註2:包得越大越不可能搶到塊。

註3:巧的是:Craig Wright稱要組一個20%算力的礦池去反對SW。

註4:Segwit 特有的一種計算方式。接觸到UTXO(Unspent Transaction Outpu,沒有被花用過的輸出紀錄)的數據會被定為4個weight unit(WU)每一位元組,見證資料(witness data)算為1WU每一位元組。Segwit 限制一個區塊只能有4M的WU。

註5:時間扭曲攻擊是一種攻擊獎勵系統騙取獎勵的方式。在每次算力調整時攻擊者可以嘗試去挖出最後一塊並偽造最後一快的時間戳記並將其定在未來兩小時後,這樣正常的新區塊第一塊會“兩小時慢於”上一個區塊。這樣這兩小時內的區塊不會被算入難度調整系統。將會維持上一個難度,且會影響到下一次難度調整。

Segwit2X重點整理

1. Segwit2X 打包強制硬分叉,定時約90天後。

2. 硬分叉是把塊大小上限增大到8MB,這根本是Segwit8X

3. 此版本可以讓礦業有一票否決權,管你響應期的支持算力在高。

在最後一刻時只要20%的算力反水,這就會被一票否決

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

*