什麼是隔離見證 (SegWit)?

作者 Kraken Learn team
11 最低限額
November 26, 2024

Bitcoin SegWit 新手指南 💭

隔離見證 (SegWit) 是 2017 年 8 月 1 日對 Bitcoin 原始碼進行的升級。

儘管 SegWit 帶來了許多人認為是對 Bitcoin 區塊鏈的改進,但它遭遇了強烈反對,導致社群分裂。 

問題的核心是礦工盈利能力與網絡開發人員之間存在著利益衝突,後者希望讓 Bitcoin 使用起來更便宜、更快。

這種緊張關係導致社群內部產生裂痕,最終導致網絡首次用戶激活軟分叉和一次惡意分裂。這次分裂催生了一系列新的 Bitcoin 分叉項目,包括 Bitcoin Cash。

迄今為止,SegWit 仍然是 Bitcoin 歷史上最具爭議的事件之一。然而,它也被證明是該協議長期可行性最重要的更新之一。 

每年,Bitcoin 社群中的許多人將 8 月 1 日定為「Bitcoin 獨立日」。這個事件標誌著人民的意願戰勝了老牌 Bitcoin 挖礦公司的中心化利益。

讓我們探索這些事件的發生經過,並揭示 SegWit 背後的歷史。

BTC icon
$64,049.00
-1.61%
24H
btc

SegWit 之前的 Bitcoin ⏮️

在 SegWit 激活之前,Bitcoin 的區塊容量多年來一直保持不變。區塊容量指的是在給定區塊內可以記錄的最大交易數量。

2009 年 Bitcoin 推出時,其創造者 中本聰 並沒有為 Bitcoin 區塊的大小設定任何參數。

然而,在 2010 年,中本聰在未經其他 Bitcoin 貢獻者批准的情況下,秘密增加了 1 兆位元組 (MB) 的區塊大小限制。

許多人認為 中本聰設定該限制是為了防止未來可能影響網絡的 分佈式阻斷服務 (DDoS) 攻擊

這種對區塊容量的固定上限產生了不必要的影響,限制了 Bitcoin 在多個方面擴展的潛力。

低吞吐量和緩慢的交易時間

只有有限數量的交易可以容納到 Bitcoin 現在採用的相對較小的 1MB 區塊中。這種小容量意味著 Bitcoin 網絡每秒只能處理大約 2 至 3 筆 Bitcoin (BTC) 交易 — 這與每秒可處理數萬筆交易的傳統數碼支付網絡相距甚遠。

此外,為了使交易區塊在 Bitcoin 挖礦 過程中被視為有效,它必須接收六個確認。換句話說,在區塊被最終確定之前,必須在相關區塊之後向區塊鏈添加六個新區塊。由於平均區塊時間為十分鐘,這意味著 Bitcoin 區塊確認大約需要一小時。

當時,只有少數「密碼龐克」密碼學家知道 Bitcoin,這不一定是一個大問題。但是,如果 Bitcoin 網絡要像中本聰在 Bitcoin 白皮書 中設想的那樣,成為一個全球性的「點對點電子現金系統」,那麼就需要改變。

高費用

Bitcoin 的低吞吐量受其小區塊容量限制,意味著費用也比現時高出許多。

這問題可以透過一個簡單方式來理解。想像您在觀看一場戲劇表演後,身處人群之中。劇院裡的每個人都想在同一時間乘坐的士回家。如果周圍有很多的士,那麼每個人回家應該很容易。但是,如果只有少量計程車,人們可能會嘗試向計程車司機支付更高的價格,以鼓勵司機優先載他們回家。根據需求,計程車的價格可能會比正常費率大幅飆升。

Bitcoin 費用也遵循這些供需原則。如果很多人希望他們的交易同時得到處理,有些人可能會選擇支付更高的費用,以便礦工更快地處理他們的交易。在 Bitcoin 網絡使用量高的時期,擠塞可能導致用戶之間競爭,這可能導致交易費用急劇飆升。

交易可塑性

Bitcoin 區塊運作方式的另一個固有特性被稱為交易可塑性。在 SegWit 之前,人們可以在交易於區塊鏈上獲得足夠確認之前更改其 ID。

取得與特定交易相關的資訊並通過雜湊函數運行,會產生一個交易 ID。您可以在我們的文章 加密貨幣如何使用密碼學?中了解更多關於雜湊函數的資訊。

但為簡單起見,您可以將這些交易 ID 視為用於識別和參考區塊鏈上交易的數位指紋。

更改交易 ID 會產生一個全新的雜湊,這有時可能會混淆區塊鏈客戶端軟件。所有節點都運行客戶端軟件以與區塊鏈互動,並執行資料驗證等重要角色。

Bitcoin 的程式碼中的此可塑性錯誤為惡意攻擊打開了大門。交易可塑性攻擊最臭名昭著的例子之一是 2014 年的 Mt. Gox 交易所駭客事件 — 以歷史上最大規模的 Bitcoin 駭客事件而聞名。

專家報告,一名駭客或多名駭客,清空了 Mt. Gox 交易所的 Bitcoin 錢包。他們透過更改其提款的交易 ID 來實現這一點。 

交易可塑性攻擊使其看起來像提款並未在區塊鏈上得到確認,但事實上已經確認。

此漏洞,加上其他攻擊向量,使駭客得以從交易所盜取超過 840,000 BTC。

SegWit 帶來了哪些改進?⚙️

Bitcoin 貢獻者 Pieter Wuille 於 2015 年在 Bitcoin 香港活動中首次提出了 SegWit 升級。

他的解決方案在三個方面具有創新性。SegWit 改善了 Bitcoin 的可擴展性,消除了可塑性,並允許節點採用新的交易結構。最重要的是,這可以在不硬分叉網絡的情況下實施。

分離數字簽名和交易資訊

Wuille's 的提案透過「隔離」區塊中的「隔離見證」數據並將其移至 Coinbase 交易,增加了 Bitcoin 區塊容量。Coinbase 交易是每個新 Bitcoin 區塊中的第一筆交易。Coinbase 交易負責發行新鑄造的加密貨幣,作為比特幣挖礦過程的獎勵。

成功贏得 Bitcoin 基於密碼學的「工作量證明」競賽的礦工,可獲得這些新鑄造的代幣作為「區塊獎勵」。

隔離見證數據,亦稱為 ScriptSig 或 Unlocking Script,包含解鎖已轉移的 bitcoin 所需的數字簽名和公鑰資訊。SegWit 升級為交易的 ScriptSig 部分引入了單獨的「見證欄位」。

透過將數字簽名資訊與交易輸入欄位分開處理,每個區塊中可以容納更多交易。

每個區塊的交易數量越多,意味著更高的交易吞吐量能力。因此,Bitcoin 不再是每秒 2-3 筆交易,而是每秒可以處理 7-10 筆 SegWit 交易。容量增加也意味著更低的費用,因為 Bitcoin 區塊鏈可以處理更高容量的交易。

儘管有此分離,但值得注意的是,節點仍會在鏈上處理交易數據和隔離見證數據。沒有使用任何側鏈或 Layer 2 協議。

區塊權重

在 SegWit 之前,礦工以大小(以位元組為單位)來衡量 Bitcoin 區塊。當區塊同時包含隔離見證數據和交易數據時,這個系統運作良好,但當它們被分離時就出現了問題。

為了克服這個問題,該升級引入了一種稱為「區塊權重」的指標來管理區塊大小。

透過這個概念,每個 1 兆位元組的區塊包含 4,000,000 權重單位 (WU)。每筆交易會根據以下公式賦予權重:

基礎交易大小(不含隔離見證數據,以位元組為單位)* 3 + 總交易大小(以位元組為單位)。

透過從計算中移除隔離見證欄位數據,SegWit 交易的權重會低得多。另一方面,非 SegWit 交易仍然包含隔離見證數據。這意味著非 SegWit 交易的權重始終比 SegWit 交易重 4 倍。

這個概念理論上將 Bitcoin 區塊的大小從 1MB 增加到 4MB,如果一個區塊幾乎完全由隔離見證數據組成。然而,這在實踐中是不可能的。

加權系統的主要優點是它激勵礦工處理主要包含 SegWit 交易的區塊。假設 SegWit 交易與傳統區塊收取相同的費用,礦工每個區塊可以處理更多的 SegWit 交易。他們每個區塊處理的交易越多,他們賺取的費用就越多。

對於雙方來說都是雙贏。但願如此。

不再有交易可塑性問題

在 SegWit 結構下,雜湊交易 ID 只包含交易資訊,而不包含隔離見證欄位資訊。

這項改變移除了 bitcoin 交易中先前導致可塑性攻擊的可修改組件。

因此,次級擴容解決方案,例如 Bitcoin Lightning Network,才得以實現。

 

SegWit 為何備受爭議?🤔

開發界許多人認為,SegWit 在解決 Bitcoin 擴容問題方面做得還不夠。

反對啟動 SegWit 的主要論點包括:

  • Bitcoin 每秒 7-10 宗交易的吞吐量增加,對於去中心化、全球支付系統來說仍然遠遠不足。
  • 手續費仍然相對較高,使得微交易等行為在財務上不可行。
  • 礦工仍然可以處理舊式交易區塊,這意味著可塑性仍然是一個威脅。
  • 後來發現 SegWit 會抵消 Bitmain 的 ASICBOOST 機制;這是一種用於顯著提高挖礦設備效率的漏洞。

在 Wuille 的提案提出約一年後,他和其他 Bitcoin Core 開發者,包括 Eric Lombrozo,已經準備好代碼,以在即將推出的 Bitcoin Core 0.13.1 更新中上線。啟動 SegWit 唯一剩下的步驟是礦工開始處理新的 SegWit 區塊。 

為了鞏固其實現,超過 95% 的所有 Bitcoin 礦工需要在啟動後首兩週內表示支持 SegWit — 考慮到當時的情況,這是一個主要障礙。

用戶激活軟分叉

毋庸置疑,Bitmain 等大型挖礦公司仍然對擬議的變革感到不滿,並拒絕支持 SegWit 的啟動。

2017 年初,一位名叫「Shaolinfry」的匿名開發者在一篇線上 bitcoin-dev 帖子中提出了 Bitcoin 節點強制執行軟分叉的可能性。 

用戶激活軟分叉此前從未在 Bitcoin 網絡上嘗試過,但它將允許開發者在獲得礦工約 51% 支持的情況下推動 SegWit。那些拒絕支持新區塊的礦工將面臨其區塊被節點拒絕的風險。這個解決方案並非沒有風險。如果 SegWit 未能獲得礦工的充分支持,結果將不可避免地導致區塊鏈分叉。

那些反對 SegWit 的人則提出了另一種 SegWit 2X 硬分叉升級方案。該方案將實施 SegWit,將 Bitcoin 的區塊大小增加到 2MB。

與前一種升級不同,SegWit 2X 將不向後兼容 Bitcoin 客戶端的先前版本。這些更改意味著節點必須更新其軟件才能繼續在網絡上運作。

SegWit 與紐約協議 🗽

業界頂尖公司在 Consensus 2017 會議上會面,並共同簽署了一份被稱為「紐約協議」的備忘錄。這份文件列出了 SegWit 在夏季上線的計劃,計劃在 11 月前將 Bitcoin 的區塊大小增加到 2MB。

在 11 月之前,Shaolinfry 起草了兩份 Bitcoin 改進提案 (BIPs);BIP148 和 BIP149。前者代表了一個迅速而果斷的解決方案;表明支持 SegWit 區塊,否則節點將拒絕您的區塊。後者為礦工提供了更長的準備時間,將啟動截止日期設定在次年 7 月。

隨著日期臨近,Bitmain 保修工程師 James Hillard 提出了一項新的 BIP;BIP91。他的解決方案旨在使 SegWit 2X 和 BIP148 彼此兼容。當可以使兩者兼容時,為何要冒著區塊鏈分叉的風險,去爭奪兩個相互競爭的 SegWit 更新?

8 月 1 日,充足的挖礦支持鞏固了 SegWit 的啟動。然而,紐約協議的第二階段未能獲得相同的支持。

未能將 Bitcoin 的區塊大小增加到 2MB,導致了 Bitcoin Cash (BCH) 的形成 — 這是來自 Bitcoin 區塊鏈的一個新分叉項目。

$210.56
+0.11%
24H
bch

Bitcoin 獨立日的重要性

SegWit 的引入以及社群決定拒絕增加區塊大小,對於廣泛的 Bitcoin 社群來說,是個具有里程碑意義的時刻。

SegWit 顯示了就 Bitcoin 區塊鏈的變更達成共識的重要性,以及 bitcoin 所提供的去中心化權力的程度。

沒有任何個人能夠接管網路並推動他們的提案。

相反,社群進行了辯論、迭代,並作為一個集體繼續著達成共識的漫長過程 — 而不是遵從單一個人的指示。

開始購買 Bitcoin

既然您已了解有關 SegWit 的所有資訊,是否準備好繼續您的加密旅程並購買 bitcoin?

查閱我們的 Kraken Learn Center 指南,以獲取有關如何購買 Bitcoin (BTC) 的更多資訊,並立即註冊 Kraken 帳戶