介紹

加密貨幣有幾個獨特的屬性:它們不容易被黑客攻擊或禁用,任何人都可以使用它們在世界各地轉移資金,而無需任何中介機構。

這些功能的安全性是通過一定的妥協來保證的:由於許多節點負責加密貨幣網絡的運行,因此其吞吐量是有限的。因此,對於旨在大規模採用的技術來說,區塊鏈網絡每秒可以處理的交易數量(TPS)相對較低。

爲了克服這些限制並提高網絡吞吐量,已經提出了許多可擴展性解決方案。在本文中,我們將研究比特幣協議的擴展之一——閃電網絡。


什麼是閃電網絡?

閃電網絡是部署在區塊鏈之上的網絡,用於實現快速點對點 (P2P) 交易。該解決方案不僅適用於比特幣:其他加密貨幣(例如萊特幣)也可以集成它。

“部署在區塊鏈之上”是什麼意思?閃電網絡是一種鏈下解決方案,或者說是第二層解決方案。它允許您進行轉賬,而無需在區塊鏈上記錄每筆交易。

閃電網絡與比特幣網絡是分開的:它有自己的節點和軟件,但仍然必須與主鏈通信。要進入或離開閃電網絡,您需要在區塊鏈上創建特殊交易。

您的第一筆交易會與另一個用戶創建某種智能合約。我們很快就會整理出所有細節。現在,想象一個與另一個用戶形成私人分類賬的智能合約。在這個分類賬中,您可以記錄許多交易,並且只有您和您的合作伙伴可以看到它們,但由於某些特定功能,你們都無法欺騙系統。

這個迷你寄存器稱爲通道。假設 Alice 和 Bob 各向智能合約存入 5 BTC。他們頻道上的餘額是每個 5 BTC。然後,Alice 可以進入寄存器將 1 BTC 轉給 Bob。 Bob 現在有 6 個 BTC,Alice 將有 4 個。然後 Bob 向 Alice 發送 2 個 BTC,將餘額更新爲 Alice 6 BTC,Bob 4 BTC。這種情況可能會持續一段時間。

任何時候,他們中的任何一個都可以在區塊鏈上發佈通道的當前狀態。此時,通道各方的餘額將分配給鏈中相應的各方。

閃電網絡上的交易以閃電般的速度發生(其名字的意思是閃電)。由於無需等待區塊確認,因此可以以互聯網連接支持的最大速度進行支付。


實施閃電網絡需要什麼?

閃電網絡(LN)是目前擴展比特幣區塊鏈最明智的方法。在如此龐大的生態系統中協調變化非常困難,因爲存在硬分叉和潛在錯誤的風險。由於這些和其他原因,在線進行任何實驗都是極其危險的。

如果你在區塊鏈之外進行類似的實驗,你可以獲得更靈活的解決方案。在這種情況下,錯誤和故障不會影響比特幣網絡。第二層解決方案不會破壞該協議已運行 10 多年的安全基礎。

也沒有必要改變舊的做事方式。鏈上交易(網絡內)繼續對所有最終用戶正常運行,但此外,還可以執行鏈下(網絡外)交易。

使用閃電網絡有幾個好處。我們將看看下面的一些主要內容。


可擴展性

比特幣區塊每十分鐘創建一次,並且可以包含一定數量的交易。區塊內的空間是有限的,因此用戶通過下注來推動交易。由於礦工主要對收入感興趣,因此他們首先處理費率最高的交易。

當少數用戶同時發送資金時,這不是問題。如果活動很少,即使佣金較低的交易也很可能被包含在下一個區塊中。但如果很多人轉賬,平均佣金就會大幅增加。縱觀歷史,該費用曾數次突破5美元,並在2017年牛市頂峯時升至50美元以上。


Средняя комиссия за транзакцию биткоина (в USD)

平均比特幣交易費用(美元)


對於幾千美元的交易來說,這似乎微不足道,但對於小額轉賬來說,這是一個關鍵因素。誰願意支付 3 美元的咖啡並支付 5 美元的轉賬費?

使用閃電網絡,您仍然需要支付兩項費用:一項用於打開通道,一項用於關閉通道。但您和您的交易對手有機會在開放渠道內完全免費地進行數千筆交易。完成所有必要的操作後,您只需將餘額的最終狀態發佈到區塊鏈即可。

在全球範圍內,越多的用戶依賴閃電網絡等自主解決方案,區塊空間的使用就會變得越高效。低頻和高頻轉賬可以在支付通道內進行,而區塊空間將用於較大的交易和此類通道的打開/關閉。這將使該系統可供更廣泛的用戶羣使用,並允許網絡長期擴展。


小額支付

在比特幣中,最小交易規模爲 0.00000546 BTC——在撰寫本文時,這大約是 4 美分。雖然金額很小,但您最多可以向閃電網絡發送 0.00000001 BTC,即一個聰。

當談到小額支付時,閃電網絡是這種情況下最可行的選擇。爲常規交易支付費用使得在主鏈上發送小額金額變得不切實際,但在通道內,您可以完全免費地移動小塊比特幣。

小額支付適用於各種用例。一些人認爲它們可以成爲基於簽名的模型的可行替代品,在該模型中,用戶每次使用特定服務時都會支付少量費用。


保密

閃電網絡的第二個優勢是用戶隱私的高度保護。各方無需在線發佈有關其渠道的信息。區塊鏈僅提供特定交易打開通道的信息,但詳細信息仍然未知。如果成員將他們的頻道設爲私有,那麼只有他們纔會知道其中正在發生什麼交易。

如果Alice與Bob有通道,Bob與Carol有通道,則Alice和Carol可以通過Bob向對方發送資金。如果 Dan 與 Carol 有聯繫,Alice 也可以將資金轉移給他。您可以將其視爲一個不斷擴大、廣泛的互連支付渠道網絡。通過這種設置,您無法確定在通道關閉後 Alice 將資金髮送給了誰。


怎麼運行的?

因此,上面我們已經粗略地瞭解了閃電網絡如何依賴節點之間的通道。現在讓我們從內部看一下系統是如何工作的。


多重簽名地址

多重簽名地址涉及使用多個私鑰來完成轉賬。創建時,會指示可以花費資金並簽署交易所需的私鑰數量。例如,1 of 5 方案意味着五個密鑰可以創建有效的簽名,但只需要一個即可完成傳輸。方案 2 of 3 將意味着在三個可能的密鑰中,需要兩個進行翻譯。

爲了創建閃電通道,參與者將資金鎖定在二取二的方案中,只有兩個私鑰可以創建簽名,並且需要兩個私鑰來轉移代幣。讓我們用愛麗絲和鮑勃的例子來看看這個。他們預計在未來幾個月內進行大量轉賬,因此他們正在閃電網絡上創建一個通道。

首先,他們兩人都將 3 BTC 存入他們共享的多重簽名地址。再次值得注意的是,未經 Alice 同意,Bob 不能從此類地址提取資金,反之亦然。

這相當於有一張紙可以調整每一面的平衡。例如,如果他們的起始餘額爲 3 BTC,而 Alice 想向 Bob 支付 1 BTC,爲什麼不只注意到 Alice 現在擁有 2 BTC,而 Bob 現在擁有 4 BTC?可以監控此類餘額,直到雙方做出共同決定:提取資金。

這是可能的,但是有什麼問題呢?更重要的是,這樣的簡單不就是有人不合作的理由嗎?如果 Alice 收到 6 BTC 而 Bob 沒有收到,那麼 Bob 拒絕釋放資金不會有任何損失(除了他與 Alice 的友誼)。


哈希時間鎖定合約(HTLC)

與其他現代配置相比,上述系統很簡單並且不提供豐富的功能。當我們引入一種在 Alice 和 Bob 之間提供“合約”的機制時,事情會變得更加有趣,如果其中一方不想遵守規則,則允許從通道中返還資金。

這種機制稱爲哈希時間鎖定合約(HTLC)。它的概念非常簡單。它結合了哈希鎖定和時間鎖定兩種技術,以防止支付渠道中不必要的活動。

哈希鎖是交易的一個條件,在該條件下,資金只能由知道某些數據(祕密)的人使用。發送方對部分數據進行哈希處理,並將該哈希值包含在發送給接收方的交易中。您可以通過向發送者提供與指定哈希相對應的原始數據(祕密)來解鎖資金。

時間鎖定是不允許您在特定時間之前花費資金的條件。時間段指定爲實際時間或區塊高度。

HTLC 是通過組合哈希鎖和時間鎖創建的。實際上,HTLC 可用於創建有條件付款:接收者必須在特定時間之前提供祕密,否則發送者有權獲得退款。下一部分最好使用我們流行的示例來查看,所以讓我們再次回到 Alice 和 Bob。


打開和關閉通道

考慮一個例子:Alice 和 Bob 剛剛創建了爲多重簽名地址提供資金的交易。他們計劃在不久的將來使用這個地址,但到目前爲止這些交易尚未在區塊鏈上發佈。首先你還需要做一件事。


Три монеты Боба и три монеты Алисы

鮑勃的三枚硬幣和愛麗絲的三枚硬幣


請記住,從多重簽名錢包中提取硬幣的唯一方法是雙方共同簽署交易,這意味着她需要鮑勃的批准才能將愛麗絲的所有六個硬幣發送到外部地址。在這種情況下,她必須創建一個交易(六個比特幣到特定地址)並添加她自己的簽名。

Alice可以立即嘗試廣播該交易,但由於Bob沒有簽名,該交易將無效。 Alice 必須向他提供待處理的交易,一旦他簽署,交易就變得有效。

然而,在這種情況下,目前還沒有一個程序強制參與者誠實行事。正如我們之前提到的,如果您的交易對手拒絕合作,您的資金實際上就會被困。讓我們繼續討論防止這種情況發生的機制。爲此,有幾個驅動元件可以解決這個問題。

爲了避免這種不利的情況,雙方都必須想出一個祕密,我們稱它們爲:A和Bs。如果愛麗絲和鮑勃透露了它們,它們將是壞祕密,所以他們暫時保守祕密。然後,該對生成相應祕密的哈希值:h(As) 和 h(Bs)。因此,他們不是共享祕密,而是交換哈希值。


Алиса и Боб обмениваются хешами своих секретов.

愛麗絲和鮑勃交換他們的祕密的哈希值。


在將轉賬發送到多重簽名地址之前,Alice 和 Bob 需要就某些交易義務達成一致。如果有人決定挪用資金,這可以保證安全。

如果您考慮像我們之前提到的迷你分類賬這樣的渠道,交易承諾就是您對分類賬所做的更新。每次創建一對新的交易義務時,您都在重新平衡兩個參與者之間的資金。

Alice 將有兩個輸出:她補充的第一個地址,以及她綁定到新多重簽名地址的另一個輸出。她簽署了第二個地址並將其交給鮑勃。


Транзакция Алисы с двумя выводами: один с депозитом на ее собственный адрес, а другой с депозитом на новый адрес с мультиподписью. Однако для последнего все еще нужна подпись Боба, чтобы сделать операцию действительной.

Alice 的交易有兩個輸出:一是存入她自己的地址,一是存入新的多重簽名地址。然而,後者仍然需要 Bob 的簽名才能使交易有效。


Bob 也做了同樣的事情:一個地址是他的個人地址,另一個是多重簽名。他在上面簽名並把它交給了愛麗絲。


У нас есть две незавершенные транзакции, которые очень похожи.

我們有兩筆非常相似的待處理交易。


Alice可以爲Bob的交易添加簽名,從而批准它。應該指出的是,這些資金是從多重簽名 2 of 2 計劃中支出的,該計劃尚未獲得資助。這就像試圖兌現一張餘額爲零的支票一樣。因此,這些部分簽名的交易只能在多重簽名啓動後才能使用。

新的多重簽名地址(具有 3 BTC 輸出)具有一些特定的屬性。讓我們看一下 Alice 簽名並提交給 Bob 的待處理交易。如果滿足以下條件,則可以強制執行多重簽名推斷:

  1. 雙方共同簽署。

  2. 鮑勃在一段時間後自行翻譯(由於時間鎖定)。

  3. 如果愛麗絲髮現鮑勃的祕密,她就可以花掉餘額:廢話。

對於交易,Bob 要求 Alice 實現以下操作:

  1. 雙方共同簽署。

  2. 一段時間後,Alice 自行進行轉賬。

  3. 如果鮑勃發現愛麗絲的祕密:A,他就可以花掉餘額。

請記住,雙方都不知道對方的祕密,因此第 3 點尚不可能。還應該注意的是,如果您簽署交易,您的交易對手可以立即花掉這筆錢,因爲提款沒有特殊條件。您可以等到時間到了自己花掉資金,也可以配合對方同時提取。

因此,現在您可以在 2 of 2 方案中使用多重簽名將交易發佈到原始地址。因此,這是安全的,因爲如果您的交易對手離開通道,您可以收到您的資金。

交易確認後,通道開始處理交易。第一對交易向我們展示了迷你賬本的當前狀態。在此階段,付款將按順序分配:3 BTC 給 Bob,3 BTC 給 Alice。

當愛麗絲想要向鮑勃進行新的轉賬時,雙方將需要創建兩個新交易來替換第一組交易。慣例保持不變:交易只簽署了一半。然而,愛麗絲和鮑勃將不得不放棄他們的舊祕密併爲下一輪交易交換新的哈希值。


Например, если Алиса хочет заплатить Бобу 1 BTC. Две новые транзакции зачисляют 2 BTC Алисе и 4 BTC Бобу. Таким образом, баланс обновится.

如果 Alice 想向 Bob 支付 1 BTC,則兩筆新交易將分別向 Alice 和 Bob 貸記 2 和 4 BTC。這樣餘額就更新了。


雙方可以隨時簽署並轉讓最新交易給對方以進行結算,即將最終信息記錄在區塊鏈中。這樣做的一方必須等待時間鎖定到期,而另一方可以在收到資金時立即花費資金。值得注意的是,如果鮑勃簽署交易並將其廣播給愛麗絲,她就有機會在沒有任何附加條件的情況下退出。

雙方可以一起關閉通道(執行合作關閉)——這是將資金返回網絡的最簡單、最快的方式。但即使其中一方停止響應請求或拒絕合作,另一方也可以在時間鎖定到期後返還資金。



您想知道如何開始使用加密貨幣嗎?在幣安上購買比特幣!



防止閃電網絡上的欺詐

您可能已經識別出可能的攻擊媒介。如果 Bob 的餘額現在是 1 BTC,什麼會阻止他選擇擁有更多幣的舊交易?他已經收到了Alice的簽名,他需要做的就是添加他的簽名並將交易發送到區塊鏈,對吧?

阻止他採取此類行動的是失去完全平衡的風險。假設他決定這樣做併發送了他的舊交易,這給了 Alice 一枚硬幣,並向前面提到的多重簽名地址發送了 5 枚硬幣。

愛麗絲立即收到一枚硬幣。反過來,Bob 必須等到時間鎖定到期才能花費多重簽名地址的餘額。如果您還記得上面提到的另一個條件,那麼您可能會猜測它會允許 Alice 立即花費相同的餘額。她需要一個她當時沒有的祕密。自從第二輪交易創建以來,她就有了這個機會,因爲鮑勃給了她這個祕密。

當鮑勃等待時間鎖到期而無法做任何事情時,愛麗絲可以轉移這些資金。這種基於制裁的機制假設參與者不太可能想要嘗試作弊,原因很簡單,在這種情況下,另一方可以立即訪問他們的共享代幣。


付款路線

我們之前談到過這個話題:渠道可以互相聯繫。否則,閃電網絡對於各種支付就不會那麼有用。您不會在咖啡館頻道鎖定 500 美元來獲得接下來幾個月的每日承諾,對嗎?

但你不必這樣做。如果愛麗絲與鮑勃打開了一個通道,並且他與卡羅爾也建立了一個通道,那麼鮑勃就可以使用他們之間的連接發送付款。這種機制在多個“跳躍”中起作用,這意味着愛麗絲可以快速地將資金轉移給存在類似路徑的任何人。


В этом случае Алиса может воспользоваться несколькими путями для взаимодействия с Фрэнком. Как правило, она будет выбирать наиболее простой.

在這種情況下,愛麗絲可以採取多條路線到達弗蘭克。實際上,這條路徑總是最短的。


中介機構可能會因其在路由中的作用而收取少量費用(可選)。由於閃電網絡是一個相對較新的概念,費用市場尚未成熟。許多人期望根據提供商的流動性收取費用。

在底層鏈上,您的費用取決於您的交易在區塊中的排名。交易金額並不重要:從 1 美元到 10,000,000 美元的轉賬佣金是相同的。相比之下,閃電網絡沒有區塊空間這樣的東西。

相反,它使用本地和遠程餘額的概念。本地餘額是可以“推送”到通道另一端的金額,遠程餘額是對方可以推送給您的金額。

讓我們看另一個例子。讓我們探索以下路徑之一:愛麗絲 <> 卡羅爾 <> 弗蘭克。


Балансы пользователей до и после перевода 0,3 BTC от Алисы к Фрэнку.

將 0.3 BTC 從 Alice 轉移到 Frank 之前和之後的用戶餘額。


Alice <> Carol 和 Carol <> Frank 的總吞吐量爲 1 BTC。 Alice 的本地餘額爲 0.7 BTC。如果他們現在決定在區塊鏈上結算,她將收到 0.7 BTC,卡羅爾將收到她的遠程餘額(即 0.3 BTC)。

如果 Alice 想發送 0.3 BTC 給 Frank,她就發送 0.3 BTC 給 Carol。然後 Carol 從她的本地餘額中提取 0.3 BTC 到 Frank 的通道中。結果,Carol 的餘額保持不變:Alice 爲 +0.3 BTC,Frank 爲 -0.3 BTC,不包括所有第三方交易。

卡羅爾充當弗蘭克的聯絡人並沒有什麼損失,但她確實讓自己變得不那麼靈活。你看,她現在可以在 Alice 的頻道中花費 0.6 BTC,但在 Frank 的頻道中只能花費 0.1 BTC。

您可以想象這樣一種情況:Alice 僅連接到 Carol,而 Frank 連接到更廣泛的網絡。此前,Carol 可以通過 Frank 總共向其他人發送 0.4 BTC,但現在她只能提供 0.1 BTC,因爲她所有的資金都在渠道的另一端。

在這種情況下,Alice成功吸收了Carol的流動性。反過來,Carol 不想進一步削弱自己的地位,所以她設定了一個條件:每發送 0.01 BTC,佣金爲 10 聰。因此,按照卡羅爾的條件進行交易的本地餘額越多,她的頭寸就越有利可圖。

我們之前提到過,沒有實際的佣金要求。有些人可能不擔心流動性減少,而另一些人可能會開放渠道只是爲了收取費用。


閃電網絡的缺點

如果閃電網絡能夠解決所有比特幣可擴展性問題,那就太好了。不幸的是,這個概念有其缺點,可能會阻止這種情況的發生。


使用方便

對於新手來說,比特幣並不是最直觀的系統:首次引入時,地址、費用和其他一切都可能會令人困惑,但錢包可以讓您擺脫如此複雜的事情,並提供類似於現有支付系統的功能:爲您的智能手機下載錢包,添加它給它硬幣,你就可以開始工作了。

目前這對於閃電網絡來說是不可能的。目前的用例非常有限,尤其是在智能手機應用程序方面。原因是閃電節點需要訪問比特幣節點才能正常運行。

安裝客戶端後,用戶還需要開始開通通道,然後才能進行支付。這可能非常耗時,並且由於涉及許多術語(包括傳入/傳出帶寬),對於新手來說可能會很困難。

然而,技術正在不斷改進,降低了進入壁壘,並且變得更容易被用戶使用。


流動性

閃電網絡的主要問題之一是您的財務選擇有限。您的支出不能超過通道中鎖定的金額。如果所有資金都分配到遠程餘額,您很可能必須關閉通道。或者,您可以等待有人向您付款,但這遠非理想的解決方案。

路徑還可能受到鏈路總容量的限制。使用前面的示例考慮這一點:Alice <> Carol <> Frank。如果 Alice 和 Carol 的通道有 5 BTC,但 Carol 和 Frank 的通道只有 1 BTC,Alice 將無法通過他們發送超過 1 BTC。然而,即使在這種情況下,在頻道“卡羅爾<>弗蘭克”中,平衡也必須轉移到卡羅爾這邊。這一缺點會嚴重限制閃電網絡通道的吞吐量,從而影響可用性。


集中樞紐

由於上一節提到的問題,有人擔心該網絡會鼓勵大型“樞紐”的發展。這表明具有充足流動性的密切相關實體的出現,任何大額支付都將通過其中一些實體進行。

顯然,這種情況並不有利。這將削弱系統,因爲此類提供商進入離線模式將導致系統要素之間的關係受到嚴重破壞。由於交易經過多個點,審查風險也增加。


閃電網絡發展現階段

截至2020年4月,閃電網絡發展相當成功。該網絡擁有 12,000 多個在線節點、30,000 多個活躍通道以及流通中的 920 多個 BTC。


Карта расположения актуальных нод в сети Lightning Network. Источник: explorer.acinq.co

閃電網絡中當前節點位置的地圖。資料來源:explorer.acinq.co


運行節點有多種不同的實現方式 - 其中最流行的是 Blockstream 的 c-lightning、Lightning Labs 的 Lightning Network Daemon 和 ACINQ 的 Eclair。不想深入研究技術方面的用戶可以使用即插即用節點。他們所需要做的就是打開設備並在閃電網絡上自由工作。


概括

自 2018 年主網推出以來,閃電網絡已經顯着擴展,儘管人們普遍認爲它仍處於測試階段。

在這個發展階段,在易用性上存在一些限制,例如:操作閃電節點需要一定的技術能力,但隨着開發的進展,進入門檻預計會降低。

如果上述所有問題都能得到解決,閃電網絡可能成爲比特幣生態系統不可或缺的一部分,從而大大提高可擴展性和交易速度。