1. 簡介
歡迎閱讀《精通閃電網路》!
閃電網路(Lightning Network,常簡稱為 LN)正在改變人們在線上交換價值的方式,它是比特幣歷史上最令人興奮的進展之一。 如今,在 2021 年,閃電網路仍處於起步階段。閃電網路是一種以智慧且非顯而易見的方式使用比特幣的協議。它是建立在比特幣之上的第二層技術。
閃電網路的概念於 2015 年被提出,第一個實作於 2018 年推出。截至 2021 年,我們才剛開始看到閃電網路為比特幣帶來的機會,包括改進的隱私性、速度和可擴展性。 憑藉對閃電網路的核心知識,您可以幫助塑造網路的未來,同時也為自己創造機會。
我們假設您已經具備一些比特幣的基礎知識,但如果沒有,不用擔心——我們將在 比特幣基礎回顧 中解釋最重要的比特幣概念,這些是理解閃電網路所必須知道的。如果您想了解更多關於比特幣的知識,可以閱讀 Andreas M. Antonopoulos 的《Mastering Bitcoin》第二版(O’Reilly 出版),可在 網路上免費取得。
雖然本書的大部分內容是為程式設計師撰寫的,但前幾章的寫法讓任何人都能理解,無論技術經驗如何。在本章中,我們將從一些術語開始,然後探討信任及其在這些系統中的應用,最後我們將討論閃電網路的歷史和未來。讓我們開始吧。
1.1. 閃電網路基本概念
當我們探索閃電網路的實際運作方式時,我們會遇到一些技術術語,起初可能會有點令人困惑。雖然所有這些概念和術語將在我們閱讀本書的過程中詳細解釋,並在術語表中定義,但現在了解一些基本定義將使接下來兩章的概念更容易理解。如果您還不理解這些定義中的所有詞彙,沒關係。隨著您閱讀文本,您會理解更多。
- 區塊鏈(Blockchain)
-
一個由電腦網路產生的分散式交易帳本。例如,比特幣是一個產生區塊鏈的系統。閃電網路本身不是區塊鏈,也不產生區塊鏈。它是一個依賴現有外部區塊鏈來確保其安全性的網路。
- 數位簽章(Digital signature)
-
數位簽章是一種用於驗證數位訊息或文件真實性的數學方案。有效的數位簽章讓接收者有理由相信訊息是由已知的發送者創建的,發送者不能否認已發送該訊息,且訊息在傳輸過程中未被篡改。
- 雜湊函數(Hash function)
-
加密雜湊函數是一種將任意大小的資料映射到固定大小位元字串(雜湊值)的數學演算法,並被設計為單向函數,即一個在實務上無法反向運算的函數。
- 節點(Node)
-
參與網路的電腦。閃電網路節點是參與閃電網路的電腦。比特幣節點是參與比特幣網路的電腦。通常,閃電網路使用者會同時運行閃電網路節點和比特幣節點。
- 鏈上 vs 鏈下(On-chain versus off-chain)
-
如果支付被記錄為比特幣(或其他底層)區塊鏈上的交易,則該支付是「鏈上」的。透過閃電網路節點之間的支付通道發送的支付,不會顯示在底層區塊鏈上,這些被稱為「鏈下」支付。通常在閃電網路中,唯一的鏈上交易是用於開啟和關閉閃電網路支付通道的交易。還存在第三種通道修改交易,稱為拼接(splicing),可用於增加/減少通道中承諾的資金量。
- 支付(Payment)
-
當價值在閃電網路上交換時,我們稱之為「支付」,相對於比特幣區塊鏈上的「交易」。
- 支付通道(Payment channel)
-
閃電網路上兩個節點之間的「財務關係」,通常透過多重簽名比特幣交易實現,在兩個閃電網路節點之間共享對比特幣的控制權。
- 路由 vs 發送(Routing versus sending)
-
與比特幣透過向所有人廣播來「發送」交易不同,閃電網路是一個路由網路,支付沿著從發送者到接收者的「路徑」,透過一個或多個支付通道進行「路由」。
- 交易(Transaction)
-
記錄對某些資金(例如一些比特幣)控制權轉移的資料結構。閃電網路依賴比特幣交易(或其他區塊鏈的交易)來追蹤資金的控制權。
這些術語以及許多其他術語的更詳細定義可以在 術語表 中找到。在本書中,我們將解釋這些概念的含義以及這些技術的實際運作方式。
|
在本書中,您會看到首字母大寫的「Bitcoin」,這是指「比特幣系統」,是一個專有名詞。您也會看到小寫的「bitcoin」,這是指貨幣單位。每個 bitcoin 進一步細分為 1 億個單位,每個單位稱為「satoshi」(單數)或「satoshis」(複數)。 |
現在您已經熟悉了這些基本術語,讓我們轉向一個您已經熟悉的概念:信任。
1.2. 去中心化網路中的信任
您經常會聽到人們將比特幣和閃電網路稱為「無需信任的」(trustless)。乍看之下這令人困惑。畢竟,信任不是一件好事嗎?銀行甚至將它用在名字中!一個「無需信任的」系統,一個沒有信任的系統,難道不是一件壞事嗎?
「無需信任」一詞旨在傳達不需要信任系統中其他參與者就能運作的能力。在像比特幣這樣的去中心化系統中,您始終可以選擇與您信任的人進行交易。然而,即使您無法信任交易中的另一方,該系統也能確保您不會被欺騙。信任是系統的一個可有可無的特性,而不是必須具備的特性。
相比之下,傳統系統如銀行則要求您必須信任第三方,因為他們控制著您的資金。如果銀行違背了您的信任,您可能可以從監管機構或法院尋求一些補救,但需要付出巨大的時間、金錢和精力成本。
無需信任並不意味著沒有信任。它意味著信任不是所有交易的必要前提,即使與您不信任的人交易,系統也能防止欺騙。
在我們深入了解閃電網路的運作方式之前,重要的是理解一個構成比特幣、閃電網路和許多其他類似系統基礎的基本概念:我們稱之為「公平協議」。公平協議是一種在不需要信任彼此的參與者之間,無需中央權威機構就能實現公平結果的方式,它是比特幣等去中心化系統的骨幹。
1.3. 無需中央權威的公平
當人們有競爭性利益時,他們如何建立足夠的信任來進行某些合作或交易行為?這個問題的答案位於多個科學和人文學科的核心,如經濟學、社會學、行為心理學和數學。其中一些學科給出了依賴聲譽、公平、道德甚至宗教等概念的「軟性」答案。其他學科則給出了具體的答案,僅依賴於這些互動參與者會理性行事、以自身利益為主要目標的假設。
廣義而言,有幾種方法可以確保可能有競爭性利益的個人之間互動的公平結果:
- 需要信任
-
您只與您已經信任的人互動,這種信任基於先前的互動、聲譽或家族關係。這在小規模範圍內運作得很好,特別是在家庭和小團體內,它是合作行為最常見的基礎。不幸的是,它無法擴展,而且會受到部落主義(內群體)偏見的影響。
- 法治
-
建立由機構執行的互動規則。這種方式更具可擴展性,但由於風俗和傳統的差異,以及執法機構無法擴展,它無法在全球範圍內擴展。這種解決方案的一個令人不快的副作用是,隨著機構變得越來越大,它們變得越來越強大,這可能導致腐敗。
- 受信任的第三方
-
在每次互動中放置一個中介來執行公平。結合「法治」來對中介進行監督,這種方式更具可擴展性,但會遭受同樣的權力失衡問題:中介變得非常強大,可能會吸引腐敗。權力集中會導致系統性風險和系統性失敗(「大到不能倒」)。
- 賽局理論公平協議
-
最後一類源自網際網路和密碼學的結合,是本節的主題。讓我們看看它是如何運作的,以及它的優缺點。
1.3.1. 無需中介的受信任協議
像比特幣和閃電網路這樣的密碼學系統是允許您與不信任的人(和電腦)進行交易的系統。這通常被稱為「無需信任」的操作,儘管它實際上並非完全無需信任。您必須信任您運行的軟體,並且您必須信任該軟體實作的協議將產生公平的結果。
這種密碼學系統與傳統金融系統的最大區別在於,在傳統金融中,您有一個「受信任的第三方」,例如銀行,來確保結果公平。這種系統的一個重大問題是它們將太多權力交給了第三方,而且它們也容易受到「單點故障」的影響。如果受信任的第三方本身違背信任或試圖欺騙,信任的基礎就會崩潰。
當您研究密碼學系統時,您會注意到一個特定的模式:這些系統不是依賴受信任的第三方,而是試圖透過使用激勵和懲罰系統來防止不公平的結果。在密碼學系統中,您將信任放在「協議」中,協議實際上是一個具有一組規則的系統,如果設計得當,將正確應用所需的激勵和懲罰。這種方法的優勢是雙重的:您不僅避免了信任第三方,還減少了執行公平結果的需要。只要參與者遵循約定的協議並留在系統內,該協議中的激勵機制就能在不需要強制執行的情況下實現公平結果。
使用激勵和懲罰來實現公平結果是數學一個分支——「賽局理論」的一個方面,它研究「理性決策者之間戰略互動的模型」。[1]像比特幣和閃電網路這樣控制參與者之間金融互動的密碼學系統,嚴重依賴賽局理論來防止參與者欺騙,並讓不信任彼此的參與者實現公平結果。
雖然賽局理論及其在密碼學系統中的使用起初可能看起來令人困惑和陌生,但您很可能在日常生活中已經熟悉這些系統;只是您還沒有認出它們。在下一節中,我們將使用一個童年的簡單例子來幫助我們識別基本模式。一旦您理解了基本模式,您將在區塊鏈領域到處看到它,並會快速直觀地認出它。
在本書中,我們稱這種模式為「公平協議」,定義為使用激勵和/或懲罰系統來確保不信任彼此的參與者獲得公平結果的過程。公平協議的強制執行僅在確保參與者無法逃避激勵或懲罰時才是必要的。
1.3.2. 公平協議實例
讓我們看一個您可能已經熟悉的公平協議例子。
想像一個家庭午餐,有一位家長和兩個孩子。孩子們是挑食者,他們唯一同意吃的東西是炸薯條。家長準備了一碗炸薯條(根據您使用的英語方言,稱為「french fries」或「chips」)。兩個兄弟姐妹必須分享這盤薯條。家長必須確保薯條公平分配給每個孩子;否則,家長將不得不聽不斷的抱怨(可能整天),而且總是有可能不公平的情況升級為暴力。家長該怎麼辦?
在兩個不信任彼此且有競爭性利益的兄弟姐妹之間的這種戰略互動中,有幾種不同的方法可以實現公平。天真但常用的方法是讓家長使用他們作為受信任第三方的權威:他們將薯條分成兩份。這類似於傳統金融,銀行、會計師或律師作為受信任的第三方來防止雙方之間的欺騙。
這種情況的問題是它將大量權力和責任交給了受信任的第三方。在這個例子中,家長完全負責薯條的平等分配,而各方只是等待、觀看和抱怨。孩子們指責家長偏心,沒有公平分配薯條。兄弟姐妹為薯條爭吵,大喊「那塊薯條更大!」並把家長拖入他們的爭吵。聽起來很糟糕,不是嗎?家長應該更大聲地喊?把所有薯條都拿走?威脅再也不做薯條,讓那些不知感恩的孩子挨餓?
存在一個更好的解決方案:教兄弟姐妹玩一個叫做「分割與選擇」的遊戲。每頓午餐,一個兄弟姐妹把薯條分成兩份,另一個兄弟姐妹選擇他們想要哪一份。幾乎立即,兄弟姐妹們就弄清楚了這個遊戲的動態。如果分割的那個人犯了錯誤或試圖欺騙,另一個兄弟姐妹可以通過選擇較大的那碗來「懲罰」他們。讓兩個兄弟姐妹,尤其是分割薯條的那個人,公平地進行遊戲符合他們的最佳利益。在這種情況下,只有欺騙者會輸。家長甚至不必使用他們的權威或強制執行公平。家長所要做的就是「執行協議」;只要兄弟姐妹無法逃脫他們被分配的「分割者」和「選擇者」角色,協議本身就能確保公平結果,而無需任何干預。家長不能偏心或扭曲結果。
|
雖然 1980 年代臭名昭著的薯條戰爭很好地說明了這一點,但前述場景與任何作者與他們表親的實際童年經歷之間的任何相似之處純屬巧合…或者是嗎? |
1.3.3. 安全原語作為構建模組
為了讓像這樣的公平協議運作,需要有某些保證,或稱為「安全原語」,可以組合起來確保強制執行。第一個安全原語是「嚴格的時間排序/順序」:「分割」動作必須在「選擇」動作之前發生。這不是立即顯而易見的,但除非您能保證動作 A 在動作 B 之前發生,否則協議就會崩潰。第二個安全原語是「承諾與不可否認性」。每個兄弟姐妹必須承諾他們選擇的角色:分割者或選擇者。此外,一旦分割完成,分割者就承諾了他們創建的分割——他們不能否認該選擇並重新嘗試。
密碼學系統提供了許多安全原語,可以以不同方式組合來構建公平協議。除了順序和承諾之外,我們還可以使用許多其他工具:
-
雜湊函數用於對資料進行指紋識別,作為承諾的一種形式,或作為數位簽章的基礎
-
數位簽章用於身份驗證、不可否認性和秘密所有權證明
-
加密/解密用於將資訊存取限制為僅授權參與者
這只是正在使用的整個安全和密碼學原語「動物園」的一小部分列表。更多基本原語和組合一直在被發明。
在我們的現實生活例子中,我們看到了一種稱為「分割與選擇」的公平協議形式。這只是透過以不同方式組合安全原語構建模組可以構建的無數不同公平協議之一。但基本模式始終相同:兩個或更多參與者在不信任彼此的情況下,透過參與一系列屬於約定協議一部分的步驟來進行互動。協議的步驟安排激勵和懲罰,以確保如果參與者是理性的,欺騙是適得其反的,公平是自動的結果。強制執行不是獲得公平結果所必需的——它只是保持參與者不脫離約定協議所必需的。
現在您已經理解了這個基本模式,您將開始在比特幣、閃電網路和許多其他系統中到處看到它。接下來讓我們看一些具體的例子。
1.3.4. 公平協議範例
最突出的公平協議例子是比特幣的共識演算法:工作量證明(Proof of Work,PoW)。在比特幣中,礦工競爭驗證交易並將它們聚合到區塊中。為了確保礦工不會欺騙,而不將權威託付給他們,比特幣使用激勵和懲罰系統。礦工必須使用電力並專門用硬體進行「工作」,這些工作作為「證明」嵌入到每個區塊中。這是因為雜湊函數的一個特性,即輸出值在整個可能輸出的範圍內隨機分布。如果礦工成功快速產生一個有效區塊,他們會透過獲得該區塊的區塊獎勵來獲得獎勵。強制礦工在網路考慮他們的區塊之前使用大量電力意味著他們有動力正確驗證區塊中的交易。如果他們欺騙或犯任何錯誤,他們的區塊會被拒絕,他們用於「證明」的電力就會浪費。沒有人需要強迫礦工產生有效區塊;獎勵和懲罰激勵他們這樣做。協議需要做的就是確保只有帶有工作量證明的有效區塊被接受。
公平協議模式也可以在閃電網路的許多不同方面找到:
-
為通道提供資金的人確保他們在發布資金交易之前已簽署退款交易。
-
每當通道移動到新狀態時,舊狀態會被「撤銷」,確保如果任何人試圖廣播它,他們會失去整個餘額並受到懲罰。
-
轉發支付的人知道,如果他們承諾向前轉發資金,他們要麼可以獲得退款,要麼從前一個節點獲得付款。
我們一次又一次地看到這種模式。公平結果不是由任何權威強制執行的。它們作為獎勵公平和懲罰欺騙的協議的自然結果而出現,這是一種透過將自利引導向公平結果來利用自利的公平協議。
比特幣和閃電網路都是公平協議的實作。那麼為什麼我們需要閃電網路?比特幣還不夠嗎?
1.4. 閃電網路的動機
比特幣是一個將交易記錄在全球複製的公共帳本上的系統。每筆交易都被每台參與的電腦看到、驗證和儲存。正如您可以想像的,這會產生大量資料,並且難以擴展。
隨著比特幣和交易需求的增長,每個區塊中的交易數量增加,直到最終達到區塊大小限制。 一旦區塊「滿了」,多餘的交易就會留在佇列中等待。許多使用者會增加他們願意支付的費用,以在下一個區塊中為他們的交易購買空間。
如果需求持續超過網路容量,越來越多使用者的交易將等待未確認。對費用的競爭也增加了每筆交易的成本,使許多小額交易(例如微支付)在需求特別高的時期完全不經濟。
為了解決這個問題,我們可以增加區塊大小限制,為更多交易創造空間。區塊空間「供應」的增加將導致交易費用的較低價格均衡。
然而,增加區塊大小會將成本轉移給節點運營商,並要求他們花費更多資源來驗證和儲存區塊鏈。因為區塊鏈是八卦協議,每個節點都需要知道和驗證網路上發生的每一筆交易。此外,一旦驗證,每筆交易和區塊必須傳播給節點的「鄰居」,成倍增加頻寬需求。因此,區塊大小越大,每個單獨節點的頻寬、處理和儲存需求就越大。以這種方式增加交易容量會透過減少節點數量和節點運營商而產生使系統中心化的不良效果。由於節點運營商不會因運行節點而獲得補償,如果運行節點非常昂貴,只有少數資金充足的節點運營商會繼續運行節點。
1.4.1. 擴展區塊鏈
增加區塊大小或減少出塊時間對網路中心化的副作用是嚴重的,從數字計算可以看出。
讓我們假設比特幣的使用增長到網路必須處理每秒 40,000 筆交易,這大約是 Visa 網路在高峰使用期間的交易處理水平。
假設每筆交易平均 250 位元組,這將導致每秒 10 兆位元組(MBps)或每秒 80 兆位元(Mbps)的資料流,僅僅是為了能夠接收所有交易。 這還不包括將交易資訊轉發給其他節點的流量開銷。 雖然在高速光纖和 5G 行動速度的背景下 10 MBps 似乎不算極端,但它實際上會排除任何無法滿足此要求的人運行節點,特別是在高效能網際網路不可負擔或不普及的國家。
使用者還對其頻寬有許多其他需求,不能指望僅為接收交易就花費這麼多。
此外,在本地儲存這些資訊將導致每天 864 GB。這大約是 1 TB 的資料,或一個硬碟的大小。
每秒驗證 40,000 個橢圓曲線數位簽章演算法(ECDSA)簽名也幾乎不可行(參見 StackExchange 上的這篇文章),使比特幣區塊鏈的「初始區塊下載(IBD)」(從創世區塊開始同步和驗證所有內容)在沒有非常昂貴的硬體的情況下幾乎不可能。
雖然每秒 40,000 筆交易看起來很多,但它只是在高峰時段達到傳統金融支付網路的同等水平。機器對機器支付、微交易和其他應用的創新可能會將需求推高到比這高出許多個數量級。
簡單地說:您無法以去中心化的方式擴展區塊鏈來驗證全世界的交易。
但是,如果每個節點不需要知道和驗證每一筆交易呢?如果有一種方法可以實現可擴展的鏈下交易,而不會失去比特幣網路的安全性呢?
2015 年 2 月,Joseph Poon 和 Thaddeus Dryja 發表了《The Bitcoin Lightning Network: Scalable Off-Chain Instant Payments》[2],提出了比特幣可擴展性問題的可能解決方案。
在(現已過時的)白皮書中,Poon 和 Dryja 估計,為了讓比特幣達到 Visa 在高峰期處理的每秒 47,000 筆交易,需要 8 GB 的區塊。 這將使運行節點對於除了大型企業和工業級運營之外的任何人都完全不可行。 結果將是一個只有少數使用者可以實際驗證帳本狀態的網路。 比特幣依賴使用者自己驗證帳本,而不是明確信任第三方,以保持去中心化。 使使用者無法負擔運行節點的費用將迫使普通使用者信任第三方來發現帳本狀態,最終破壞比特幣的信任模型。
閃電網路提出了一個新網路,一個第二層,使用者可以在這裡進行點對點支付,而不需要為每筆支付在比特幣區塊鏈上發布交易。 使用者可以在閃電網路上相互支付任意多次,而不會產生額外的比特幣交易或鏈上費用。 他們只使用比特幣區塊鏈最初將比特幣載入閃電網路,以及「結算」,即從閃電網路中移除比特幣。 結果是更多的比特幣支付可以在鏈下進行,只有初始載入和最終結算交易需要由比特幣節點驗證和儲存。 除了減輕節點負擔之外,閃電網路上的支付對使用者來說更便宜,因為他們不需要支付區塊鏈費用,對使用者來說更私密,因為它們不會發布給網路的所有參與者,而且不會永久儲存。
雖然閃電網路最初是為比特幣設計的,但它可以在任何滿足一些基本技術要求的區塊鏈上實現。其他區塊鏈,如萊特幣(Litecoin),已經支援閃電網路。此外,還有其他幾個區塊鏈正在開發類似的第二層或「Layer 2」解決方案來幫助它們擴展。
1.5. 閃電網路的定義特性
閃電網路是一個作為第二層協議運行在比特幣和其他區塊鏈之上的網路。閃電網路實現了快速、安全、私密、無需信任和無需許可的支付。以下是閃電網路的一些特性:
-
閃電網路的使用者可以以低成本即時向彼此路由支付。
-
在閃電網路上交換價值的使用者不需要等待區塊確認。
-
一旦閃電網路上的支付完成,通常在幾秒鐘內,它就是最終的且不可逆轉。與比特幣交易一樣,閃電網路上的支付只能由接收者退款。
-
鏈上比特幣交易是廣播並由網路中所有節點驗證的,而在閃電網路上路由的支付是在成對節點之間傳輸的,對所有人不可見,從而實現了更大的隱私性。
-
與比特幣網路上的交易不同,閃電網路上路由的支付不需要永久儲存。因此閃電網路使用更少的資源,因此更便宜。這個特性也有隱私方面的好處。
-
閃電網路使用洋蔥路由,類似於洋蔥路由器(Tor)隱私網路使用的協議,因此即使參與路由支付的節點也只直接知道其在支付路線中的前一個和後一個節點。
-
當在比特幣之上使用時,閃電網路使用真正的比特幣,始終由使用者擁有(保管)並完全控制。閃電網路不是一個單獨的代幣或幣種,它「就是」比特幣。
1.6. 閃電網路使用案例、使用者及其故事
為了更好地理解閃電網路的實際運作方式,以及人們為什麼使用它,我們將跟隨一些使用者及其故事。
在我們的例子中,有些人已經使用過比特幣,有些人則是比特幣網路的新手。每個人及其故事,如下所列,說明了一個或多個具體的使用案例。我們將在整本書中重新訪問他們:
- 消費者
-
Alice 是一位比特幣使用者,她想為小額零售購買進行快速、安全、便宜且私密的支付。她使用閃電網路用比特幣購買咖啡。
- 商家
-
Bob 擁有一家咖啡店,「Bob’s Cafe」。鏈上比特幣支付無法擴展到像一杯咖啡這樣的小額支付,所以他使用閃電網路幾乎即時接受比特幣支付,並且費用很低。
- 軟體服務業務
-
Chan 是一位中國企業家,銷售與閃電網路以及比特幣和其他加密貨幣相關的資訊服務。Chan 透過在閃電網路上實現微支付來銷售這些資訊服務。此外,Chan 還實施了一項流動性提供者服務,在閃電網路上出租入站通道容量,對每個租期收取少量比特幣費用。
- 遊戲玩家
-
Dina 是一位來自俄羅斯的青少年玩家。她玩許多不同的電腦遊戲,但她最喜歡的是那些具有基於真實貨幣的「遊戲內經濟」的遊戲。在玩遊戲時,她還透過獲取和銷售虛擬遊戲內物品來賺錢。閃電網路允許她為遊戲內物品進行小額交易,以及透過完成任務賺取小額收入。
1.7. 結論
在本章中,我們討論了比特幣和閃電網路的基礎概念:公平協議。
我們回顧了閃電網路的歷史以及比特幣和其他基於區塊鏈網路的第二層擴展解決方案背後的動機。
我們學習了基本術語,包括節點、支付通道、鏈上交易和鏈下支付。
最後,我們認識了 Alice、Bob、Chan 和 Dina,我們將在本書的其餘部分跟隨他們。在下一章中,我們將認識 Alice,並跟隨她的思考過程,當她選擇閃電網路錢包並準備進行她的第一筆閃電網路支付——從 Bob’s Cafe 購買一杯咖啡。