比特幣區塊鏈:性能和可擴展性
比特幣是一種去中心化電子現金系統,無需透過中間人即可實現點對點支付。 原版比特幣軟件由 Satoshi Nakamoto 開發,並於 2009 年在 MIT 許可下發布,緊跟比特幣白皮書 Bitcoin:點對點電子現金系統。
比特幣是分佈式加密貨幣的首次成功實現。比特幣誕生 16 年後,比特幣流通量約爲 2,000 萬枚,目前市值已超過 2 萬億美元。
在比特幣區塊鏈中,交易是指一系列輸入和輸出在支付方和收款人之間轉移比特幣的所有權。輸入指示支付將從哪個代幣中提取。輸入中的代幣必須無用,這意味着它們尚未用於向他人付款。與此同時
提供支付方同意支付給收款人的可支出比特幣金額。完成交易後,輸出將變爲收款人的未用金額,直到當前收款人使用代幣向其他人付款,纔會保持未用金額。
例如,當 Alice 需要向 Bob 支付 10 BTC 時,Alice 會打開她的比特幣錢包,掃描或複製 Bob 的交易地址,然後創建一筆向 Bob 支付 10 BTC 的交易。完成數字簽名並提交後,交易將發送至比特幣區塊鏈網絡。
交易廣播到比特幣網絡後,簿記者節點通常是 P2P 網絡中接收交易的完整節點,將根據比特幣協議規則對其進行驗證。如果交易有效,則簿記員將其添加到交易池中,並將交易轉發給網絡中的同事。
在比特幣網絡中,每 10 分鐘就會有一部分稱爲「挖礦節點」或挖礦節點的網絡節點從交易池中收集所有有效交易並創建候選區塊。他們還爲自己創建了代幣基礎交易,以便獲得獎勵並收取手續費。如果他們「贏得挖礦賽」並將區塊添加到鏈中,則所有節點都將驗證新區塊並將其添加到自己的區塊鏈副本中。神奇的是,Bob 能夠看到 Alice 的付款,錢包裏還有 10 BTC。
比特幣網絡的一個主要問題,或者一般來說,基於工作證明(PoW)的區塊鏈,就是可擴展性。根據設計,每筆交易都必須經過所有節點的驗證。創建新區塊平均需要 10 分鐘,區塊大小限制爲 1 MB。區塊大小和頻率限制進一步限制了網絡的吞吐量。因此,比特幣區塊平均能夠容納 2,700 筆交易。如今,VISA 的支付系統平均每秒可處理約 2,000 筆交易 (TPS),每日峯值費率約爲 4,000 TPS。截至 2025 年,Paypal 平均每天可處理約 193 TPS 或近 1,700 萬筆交易。
顯然,在比特幣網絡上實現類似 Visa 的容量是不可行的。提高性能和可擴展性需要提高網絡的交易處理限制,並對比特幣網絡進行軟件增強。
區塊鏈 Trilemma 解決了在區塊鏈網絡上實現可擴展性、去中心化和安全性的「三要素」,同時不影響其中任何一項。Trilemma 的前提是,區塊鏈系統幾乎無法實現所有三種屬性。
下圖顯示了區塊鏈可擴展性 Trilemma。
可擴展性概念的關鍵在於找到一種方法,在基層滿足所有三個要求。比特幣的設計選擇有利於去中心化和安全性,同時犧牲可擴展性。
比特幣擴展解決方案
比特幣可擴展性解決方案提案衆多,可進一步分爲鏈上和鏈下擴展。
鏈上擴展
鏈上解決方案有時也稱爲 Layer 1 解決方案,可解決比特幣區塊鏈網絡基層的可擴展性和性能問題。在網絡延遲方面,鏈上擴展提供了在區塊鏈中處理更多交易的能力。例如,SegWit 可將更多交易量整合到 1 MB 區塊中,而比特幣現金(BCH,符號 Ƀ)則提升區塊大小。
SegWit
SegWit(比特幣改進提案編號 BIP14)是「獨立見證人」的簡稱,即爲交易分離數字簽名。2015 年 12 月,開發者 Pieter Wiulle 在規模化比特幣大會上首次推出。SegWit 旨在防止非故意比特幣交易延展性,實現可選的數據傳輸,並規避某些協議限制。
比特幣交易由以下三方面組成:
交易輸入,即比特幣發送方的地址
交易輸出,即接收比特幣地址
發送的比特幣數量,以及驗證發送方是否符合發送條件的數字簽名
如果數字簽名發生變化,交易標識符將發生變化。事實證明,比特幣的代碼允許在交易仍有待確認時更改數字簽名。將交易添加到網絡後,包括簽名在內的交易將不可變。簽名更改是爲了方便用戶對簽名進行數學檢查,但該簽名仍會經過網絡驗證。但是,當您在哈希算法上運行哈希算法時,它會產生不同的結果。
下面我們來看一個示例:
輸入:
上一交易日期:p9k5ee39a430901c91a5917b9f2dc19d6d1a0e9cea205b009ca73dd04470b9a6
指數:0
腳本簽名:304502206e21798a42fae0e854281abd38bacd1aeed3ee3738d9e1446618c4571d10
90db022100e2ac980643b0b82c0e88ffdfec6b64e3e6ba35e7ba5fdd7d5d6cc8d25c6b241501
輸出:
價值:2000000000
scriptPubKey:OP_DUP OP_HASH160 201371705fa9bd789a2fcd52d2c580b65d35549d
OP_EQUALVERIFY OP_CHECKSIG
本次交易中的輸入從交易 p9k5e 的輸出 #0 中導入 20 BTC... 然後,輸出將 20 BTC 發送到比特幣地址(此處以 2013 年十六進制表示... 而不是普通基數58)。當收款方想要花這筆錢時,他們將在自己的交易輸入中引用這筆交易的輸出 #0。
部分定義:
• 上一次交易 — 上一次交易到地址 A 的標識符
• 指數 — 輸入數字(此處只有一個輸入數字:0)
• scriptSig — 驗證腳本的第一部分(包含交易簽名)
• 價值 — 以 satoshi 爲單位發送的比特幣數量(一個比特幣 = 1 億個 satoshi)(上例中爲 20 個比特幣)
• scriptPubKey — 驗證腳本的第二部分,其中還包含接收方地址 B。
爲驗證上一筆交易的金額是否可用,需要將新交易的 scriptSig 與上一筆交易的 scriptPubKey 相結合,以確保結果真實有效;ScriptPubKey 只需檢查公鑰的等同性和簽名的有效性 (OP_CHECKSIG)。
在比特幣交易中,txid(交易 ID 簡稱或交易哈希值)是交易數據所有字段的 sha256d 哈希值。txid 的價值取決於 scriptSig。在挖礦節點流程交易期間,節點可以對 scriptSig 進行修改,以使簽名保持有效,交易將產生相同影響,但 txid 將發生變化。例如,可以添加 OP_NOP 操作(不做任何操作)。或者,爲了更復雜,您可以添加兩項操作:OP_DUP 和 OP_DROP(第一個是在堆棧上覆制籤名,第二個再次將其刪除)。簽名仍然有效,但 txid 會發生變化。
另一個例子是:如果簽名值爲「3」,我們可以將其更改爲「03」或「3+7-7」。在數學上,它仍然是具有有效簽名的交易價值,但哈希結果不同,因爲哈希取決於您如何寫出價值,而不是價值本身。
由於多種原因,現有交易的可變交易 ID 可能存在問題。例如,如果您希望在比特幣網絡之上構建 Layer 2 解決方案,您需要確保沒有人可以更改 Layer 1,因爲 Layer 2 依賴於此。
如果您正在支出或接受未確認資金,修改 txid 可能會導致問題。SegWit 如何解決這一問題:
使用 SegWit,所有可延展信息將與交易分離爲單獨的「證人數據」。計算 txid 時,不會包含這些可延展信息。在這種情況下,標識符永遠無法更改,因爲問題將得到解決。
下面是一個 SegWit 交易輸出示例:
指數 0
詳情
輸出
地址
35SegWitPieWKVHieXd97mnurNi8o6CM73
價值
1.00200000 BTC
PkScript
OP_HASH160
2928f43af18d2d60e8a843540d8086b305341339
OP_等值
SigScript
0014a4b4ca48de0b3fffc15404a1acdc8dbaae226955
見證人
30450221008604ef8f6d8afa892dee0f31259b6ce02dd70c545cfcfed8148179971876c54a022076d771d6e91bed212783c9b06e0de600fab2d518fad6f15a2b191d7fbd262a3e01
039d25ab79f41f75ceaf882411fd41fa670a4c672c23ffaf0e361a969cde0692e8
我們可以看到有證人信息,數據包括所有可延展信息。SigScript 的哈希信息比前一個示例少得多,無需 SegWit 交易。這也意味着,它減少了比特幣的交易規模,並透過從原始部分移除見證數據並將其附加爲最終的單獨結構來提高交易速度。
以下是 SegWit 的一些優勢:
節點性能 — 交易規模減小,因此比特幣網絡不會擁堵,因爲節點可以更快地驗證區塊(或交易)。
交易可延展性 — 如上所述,使用 SegWit,簽名從交易數據移至見證數據區塊。txid 不可變,可保護交易數據免受黑客攻擊。
簽名哈希操作的線性擴展 — 減少交易量,爲特定交易增加更多交易數據,作爲批次的一部分。SegWit 將交易簽名與交易數據區分開來,因此交易的每個字節需要哈希處理不超過兩次。
提高多簽名交易的安全性 — SegWit 提供兩種不同的腳本:一種是公鑰,另一種是將付款定向到腳本哈希值。在結合這些腳本時,SegWit 透過啓用多簽名 (multisig) 交易來提高安全性。
在 Layer 1 的基礎上構建 — SegWit 非常適合用於 Lightning Network 等 Layer 2 協議的比特幣開發。此外,SegWit 激活還推動了其他功能的開發工作,例如 MAST(支持更復雜的比特幣智能合約)、Schnorr 簽名(支持提升交易容量)和 TumbleBit(匿名頂層網絡)。
保護閃電網絡 — Lightning Network 微型支付渠道依靠雙簽名交易鎖定初始儲值。要開始支付閃電網絡,雙方的資金將發送至一個雙簽名地址。爲防止作弊,在資金實際發送至雙簽名地址之前,交易應進行雙簽名。雙方需要同步,才能從主區塊鏈中收集交易結果。此必填交易 ID 不可更改。
理論上,SegWit 可以將比特幣的吞吐量或 TPS 翻倍)。然而,雖然提高比特幣網絡的吞吐量至關重要,但即使理論上翻倍仍然太低,無法將比特幣用作支付系統。
區塊大小
另一個提高比特幣鏈上可擴展性的建議是增加區塊大小。這個想法非常簡單:將區塊大小從今天的 1 MB 增加到 8 MB 將使交易吞吐量增加 8 倍。例如,比特幣現金 (BCH) 區塊最初爲 8MB,目前 BCH 區塊設置爲 32 MB。這種垂直擴展方法在一個區塊內增加了更多交易。然而,增加區塊大小意味着區塊鏈可能要大很多倍,這需要更好的計算能力才能處理大型區塊。與此同時,由於有效誠實哈希能力的降低,這將在一定程度上降低網絡的安全性。
這也可能導致網絡集中在幾隻富人手中,因此最終可能會損害區塊鏈的主要原則去中心化和安全性。在安全問題方面,人們普遍認爲,如果更多網絡節點參與交易處理,區塊鏈網絡就會更加安全。隨着altcoin鏈的廣泛分佈,任何給定區塊鏈上的節點操作量都會減少。
這實際上可能會降低區塊鏈的安全性,因爲較小的altcoin網絡可能更容易受到網絡攻擊。例如,假設一個更大的網絡上大約有 10,000 個節點。要對網絡發起攻擊,至少需要 5,001 個節點 (51%) 遭到攻擊。如果我們將 10,000 個節點劃分爲 50 個較小的鏈,則每個鏈由 200 個節點組成,因此只需 101 個節點即可刪除任何較小的鏈,這就是所謂的 1% 攻擊問題。
另一個問題是跨鏈整合:雖然有一些跨區塊鏈整合解決方案,但整合小鏈和山寨幣的整體複雜性將大幅增加。SegWit2x是2017年對區塊大小辯論的擬議妥協,建議SegWit作爲第一步被激活,此後,區塊大小將增加到2 MB。然而,比特幣網絡中的大多數節點不接受這一提議。
鏈下解決方案
與鏈上解決方案的基本原理類似,比特幣社區也在積極尋找鏈下解決方案,有時也稱爲 Layer 2 解決方案。在鏈外擴展中,解決方案是在比特幣區塊鏈的基礎上構建一個額外的層,可以與兩個參與者一起處理各種交易。然後,這些交易可以分批進行,並在區塊鏈上作爲一項交易發送。其中一種鏈外解決方案稱爲照明網絡。
照明網絡
2016 年 1 月,一篇題爲「比特幣閃電網絡:可擴展鏈外即時支付由 Joseph Poon 和 Thaddeus Dryja 提交。其中描述了閃電網絡的輪廓。
Lightning 是一個去中心化網絡,在區塊鏈內使用智能合約功能,在參與者網絡中實現即時支付。
Lightning Network 的 Layer 2 支付解決方案可擴展區塊鏈,使大多數交易保持鏈外,實現無信任的即時支付。 它建立了一個所謂的支付渠道網絡,其中雙方進行交易並相互支付。交易過程是即時的,交易不需要由比特幣網絡的每個節點進行驗證、中繼和存儲,因爲交易僅由兩個參與者完成。
透過將支付移出鏈,在該渠道的支付量中,維持渠道的成本會降低,從而實現小額支付和小額交易,否則鏈上交易費用太貴而無法證明合理性。此外,Lightning Network 還透過現代數據處理和延遲限制擴展鏈外交易吞吐量,使支付能夠快速處理。
讓我們來瞭解一下閃電網絡的運作方式。
舉例說明:最初,Alice 持有 A1 承諾交易,Bob 持有 B1 承諾交易。A1 的撤銷密鑰 K A1 僅歸 Alice 所有,B1 的撤銷密鑰 K B1 僅歸 Bob 所有。
假設 Alice 和 Bob 的賬戶中各有 10 BTC。Alice 希望向 Bob 發送 2 BTC。
Alice 和 Bob 均存入等額資金(本例中爲 10 BTC),且每人都會鎖定資金。在公共框中存入等值資金的行爲以「支付渠道」的形式記錄在區塊鏈上,此後在兩名參與者之間開放。
Alice 創建了一項新交易 B2,其中 Alice 分配了 8 BTC,Bob 分配了 12 BTC。
Alice 簽署 B2 併發送給 Bob。
Bob 收到 B2,簽名並保存。
Bob 創建了一項新交易 A2,其中 Alice 分配了 8 BTC,Bob 分配了 12 BTC。
Bob 簽署了 A2 併發送給 Alice。
Alice 收到 A2,簽名並保存。
Alice 提供 Ka1,導致 A1 失效。然後,她可以刪除 A1。
Bob 提供 K B1,導致 B1 失效。然後,他可以刪除 B1。
總而言之,支付渠道正在爲雙方創建資金池組合,然後以商定的方式轉移資金池所有權的承諾。當 Alice 或 Bob 想要關閉頻道時,他們可以關閉頻道。「關閉渠道」僅表示雙方收回自己的資金。開箱即在區塊鏈上進行,並永久記錄由誰持有的箱子數量。
Lighting Network 使用哈希時間鎖定合約 (HTLC),HTLC 是一類使用哈希鎖和時鎖的付款,要求付款接收方在截止日期前透過生成加密付款證明確認收到付款,或喪失申領付款並將其返還給付款人的能力。它允許在沒有直接渠道的各方之間發送交易,方法是透過多個躍點(其他渠道)進行路由,以便任何連接到閃電網絡的用戶都可以參與單一的互聯全球金融體系。
下面我們來看一個示例:
Alice 想要向 Tim 付款,但她與 Tim 沒有支付渠道。Alice 與 Bob 建立了支付渠道,Bob 與 Tim 建立了支付渠道。問題是:Alice 如何支付 Tim?
爲此,Tim 必須創建加密密鑰字符串(密鑰),然後使用哈希函數(如 SHA-256)對其進行哈希處理,然後將其發送給 Alice。Tim 還與 Bob 分享了這一話題。爲簡化此書面插圖,我們將價值表示爲 V。
HTLC
哈希 (V) 是鎖,密鑰是解鎖 HTLC 的代碼。
Alice 與 Bob 一起創建了 HTLC,並告訴 Bob,如果他在 3 天內能夠製作出 V 的前像,她會給他付款。Alice 簽署了一筆交易,鎖定時間爲廣播後三天。Bob 可以在瞭解 V 的情況下贖回,之後只能由 Alice 贖回。HTLC 允許 Alice 向 Bob 做出有條件的承諾,同時確保如果 Bob 不知道什麼是 V,她的資金不會被意外燒燬。
Bob 也這樣做,創建了一個 HTLC,如果 Tim 能在兩天內生產 V,則會向 Tim 支付費用。但事實上,Tim 確實知道 V。 由於 Tim 能夠使用其密鑰從 Bob 處提取所需金額,因此 Tim 可以考慮完成 Alice 的付款。現在,他與 Bob 分享 V 時沒有問題,因此他也可以領取資金。
Tim 在兩天內向 Bob 透露了密鑰,Tim 將獲得 Bob 的報酬。
Bob 在三天內向 Alice 透露了密鑰,Bob 得到了 Alice 的支付。
所有交易均在 Lightning Network 內完成,每個人都會以機械方式獲得報酬,因爲閃電網絡本質上幾乎是原子性的,並且是雙向的,這意味着每個人都會獲得報酬,或者沒有人獲得報酬。
使用 Lighting Network 時,在廣播支付交易時,將首先對所有單筆交易進行驗證,且交易記錄必須與單筆交易記錄一致,以避免廣播虛假或錯誤交易。欺詐交易也會受到處罰:如果照明網絡檢測到系統中存在惡意行爲者,則會立即受到處罰。這樣,整個網絡都能確保可信度和一致性,同時避免不良行爲。
與鏈上交易相比,使用閃電網絡有以下幾大優勢:
快速即時交易:閃電網絡交易的結算時間不到一分鐘,可能會在幾毫秒內完成。
小額支付:Lightning Network 支持大量微交易。
交易吞吐量:從根本上說,協議下每秒的付款次數沒有限制。交易次數僅受每個節點的容量和速度限制。
隱私:無區塊鏈記錄。單個閃電網絡支付交易的詳細信息不會直接公開記錄在區塊鏈上。付款可能會透過多個順序渠道進行,因爲每個節點運營商都能看到其渠道的付款。但是,如果這些資金不相鄰,則無法看到其來源或目的地。
鏈上擁堵減少
極低手續費:支付至照明網絡中中間節點的交易費用通常很小,通常以 Millisatoshis 爲單位。
限制
Lightning Network 由兩個節點之間的雙向支付渠道組成,這兩個節點組合後可創建智能合約。如果任一方在任何時候下架通道,通道將關閉並在區塊鏈上結算。
由於閃電網絡的爭議機制性質,每位參與者必須始終監控其頻道並跟蹤向網絡廣播的離線分類賬的狀態。「watchtower」的概念旨在解決這一問題。
結語
比特幣區塊鏈仍然是一個開創性的去中心化支付系統,但其固有設計將安全性和去中心化放在可擴展性之上,與傳統支付網絡相比,交易吞吐量有限。SegWit 和 Lightning Network 等創新代表了重要的進步,透過提高交易能力和實現鏈外即時支付來提升比特幣的性能。
然而,區塊鏈可擴展性 Trilemma 繼續挑戰開發者,在可擴展性、安全性和去中心化之間取得平衡,而不會妥協。隨着比特幣的發展,持續研究和分層擴展解決方案對於支持更廣泛的應用以及在日益數字化的經濟中保持網絡完整性至關重要。
#LearnWithBybit

