什麼是 Segregated Witness (SegWit)?

作者 Kraken Learn team
11 最低限額
2024年11月26日

Bitcoin SegWit 新手指南 💭

Segregated Witness (SegWit) 是 2017 年 8 月 1 日對 Bitcoin 原始碼進行的升級。

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

問題的核心在於礦工的盈利能力與網絡開發者希望讓 Bitcoin 更便宜、更快地使用之間的利益衝突。

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

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

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

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

BTC icon
$79,190.00
-1.25%
24H
btc

SegWit 之前的 Bitcoin ⏮️

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

當 Bitcoin 於 2009 年推出時,其創建者 中本聰 (Satoshi Nakamoto) 並未設定 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 的提案通過將區塊中的「見證」數據「隔離」並將其移至 coinbase 交易來增加 Bitcoin 區塊容量。Coinbase 交易是每個新 Bitcoin 區塊中的第一筆交易。Coinbase 交易負責將新鑄造的加密貨幣發行到流通中,作為 Bitcoin 挖礦過程的獎勵。

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

見證數據,也稱為 ScriptSig 或解鎖腳本,包括解鎖轉移的 Bitcoin 所需的數字簽名和公鑰資訊。SegWit 升級為交易的 ScriptSig 部分引入了一個單獨的「見證字段」。

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

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

儘管分離,但重要的是要注意節點仍然在鏈上處理交易數據和見證數據。沒有使用側鏈或 Layer 2 協議。

區塊權重

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

為了克服這個問題,這次升級引入了一個稱為區塊權重 (block weight) 的指標來管理區塊的大小。

根據這個概念,每個 1 兆位元組的區塊由 4,000,000 個權重單位 (WU) 組成。每個交易根據以下公式獲得一個權重:

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

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

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

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

對雙方來說都是雙贏。或者你可能會這麼認為。

不再有交易可塑性問題

在 SegWit 結構下,雜湊交易 ID 只包含交易資訊,不包含見證字段資訊。

這項更改消除了 Bitcoin 交易中以前導致可塑性攻擊的可修改組件。

因此,諸如 Bitcoin 閃電網絡等二級擴展解決方案成為可能。

 

SegWit 為何備受爭議?🤔

許多開發社群成員認為 SegWit 在解決 Bitcoin 擴展問題方面做得不夠。

反對 SegWit 激活的主要論點包括:

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

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

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

用戶激活軟分叉

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

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

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

那些反對 SegWit 的人提出了不同的 SegWit 2X 硬分叉升級。該升級將實施 SegWit 將 Bitcoin 的區塊大小增加到 2MB。

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

SegWit 與紐約協議 🗽

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

在 11 月之前,Shaolinfry 起草了兩份 Bitcoin 改進提案 (BIP);BIP148 和 BIP149。前者代表了一個硬性且快速的解決方案;支持 SegWit 區塊,否則節點將拒絕您的區塊。後者為礦工提供了更長的時間來加入,將激活截止日期設定為次年 7 月。

隨著日期臨近,Bitmain 保修工程師 James Hillard 提出了一項新的 BIP;BIP91。他的解決方案旨在使 SegWit 2X 和 BIP148 相互兼容。當您可以使它們都兼容時,為什麼要冒著鏈分裂的風險來處理兩個相互競爭的 SegWit 更新呢?

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

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

$425.68
-1.85%
24H
bch

Bitcoin 獨立日的重要性

SegWit 的引入以及社群決定拒絕區塊大小增加,代表了更廣泛的 Bitcoin 社群的一個里程碑時刻。

SegWit 展示了在更改 Bitcoin 區塊鏈時共識的重要性,以及 Bitcoin 所提供的權力去中心化程度。

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

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

開始購買 Bitcoin

現在您已經了解了所有關於 SegWit 的資訊,您準備好繼續您的加密貨幣之旅並購買 Bitcoin 了嗎?

請查閱我們的 Kraken 學習中心指南,了解更多關於如何購買 Bitcoin (BTC) 的資訊,並立即註冊 Kraken 帳戶