介紹
加密貨幣有一些非常獨特的屬性。這些不易被黑客攻擊或輕易關閉,任何人都可以使用它們在世界各地傳輸價值,而無需第三方干預。
爲了確保維持這些特性,必須做出重大妥協。由於許多節點負責運行加密貨幣網絡,因此吞吐量是有限的。因此,對於旨在主流採用的技術來說,區塊鏈網絡每秒可以處理的交易數量(TPS)相對較低。
爲了克服區塊鏈的固有侷限性,人們提出了許多可擴展性解決方案來增加網絡可以處理的交易數量。在本文中,我們將討論比特幣協議的擴展之一——閃電網絡。
什麼是閃電網絡?
閃電網絡是一個位於區塊鏈之上的網絡,允許快速點對點交易。這並不是比特幣獨有的:萊特幣等其他加密貨幣也集成了它。
您可能想知道“坐在區塊鏈之上”是什麼意思。閃電網絡就是我們所說的鏈下或第 2 層解決方案。它允許用戶進行交易,而無需在區塊鏈中記錄每筆交易。
閃電網絡與比特幣網絡分開,擁有自己的節點和軟件,但仍與主鏈通信。要進入或退出閃電網絡,您必須在區塊鏈上創建特殊交易。
您對第一筆交易實際上所做的是與另一個用戶創建一種智能合約。在我們討論細節之前,想象一下智能合約擁有其他用戶的私人分類賬。您可以在此登記簿上輸入許多交易。這些只有您和您的對手可見,但由於某些特定功能,你們都無法作弊。
這個迷你寄存器是一個頻道。假設 Alice 和 Bob 各將 5 BTC 放入智能合約中。在他們的頻道中,他們現在每人有 5 BTC 的餘額。 Alice 現在可以在賬本中寫入她向 Bob 支付 1 BTC 的信息。 Bob 現在有 6 個 BTC,Alice 有 4 個。然後 Bob 可以決定將 2 BTC 發送回 Alice,將餘額更新爲 Alice 一側的 6 BTC 和 Bob 一側的 4 BTC。他們可能會繼續這樣做一段時間。
任何時候,其中之一都可以在區塊鏈上發佈通道的當前狀態。此時,通道兩側的餘額被分配給鏈上各自的各方。
顧名思義,閃電網絡交易速度很快。在您的互聯網連接允許的情況下,無需等待付款即可進行區塊確認。
爲什麼需要閃電網絡?
到目前爲止,閃電網絡(或 LN)似乎是提高比特幣區塊鏈可擴展性的最現實的方法。由於存在硬分叉和潛在災難性錯誤的風險,協調如此龐大的生態系統中的變化非常棘手。考慮到如此大的價值,實驗是極其危險的。
當這個實驗遠離區塊鏈進行時,靈活性就會增加。如果出現問題,不會對比特幣網絡產生影響。第 2 層解決方案不會對允許該協議運行 10 多年的安全假設提出質疑。
也沒有義務改變舊的做事方式。鏈上交易繼續爲最終用戶工作,但最終用戶現在可以選擇執行鏈下交易。
使用閃電網絡有幾個好處。這裏有一些。
可擴展性
比特幣區塊通常每十分鐘創建一次,並且無法存儲許多交易。區塊中的空間是可供拍賣的稀缺資源。您實際上是在與其他用戶競爭以包含您的交易。由於礦工主要關心的是獲得報酬,因此他們會優先考慮費用最高的交易。
當很少有用戶嘗試同時發送資金時,這並不是真正的問題。您可以設置較低的費用,並且您有機會看到下一個區塊中包含的交易。但當每個人同時廣播交易時,平均費用可能會大幅增加。在某些情況下,這些費用超過了 5 美元。在2017年買方市場的高峯期,它們甚至超過了50美元。

平均比特幣交易費用(美元)
對於幾千美元的比特幣交易來說,這似乎微不足道,但對於小額支付來說,這是不可行的。誰願意爲 3 美元的咖啡支付 5 美元的費用?
使用閃電網絡,您必須支付兩項費用:一項用於打開通道,另一項用於關閉通道。但一旦通道開放,您和您的交易對手就可以免費進行數千筆交易。完成後,您只需將最終狀態發佈到區塊鏈即可。
總體而言,如果更多用戶使用閃電網絡等鏈下解決方案,區塊空間將得到更有效的利用。低價值、高頻的轉賬可以在支付通道中完成,而區塊空間則用於較大的交易和通道的打開/關閉。這將使該系統可供更廣泛的用戶羣使用,從而使其能夠長期擴展。
小額支付
您可以在一筆交易中發送的最小比特幣金額約爲 0.00000546 BTC。在撰寫本文時,這大約是四美分。雖然數額很小,但閃電網絡允許您將限制降低到儘可能小的單位(0.00000001 BTC:聰)。
閃電網絡對於小額支付來說更有趣。正常交易的費用使得向主鏈發送小額金額是不切實際的。然而,在一個渠道中,您可以免費發送一小部分比特幣。
小額支付適用於許多用例。一些人認爲它們可以替代訂閱模式,用戶每次使用服務時只需支付非常非常少量的費用,而不是按月訂閱。
保密
閃電網絡的另一個優點是它可以爲用戶提供高度的隱私。各方無需向更廣泛的網絡公開其渠道。如果您可以查看區塊鏈並說此交易打開了一個通道,那麼您不一定能夠知道該通道中發生了什麼。如果參與者決定將他們的頻道設爲私有,他們實際上將是唯一知道已發生的交易的人。
如果 Alice 與 Bob 有一個通道,並且 Bob 有與 Carol 的通道,則 Alice 和 Carol 可以通過 Bob 相互發送付款。如果 Dan 與 Carol 連接,Alice 可以向他付款。閃電網絡可以被視爲一個由相互連接的支付渠道組成的龐大網絡。在這樣的設置中,一旦通道關閉,您就無法確定 Alice 將資金髮送給了誰。
閃電網絡如何運作?
我們已經解釋了閃電網絡如何在高層依賴節點之間的通道。現在讓我們來看看幕後的情況。
多重簽名地址
多重簽名(或多重簽名)地址是可以使用多個私鑰的地址。創建多重簽名時,您必須指明可以使用資金的私鑰數量以及簽署交易所需的私鑰數量。例如,1-5 方案意味着五個密鑰可以產生有效簽名,並且只需要一個。 2-3 圖表示三個密鑰中,需要兩個來花費資金。
爲了初始化閃電通道,參與者以 2-2 的模式鎖定資金。只有兩個密鑰能夠簽名,並且需要這些密鑰來轉移資金。讓我們帶回我們的朋友愛麗絲和鮑勃。由於他們將在未來幾個月內進行大量付款,因此他們決定開放閃電網絡通道。
首先,他們每人將 3 BTC 存入共同擁有的多重簽名地址。需要重申的是,未經 Alice 的批准,Bob 不能從該地址提取資金,反之亦然。
現在他們只需保留一張紙來調整每個人的餘額即可。他們各自的起始餘額爲 3 BTC。如果愛麗絲想向鮑勃支付 1 BTC,爲什麼不做一個註釋,說明愛麗絲現在有 2 BTC,鮑勃有 4 個呢?可以這樣跟蹤餘額,直到他們決定提取資金。
這是可能的,但其中的樂趣在哪裏呢?更重要的是,這不是很容易讓一方拒絕合作嗎?如果愛麗絲最終得到 6 個比特幣,而鮑勃得到 0 個比特幣,那麼沒有什麼可以阻止鮑勃拒絕釋放資金(也許除了他與愛麗絲的友誼)。
Contrats 哈希時間鎖 (HTLC)
上述系統很無聊,並且沒有提供比當今可靠的設置更多的功能。當我們引入一種強制執行 Alice 和 Bob 之間“契約”的機制時,情況變得更加有趣。如果一方決定不遵守規則,另一方仍然可以追索從渠道中提取資金。
這種機制就是哈希時間鎖定合約(或 HTLC)。雖然這個術語可能很可怕,但它是一個相對簡單易懂的概念。這使用兩種技術(散列鎖和時間鎖)來糾正通道中的任何不合作行爲。
哈希鎖是交易上的一個條件,這意味着您只能通過證明您知道祕密來花費資金。發件人對一組數據進行哈希處理,並將該哈希值包含在收件人的交易中。接收者只有在提供與哈希值匹配的原始數據(祕密)時才能使用它。他們提供該數據的唯一方法是發送者將其提供給他們。
時間鎖定條件可防止資金在特定日期之前花費。這被定義爲實時或塊高度。
HTLC 代表哈希鎖和時間鎖的組合。在實踐中,HTLC 可用於創建有條件付款:接收者必須在特定日期之前提供祕密,否則發送者將能夠收回資金。我們也許可以通過一個例子更好地解釋下一節,所以讓我們回到愛麗絲和鮑勃。
打開和關閉通道
我們舉了愛麗絲和鮑勃的例子,他們剛剛創建了爲他們將要共享的多重簽名地址融資的交易。但這些交易尚未發佈在區塊鏈上!確實還有一件事要做。

鮑勃 (Bob) 開出 3 個角球,愛麗絲 (Alice) 開出 3 個角球。
請記住,這些代幣退出多重簽名的唯一方法是 Alice 和 Bob 共同簽署交易。如果愛麗絲想將這六個幣發送到外部地址,她需要得到鮑勃的同意。她首先完成了一筆交易(該地址有 6 個比特幣)並添加了自己的簽名。
她可以嘗試立即廣播該交易,但該交易將無效,因爲鮑勃沒有簽名。 Alice必須首先將不完整的交易交給他。一旦鮑勃添加了他的簽名,交易就變得有效。
我們仍然沒有一個機制可以讓每個人都誠實地合作。如上所述,如果您的交易對手拒絕合作,您的資金實際上將被困。讓我們一起看看防止這種情況發生的機制。有幾個部分需要學習,所以請跟隨。
每一方都必須提出一個祕密——我們就稱他們爲“A”和“B”吧。如果愛麗絲和鮑勃透露了這些祕密,那麼這些祕密就很糟糕了,這就是爲什麼他們現在將它們隱藏起來。該對將生成各自祕密的哈希值:h(As) 和 h(Bs)。他們不分享他們的祕密,而是分享他們的哈希值。

愛麗絲和鮑勃共享他們的祕密的哈希值。
在將第一筆交易發佈到多重簽名地址之前,Alice 和 Bob 還必須創建一組承諾交易。這將使他們能夠在對方決定扣押資金的情況下擁有追索權。
如果您想到像我們之前討論的迷你分類賬這樣的通道,那麼承諾交易就是您對分類賬進行的更新。每次創建一對新的承諾交易時,您都會重新平衡兩個參與者之間的資金。
愛麗絲將有兩個輸出:一個爲她擁有的地址付費,另一個被鎖定到一個新的多重簽名地址。她簽名並將其交給鮑勃。

Alice 的交易有兩個輸出:一個輸出到她自己的地址,另一個輸出到一個新的多重簽名。 Alice 仍然需要 Bob 的簽名才能使其有效。
鮑勃也做了同樣的事情:一個出口爲自己付費,另一個出口爲另一個多重簽名地址付費。他在上面簽名並把它交給了愛麗絲。

我們有兩筆不完整但相似的交易。
Alice 通常可以向 Bob 的交易添加簽名以使其有效。但您會注意到,這些資金是從 2 個多重簽名中的 2 箇中支出的,我們尚未爲其提供資金。這有點像試圖從沒有必要餘額的帳戶中支出支票。因此,這些部分簽名的交易只能在多重簽名運行後才能使用。
新的多重簽名地址(即 3 個 BTC 的地址)具有某些特定屬性。讓我們看一下 Alice 簽名並交付給 Bob 的不完整交易。多重簽名輸出可以在以下條件下使用:
雙方可以合作簽署。
然後,鮑勃可以在一段時間後自己使用它們(由於時間鎖)。
如果愛麗絲知道鮑勃·Bs 的祕密,她就可以花掉它們。
對於鮑勃給愛麗絲的交易:
雙方可以合作簽署。
一段時間後,愛麗絲可以自己使用它們。
如果鮑勃知道愛麗絲·艾斯的祕密,他就可以花掉它們。
請記住,雙方都不知道對方的祕密,因此 3) 尚不可能。另一件需要注意的事情是,如果您簽署交易,您的交易對手可以立即花費資金,因爲釋放資金沒有特殊條件。您可以等待時間鎖到期自行花費資金,也可以與對方合作直接花費。
好的 !您現在可以將交易發佈到 2-2 多重簽名地址。最終可以安全地做到這一點,因爲如果您的交易對手放棄該通道,您可以收回您的資金。
一旦交易得到確認,該通道即可運行。第一對事務向我們顯示了小型寄存器的當前狀態。目前,他將向 Bob 支付 3 BTC,向 Alice 支付 3 BTC。
當愛麗絲想要向鮑勃進行新的付款時,兩人會創建兩個新交易來替換第一組交易。原理是一樣的:它們只進行了一半簽名。然而,愛麗絲和鮑勃必須首先放棄他們的舊祕密並交換新的哈希值以進行下一輪交易。

如果 Alice 想向 Bob 支付 1 BTC,則這兩筆新交易將向 Alice 記入 2 BTC,向 Bob 記入 4 BTC。因此餘額是最新的。
每一方都可以簽署並廣播最近的一筆交易,以將其“結算”在區塊鏈上。然而,無論哪一方這樣做,都必須等待時間鎖到期,而另一方則可以立即花費資金。請記住,如果鮑勃簽署並廣播愛麗絲的交易,她現在可以無條件退出。
雙方可以決定共同關閉運河(合作關閉)。這可能是讓資金回到鏈上的最簡單、最快的方法。如果一方不迴應或拒絕合作,另一方仍然可以在等待時間鎖期間收回資金。
您想開始使用加密貨幣嗎?在幣安上購買比特幣!
閃電網絡如何防止作弊?
您可能已經在此處確定了攻擊向量。如果 Bob 有 1 BTC 餘額,是什麼阻止他廣播顯示他擁有超過 1 BTC 的舊交易?他已經收到了Alice發來的半簽名交易,在廣播交易之前加上自己的簽名還不夠嗎?
沒有什麼可以阻止他這樣做,除了他可能會失去整個平衡這一事實。假設他一路走來並廣播了一筆舊交易,其中他向 Alice 支付了 1 個 BTC,並向我們之前提到的多重簽名地址支付了 5 個 BTC。
愛麗絲立即收到她的比特幣。另一方面,鮑勃必須等待時間鎖到期才能從多重簽名地址進行支出。還記得我們提到的另一個允許 Alice 立即花掉這些資金的條件嗎?她需要一個她還不知道的祕密。她現在就這麼做了:第二組交易一創建,鮑勃就給了她這個祕密。
當鮑勃等待時,在等待時間鎖到期時無法做任何事情,而愛麗絲可以轉移這些資金。這種基於懲罰的機制可以防止參與者作弊或冒失去其代幣的風險。
付款路線
我們之前指出通道可以連接。如果這是不可能的,那麼閃電網絡將無法用於支付。您真的打算在一個有咖啡店的頻道上鎖定 500 美元,只是爲了在接下來的幾個月裏每天都能得到滿足嗎?
沒有人這樣做。如果 Alice 打開了與 Bob 的通道,並且 Bob 也與 Carol 建立了通道,則 Bob 可以在兩者之間路由付款。這可以在多個“躍點”上工作,因此愛麗絲可以向該路線上的任何人付款。

在這種情況下,Alice 可以通過多個連接到達 Frank 家。在實踐中,她總是會選擇最簡單的一種。
對於其在交付中的作用,中介機構可能會收取少量費用(但這不是強制性的)。由於閃電網絡相對較新,費用市場尚未實現。許多人期望的是根據所提供的流動性收取費用。
在基礎鏈上,您的費用僅取決於您的交易在區塊中佔用的空間 - 傳輸的價值並不重要 - 1 美元甚至 10,000,000 美元的支付成本相同。相比之下,閃電網絡中沒有區塊空間。
相反,存在局部和遠程平衡的概念。局部平衡是您可以“推”向通道末端的量。遠程餘額是你的交易對手可以推給你的餘額。
讓我們看另一個例子。讓我們仔細看看上面的路線:Alice <> Carol <> Frank。

從 Alice 向 Frank 轉賬 0.3 BTC 之前和之後的用戶餘額。
交易 Alice <> Carol 和 Carol <> Frank 每筆交易的總容量爲 1 BTC。 Alice 的本地餘額爲 0.7 BTC。如果交易現在在區塊鏈上結算,Alice 將擁有 0.7 BTC,而 Carol 將收到遠程餘額(0.3 BTC)。
如果Alice想發送0.3 BTC給Frank,她只需要通過通道發送0.3 BTC給Carol即可。然後,卡羅爾從她的本地餘額中通過該通道將 0.3 BTC 傳輸給弗蘭克。因此,卡羅爾的餘額保持不變:愛麗絲的 +0.3 BTC 和弗蘭克的 -0.3 BTC 相互抵消。
卡羅爾並沒有因爲充當弗蘭克和愛麗絲之間的聯繫而失去價值,但她確實失去了靈活性。你看,她現在可以在 Alice 的頻道中花費 0.6 BTC,但在 Frank 的頻道中只能花費 0.1 BTC。
我們還可以想象這樣一種情況:Alice 僅連接到 Carol,而 Frank 連接到一個更大的網絡。 Carol 之前可以通過 Frank 總共向其他人發送 0.4 BTC,現在只能發送 0.1 BTC,因爲這是她在渠道端的全部內容。
在這種情況下,愛麗絲實際上正在耗盡卡羅爾的現金流。沒有任何回報,卡羅爾或許不想削弱自己的地位。因此,她可以簡單地說:“我將以 10 聰的價格路由每 0.01 BTC。這樣,卡羅爾在“更強”的路徑中犧牲她的本地餘額越多,她就會受益。
如前所述,事實上並沒有收取費用的義務。有些人可能並不擔心流動性減少。其他人可能只是直接向接收者打開通道。
閃電網絡的限制
如果閃電網絡能夠解決所有比特幣可擴展性問題,那就太棒了。不幸的是,它也有其自身的缺陷。
可用性
對於初學者來說,比特幣並不是最直觀的系統:地址和費用是難以理解的概念。但錢包可以消除複雜的方面,爲用戶提供與現有支付系統類似的東西。但您可以讓某人下載智能手機錢包、發送資金,併爲下一步做好準備。
這對於閃電網絡來說目前是不可能的。就智能手機應用程序而言,選擇仍然非常有限:一般來說,閃電節點需要訪問比特幣節點才能使用。
客戶完成設置後,用戶必須開始打開渠道才能付款。除了耗時之外,對於初學者來說,瞭解入站/出站容量等概念很快就會變得難以承受。
也就是說,我們不斷進行改進以降低進入門檻,爲用戶提供更簡單的體驗。
流動性
對閃電網絡的主要批評之一是您的交易能力有限。您的支出不能超過您鎖定的頻道。如果您花費了所有資金,使得遠程餘額擁有通道中的所有資金,您將需要關閉它。您也可以等待有人付錢給您去做這件事,但這並不理想。
您的連接還受到總通道容量的限制。讓我們回到 Alice <> Carol <> Frank 連接的示例。如果 Alice 和 Carol 在他們的通道上有 5 BTC 容量,但 Carol 和 Frank 只有 1 BTC 容量,那麼 Alice 將永遠無法發送超過 1 BTC。即使這樣,整個平衡也需要在卡羅爾這邊(在卡羅爾<>弗蘭克頻道上)才能發揮作用。這會極大地限制可以通過閃電網絡通道傳輸的資金量,從而影響其實用性。
樞紐中心化
由於上一節提到的問題,人們還擔心網絡會促進大型“樞紐”的創建。也就是說,具有大量流動性的大型、高度關聯的實體。任何大額付款都需要通過其中一些實體進行。
這顯然不是一件積極的事情。事實上,這會削弱系統,因爲僅僅讓這些實體離線就會極大地影響同行之間的所有關係。審查風險也增加,交易僅通過少數實體流通。
閃電網絡的現狀
自 2020 年 4 月以來,閃電網絡似乎表現良好。擁有超過12,000個活躍節點,超過30,000個開放通道,超過920 BTC的容量。

閃電網絡節點的全球分佈。資料來源:explorer.aquin.co
有多種節點實現:Blockstream 的 c-lightning、Lightning Labs 的 Lightning Network Daemon 和 ACINQ 的 Eclair 是最受歡迎的。許多公司爲經驗不足的用戶提供現成的節點。您對這些設備唯一需要做的就是將它們打開,然後就可以使用閃電網絡了。
總結一下
自 2018 年主網推出以來,閃電網絡取得了令人矚目的增長。然而,許多人認爲它仍處於測試階段。
在實用程序方面仍然存在一些障礙需要克服,目前使用閃電節點需要一定程度的技術技能。但考慮到目前的發展規模,我們很可能會看到未來幾年進入壁壘減少。
如果這些問題能夠得到解決,閃電網絡將成爲比特幣生態系統不可或缺的一部分,並顯着提高其可擴展性和交易速度。
