
作者:Chakra;翻譯:0xjs@比特鏈視界
比特幣是世界上最早、最安全、最去中心化、市值最高的區塊鏈。然而,其較低的每秒交易量 (TPS) 和有限的編程能力經常受到批評,難以支持大規模應用,嚴重阻礙了比特幣生態系統的發展。作為比特幣生態系統的建設者,本文將帶領你了解比特幣擴容解決方案的過去、現在和未來。
本文是比特幣可擴展性系列文章的第一篇,主要介紹比特幣主網上歷史上實現的原生擴容解決方案。下一篇文章將討論具有更高擴容性的鏈下擴容方案。敬請期待。
增加區塊大小限制
2010 年,中本聰在bitcoin-core中引入了1MB 的區塊大小限制。之後十多年這一明確限制一直未曾修改。
有趣的是,中本聰並沒有公開解釋他提出區塊大小限制的原因,這個限制「隱藏」在代碼合併的 PR 中,沒有詳細解釋。在中本聰離開幾年後,社區在區塊大小限制問題上出現了嚴重分歧,對更大區塊的需求引發了廣泛的討論。
區塊越大,容納的交易數量越多。假設共識時間不變,區塊越大,TPS 越高。
為什麼TPS這麼重要?因為在1MB的區塊限制下,以當時的交易規模,每秒能完成的交易數量只能有3-7筆,對於大規模應用是遠遠不夠的,無法實現比特幣「點對點的電子現金系統」的願景。
然而,更大的區塊也帶來不同程度的問題。
首先,更大的區塊對存儲、計算和帶寬等硬體的要求更高,導致全節點的運營成本增加。比特幣的歷史交易數據迅速擴展,需要新的全節點花費更多時間與網絡同步。這些要求降低了用戶操作全節點的意願,從而降低了去中心化程度。
其次,區塊越大,節點間的同步時間越長,出現孤塊的可能性越大,導致區塊重組更加頻繁,分叉風險增大,大大降低安全性。
後來這個問題被Vitalik稱為區塊鏈不可能三角,即區塊鏈無法同時實現去中心化、可擴展性和安全性。區塊越大,可擴展性就越強,但代價是去中心化和安全性越弱。
最重要的是,修改區塊大小限制需要硬分叉,這就要求全網所有節點同時升級,否則將導致網絡分裂。這對於依賴去中心化共識的比特幣來說並不是一個好的選擇。在中本聰的影響下,避免硬分叉似乎已經成為比特幣事實上的原則。
不幸的是,分裂確實發生了。儘管社區內部缺乏共識,但一些礦工和開發人員還是更改了客戶端中的區塊大小限制,最終導致網絡分叉。2016 年,Bitcoin Classic 採用 BIP 109 將區塊大小限制分叉至 2MB;2016 年,Bitcoin XT 客戶端採用 BIP 101,將區塊大小提高至 8MB。然而,絕大多數礦工和用戶仍留在我們現在所知的比特幣主網上。
通過硬分叉明確增加區塊大小的努力失敗了。
隔離見證
如果硬分叉不可接受,那麼軟分叉可以作為解決方案嗎?SegWit 就是其中一種方法。
見證是解鎖UTXO的憑證,長期以來,見證被放置在UTXO的輸入腳本欄位中以完成交易。然而,這種方式存在循環依賴、第三方交易延展性、第二方交易延展性等潛在問題。
早在 2011 年,開發者就注意到了這個問題,並提出了隔離見證(SegWit)的解決方案,即將見證與其他交易數據分開。但當時的硬分叉提案並未獲得支持,直到 2015 年 SegWit 軟分叉的提出才最終實現合併。
SegWit是如何通過軟分叉實現向後兼容的呢?這主要包括以下兩個方面:
-
新版本節點可以識別並接受舊版本節點產生的區塊和交易。
-
雖然舊版本節點無法識別新版本引入的新規則和特性,但它們仍然將新版本產生的區塊視為有效。
SegWit 軟分叉允許新交易使用空輸入腳本,並在區塊結構中添加見證欄位以存儲見證。由於升級前的比特幣核心支持空輸入腳本,因此舊版本節點不會拒絕新版本生成的區塊。此外,通過使用版本欄位,舊的交易類型仍可使用,並且節點會根據版本以不同的方式處理它們。
SegWit 中的擴展是通過權重的形式實現的,見證字節的權重為 1,其他數據字節的權重為 4,從而限制每個區塊的最大權重為 400 萬。為什麼要為不同類型的數據分配不同的權重?一個常識性的想法是,見證數據在使用時只起到驗證作用,不需要長期保存在存儲中,因此成本相對較低,權重也較低。
這實際上是變相提高了區塊大小限制,理論上的區塊大小上限被提升到了 4MB(完全歸功於見證數據),平均下來區塊可以達到 2MB 左右。從舊區塊結構來看,這還是秉承了中本聰當初每個區塊不超過 1MB 的限制。
Taproot
利用比特幣的操作碼比如OP_IF,我們可以為比特幣的花費腳本設置複雜的條件,比如時間鎖、多重籤名等。然而,複雜的花費條件往往需要多次輸入和籤名進行驗證,從而增加區塊負載並降低交易速度,同時暴露所有的支付條件,導致隱私洩露。
Taproot 使用 MAST 來增強比特幣,用戶使用 Merkle Trie 來表示花費條件。每個葉節點代表一個花費腳本,在花費過程中,只需要提供實際執行的腳本和相應的 Merkle Path,而無需透露其他條件。這可以減少區塊空間消耗並提高隱私性。
Taproot 升級還引入了 Schnorr 籤名,該籤名具有加法同態特性,允許籤名聚合和批量驗證,從而提高整體每秒交易數 (TPS)。Schnorr 籤名的聚合籤名優勢大大簡化了驗證多重籤名交易的邏輯。以前,ECDSA 籤名需要將多個籤名發送到鏈上才能與腳本匹配,而 Schnorr 籤名只需要將單個鏈下聚合籤名發送到鏈上,從而減少了多重籤名支付對鏈上空間的使用。
通過將 Schnorr 籤名與 MAST 相結合,並使用支付到合約 (Pay to Contract,P2C) 概念,通過 MAST 根提交複雜的合約代碼,以調整並生成支持單一 Schnorr 籤名支付的標準比特幣公鑰。
有趣的是,由於 Schnorr 籤名的單個籤名和多個籤名在鏈上看起來相同,因此複雜腳本、多重籤名和單次籤名的邏輯在鏈上無法區分,從而進一步增強了隱私性。
結論
比特幣的可擴展性解決方案反映了其在提高性能的同時保持去中心化和安全性的不斷發展的方法。
最初,考慮增加區塊大小,直接解決低交易率的問題,但引發與節點成本和網絡分叉相關的問題,對社區共識提出挑戰。
SegWit 的引入標誌著一項重大進步,通過軟分叉優化區塊容量,確保向後兼容性並避免分裂的硬分叉。
隨後,Taproot 通過 MAST 和 Schnorr 籤名進一步完善了可擴展性和隱私性,減少了交易空間並提高了驗證效率。更重要的是,Taproot 可以在比特幣上實現複雜的腳本編程,為未來的擴展嘗試鋪平了道路。
這些發展凸顯了比特幣謹慎而創新地向更具可擴展性和更強大的網絡邁進,這對其作為全球支付系統的未來至關重要。
然而,這些擴容方案的影響還不足以實現「點對點電子現金系統」的願景。