比特幣閃電網路新手指南
首頁
文章
比特幣閃電網路新手指南

比特幣閃電網路新手指南

初階
發佈時間 Nov 28, 2018更新時間 Feb 14, 2023
20m

前言

加密貨幣有一些極為獨特的特性。它們不會輕易被駭客入侵或是關閉,任何人皆可使用比特幣在全球範圍內傳輸價值,無需第三方介入。

為確保這些功能能夠得以保留,必須做出重大的權衡取捨。由於負責執行加密貨幣網路的節點有多個,因而吞吐量較為有限。因此,對於旨在為大眾所採納的技術,區塊鏈網路每秒可處理交易次數 (TPS) 相對較低。

為了克服區塊鏈技術所固有的局限性,已提議一系列可擴展性解決方案來提升網路可處理的交易次數。本文將深入探討閃電網路,這是比特幣協定的一種擴展。


何謂閃電網路?

閃電網路是一種建置於區塊鏈之上的網路,可促進快速完成點對點交易。這並非比特幣的獨家功能,萊特幣等其他加密貨幣已經整合這種功能。
您可能對我們所說的「建置於區塊鏈之上」有些好奇。閃電網路即所謂的鏈下第二層解決方案。個人可透過此網路執行交易,無需在區塊鏈上記錄每筆交易。
閃電網路與比特幣網路彼此獨立,有專用的節點及軟體,但仍然與主鏈通訊。您需要在區塊鏈上創建特殊交易,方能進入或離開閃電網路。

您執行的第一筆交易,實際上是與另一個用戶建立一種智能合約。我們稍後會做詳細介紹。現在,只需想想與另一個用戶建立擁有私人帳本的智能合約。您可以在此帳本中寫入多筆交易。這些交易僅可供您和交易對手查看,但由於設定的某些特殊功能,你們雙方均不可弄虛作假。

這個迷你帳本稱為管道。假設 Alice 和 Bob 各將 5 BTC 放入智能合約中。現在,他們的管道中皆有 5 BTC 餘額。隨後,Alice 可在帳本中寫上向 Bob 支付 1 BTC。現在,Bob 有 6 BTC,Alice 有 4 BTC。之後,Bob 可稍後將 2 BTC 轉回給 Alice,將餘額更新為 Alice 有 6 BTC,Bob 有 4 BTC。他們隔段時間可繼續這麼做。

雙方都可隨時將管道的當前狀態發布至區塊鏈。屆時,管道兩端的餘額均會分配給鏈上相應的一方。

顧名思義,閃電交易如閃電般疾速,並不需要等待區塊確認,只要您的網際網路連線允許,即可盡快進行付款。


閃電網路為何必不可少?

迄今為止,閃電網路 (LN) 似乎是擴展比特幣區塊鏈最明智的方法。在如此龐大的生態系中協調變化是一件十分棘手的事情,會有出現硬分叉及潛在災難性錯誤的風險。面對如此巨額的數字,放手一試會有相當大的危險。

若嘗試從區塊鏈中抽離,您的靈活性會要大得多。倘若出現問題,並不會對實際的比特幣網路產生影響。第二層解決方案並不會削弱維持協定穩定運行逾 10 年的任何安全假設。

不過,亦無義務轉變舊時的事務處理方式。於最終用戶而言,鏈上交易會繼續正常運作,但他們當下亦可選擇鏈下交易方式。

使用閃電網路可享若干好處。下面講講其中一些主要好處。


可擴展性

大約每十分鐘可創建一次比特幣區塊,只能容納一定數量的交易。區塊空間是一種稀缺資源,因此您必須與其他用戶競價,才能及時拿到自己的區塊空間。礦工們最關心的是報酬問題,因此,他們會先拿下手續費較高的交易。

如果同一時間內並沒有很多用戶嘗試轉帳,這並不是真正的問題。您可以設定較低的手續費,您很可能會將交易加入到下一個區塊中。但當每個人在同一時間廣播交易時,平均手續費就會大幅上漲,有幾次已經超過 5 美元了。2017 年牛市的高峰時期,平均手續費已超過 50 美元。


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


對於轉移數千美元的比特幣交易而言,手續費似乎顯得微不足道,但對於小額支付來說,這並非長久之計。誰願意買一杯 3 美元的咖啡並支付 5 美元的手續費?

使用閃電網路時,您仍然需要支付兩筆手續費,一筆用於開啟管道,一筆用於關閉管道。但是,管道一經開啟,您和交易對手可以免費執行數千筆交易。完成交易後,您只需將最終狀態發布至區塊鏈即可。

從全局來看,如果更多用戶依賴於閃電網路等鏈下解決方案,區塊空間的使用效率會更高。可在支付管道中進行小額高頻轉帳,而區塊空間則可用於大額交易以及管道開啟/關閉。這樣可讓更廣泛的用戶群體使用此系統,從而實現長遠擴展。


小額支付

您可以在交易中發送的最低比特幣金額約為 0.00000546 BTC。撰寫這篇文章時,0.00000546 BTC 相當於四美分左右。這個金額較小,但您可藉由閃電網路突破限制,交易目前可用的最小單位,即 0.00000001 BTC 或 1

閃電網路對於小額支付更有吸引力。由於常規交易會收取一定的手續費,在主鏈上發送少量資金並不划算。但是,你可在一個管道內免費發送若干分之幾的比特幣。

小額支付適用於各種各樣的用例。一些人推測,它們可能是訂閱式模型的可行替代品,藉由這種模型,用戶每次使用服務時均需支付少量費用。


隱私

閃電網路的第二個好處是可為用戶帶來高度保密性。各方無需向更廣泛的網路公開他們的管道。您或許能夠查看區塊鏈並聲明此交易已開啟一個管道,但卻不一定能夠說出個所以然。如果參與者選擇將其管道設為私密,則只有他們知道正在執行的交易。

如果 Alice 和 Bob 有一個管道,而 Bob 和 Carol 有一個管道,則 Alice 和 Carol 可透過 Bob 互相轉帳。如果 Dan 與 Carol 建立了連接,Alice 可以向他轉帳。您可以想像,這會擴展到一個雜亂無序的互聯支付管道網路。在該等設定中,一旦管道關閉,就無法確定 Alice 將資金轉給了誰。


閃電網路如何運作?

我們已經解釋閃電網路如何高度依賴於節點之間的管道。我們現在來看看事情的本質。


多重簽名地址

多重簽名地址即可以透過多個私鑰進行消費的地址。創建一個多重簽名時,您指定可以動用資金的私鑰數量,以及簽署交易需要的私鑰數量。例如,五選一方案係指五個金鑰可產生一個有效簽名,且僅需要一個簽名。三選二方案表明,在三個可能的金鑰中,需要使用其中任意兩個才能動用這些資金。

為了初始化閃電管道,參與者會將資金鎖定在二選二方案中。只有兩個私鑰能夠簽署,要轉移代幣,需要用上這兩個私鑰。現在,我們再來講講朋友 Alice 和 Bob。在接下來幾個月中,他們將互轉多筆款項,因此,他們決定開啟閃電網路管道。

比如說,首先,他們各自都在聯合擁有的多重簽名地址中存入 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 剛剛創建了為共用的多重簽名地址提供資金的交易。但這些交易並未發布至區塊鏈上!我們需要先完成一件事。


Bob 的三枚代幣和 Alice 的三枚代幣。


要記住,可將這些代幣從多重簽名地址中轉出的唯一方法就是,Alice 和 Bob 共同簽署交易。如果 Alice 想要將全部六枚代幣轉至外部地址,需要先得到 Bob 的批准。她需要先匯總成一筆交易 (六枚比特幣到此地址),並加上她的簽名。

她可以嘗試立即廣播交易,但這屬於無效行為,因為 Bob 並未加上他的簽名。Alice 必須先將未完成的交易交給他。一旦他加上自己的簽名,即可生效。

我們仍未落實一個可讓每個人皆誠實行事的機制。如前所述,如果您的交易對手拒絕合作,您的資金就會有效困住。我們來看看防範這種情況的機制。有一些不同的變化因素,因此,請耐心等待。

各方都需要想出一個秘密,我們稱之為 A 秘密和 B 秘密。如果 Alice 和 Bob 揭露這些秘密,後果不堪設想,所以他們當下會守住這些秘密。此交易對將生成各自秘密的雜湊值:雜湊值 (A 秘密) 和雜湊值 (B 秘密)。因此,他們並不是分享他們的秘密,而是彼此共用這些雜湊值。


Alice 和 Bob 彼此分享他們秘密的雜湊值。


在將他們的第一筆交易發布至多重簽名地址之前,Alice 和 Bob 還需要創建一組承諾交易。這將為他們提供補救措施,以免對方決定私自扣留資金。

如果您考慮像我們之前提到的迷你帳本等管道,則承諾交易就是您對帳本所做的更新。創建承諾交易的新交易對時,都會隨時重新調整兩個參與者之間的餘額。

Alice 的帳本將有兩筆輸出,一筆輸出向她擁有的地址付款,另一筆輸出已鎖定至的多重簽名地址。她簽署並將其給到 Bob。


Alice 的交易有兩筆輸出,一筆輸出至她自己的地址,一筆輸出至一個新的多重簽名地址。她仍然需要 Bob 的簽名才能生效。


Bob 同樣如此,一筆輸出支付給自己,另一筆輸出支付給另一個多重簽名地址。他簽署並將其給到 Alice。


我們有兩筆非常相似的未完成交易。


通常,Alice 可以新增簽名至 Bob 的交易,才能使其生效。但您會發現,這些資金會透過我們尚未提供資金的二選二多重簽名進行消費。這有點像是試圖從目前餘額為零的帳戶消費一張支票。因此,這些已部分簽署的交易僅在多重簽名開始順利運作時才可使用。

新多重簽名地址 (3 BTC 輸出之目的地) 具有一些特殊屬性。我們來看看 Alice 已簽署並交給 Bob 的未完成交易。可於以下條件下使用多重簽名輸出:

  1. 雙方可以合作簽署此交易。
  2. 由於具有時間鎖,Bob 可在特定時段後自行動用資金。
  3. 如果 Alice 知道 Bob 的秘密 (即 B 秘密),她就可以動用資金。

對於 Bob 轉帳給 Alice 的交易:

  1. 雙方可以合作簽署此交易。
  2. 特定時段過後,Alice 可以自行動用資金。
  3. 如果 Bob 知道 Alice 的秘密 (即 A 秘密),他就可以動用資金。

請記住,他們雙方都不知道對方的秘密,因此 3) 這尚不可能做到。還有一點需要注意,如果您簽署交易,交易對手可立即動用資金,因為他們的輸出未附帶任何特殊條件。您可以等待時間鎖到期,屆時可以自行動用資金,亦可與對方合作,直接動用這筆資金。

好了!您當下可以將交易發布至原始的二選二多重簽名地址中。最終,這個做法是安全的,因為如果您的交易對手放棄此管道,您可以拿回自己的資金。

交易確認後,管道就會正常運行。第一個交易對向我們展示了迷你帳本的當前狀態。目前,管道會向 Bob 支付 3 BTC,向 Alice 支付 3 BTC。

當 Alice 想要向 Bob 支付一筆新款項時,此交易對會創建兩筆新交易,來取代第一組交易。道理是一樣的,他們僅為半簽署狀態。不過,Alice 和 Bob 先要放棄他們的舊秘密,並為下一輪交易交換新的雜湊值。


例如,如果 Alice 想向 Bob 支付 1 BTC,則兩筆新交易將向 Alice 計入 2 BTC,並向 Bob 支付 4 BTC。這樣一來,餘額會予以更新。


任何一方皆可隨時簽署及廣播最近的其中一筆交易,以便在區塊鏈上進行「結算」。但任何一方這樣做都需要等待時間鎖到期,而對方可以立即動用資金。請記住,如果 Bob 簽署並廣播 Alice 的交易,她當下會有一個無附加條件的輸出。

雙方可達成一致,一起關閉管道 (合作關閉)。這可能是讓您的資金重回鏈上的最簡單快捷的方式。不過,即使一方沒有響應或拒不合作,另一方仍可等待時間鎖到期,藉此來收回他們的資金。



想開始使用加密貨幣嗎?於幣安買入比特幣!



閃電網路如何防止弄虛作假?

您可能已在此處鑒別出攻擊媒介。如果 Bob 目前有 1 BTC 餘額,可採取哪些措施來阻止他廣播之前已經完成的更早期交易?他已經從 Alice 那裡獲得半簽署的交易,只需要加上自己的簽名並進行廣播,是吧?
沒有什麼可以阻止他這樣做,除了他可能會損失全部餘額這一事實。假設他這麼做了,並廣播了一筆舊交易,這筆交易向 Alice 支付了一枚代幣,並向我們先前提到的多重簽名地址支付了五枚代幣。

Alice 立即收到了她的代幣。而 Bob 卻必須等待時間鎖到期,才能透過多重簽名地址動用資金。還記得可讓 Alice 立即動用同一筆資金的另一個條件嗎?她需要一個當時並不知道的秘密。她當下這麼做了,在創建第二輪交易後,Bob 立即洩露了那個秘密。

Bob 只能坐等時間鎖到期,別無他法,而 Alice 可以動用這些資金。這種基於懲罰的機制就意味著,參與者甚至不太可能試圖作弊,因為這樣會將自己的代幣拱手讓人。


設定支付路徑

我們之前提到過這個,管道可能是互聯互通的。不然,閃電網路對於付款就沒那麼大的用處了。您確實要在咖啡店的管道內鎖定 500 美元,只是為了在接下來幾個月每天喝上這種續命水?

您不一定非得這麼做。如果 Alice 與 Bob 開啟一個管道,而 Bob 已經與 Carol 開啟一個管道,則 Bob 可在兩者之間按設定路徑付款。多次「跨跳」也是可行的,這就是說,Alice 可以向擁有路徑的任何人有效付款。


在這種情況下,Alice 可透過多條路徑轉帳至 Frank。實際上,她總是會選擇最簡單的路徑。


針對在發送路徑中所起到的作用,中間機構可能會收取少量手續費 (雖然沒有義務這麼做)。閃電網路仍然非常新,因此,市場並未實現收取手續費這一操作。很多人期望依據所提供的流動性來收取手續費。

在基礎鏈上,您的手續費僅會依據您的交易在區塊中所佔據空間來收取,傳輸的金額值並不重要,1 美元和 10,000,000 美元的付款費用是一樣的。相比之下,閃電網路中並沒有區塊空間之類的事物。

不過,會有本地及遠端餘額的理念。本地餘額是您可以「推送」至管道另一端的金額,而遠端餘額是您的交易對手可以推送給您的金額。
再來舉一個例子。我們仔細看看上面的其中一條路徑:Alice <> Carol <> Frank


Alice 向 Frank 轉帳 0.3 BTC 前後的用戶餘額。


Alice <> Carol 和 Carol <> Frank 各自的總容量為 1 BTC。Alice 的本地餘額為 0.7 BTC。如果他們現在於區塊鏈結算,她將收到 0.7 BTC,而 Carol 將收到遠端餘額 (即 0.3 BTC)。

如果 Alice 想要向 Frank 轉 0.3 BTC,會將 0.3 BTC 推送至 Carol 管道的一端。隨後,Carol 從她與 Frank 管道中的本地餘額中推送 0.3 BTC。因此,Carol 的餘額保持不變:Alice 轉出的 +0.3 BTC 與轉給 Frank 的 -0.3 BTC 互相抵消。

Carol 充當與 Frank 之間的聯繫橋樑並不會喪失價值,但她束縛了自己的行動。看,她當下可在與 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 聰的手續費。如此一來,Carol 在「更強大」路徑中犧牲的總餘額愈多,她的收益就愈大。

如前所述,事實上並沒有收取手續費的要求。有些人可能並不怎麼關心流動性的減少。一些人可能只是直接對接收方開啟管道。


閃電網路的局限性

如果能夠證明閃電網路可有效解決比特幣的所有可擴展性問題,那簡直是太好了。可惜的是,閃電網路有一些無可避免的缺點。


可用性

對於新手而言,比特幣並非最直觀的系統,您可能會對地址、手續費等事項心存困惑。但錢包可將複雜的事物抽象化,為用戶提供與現有支付系統大體相似的功能。您可以邀請某人下載智慧型手機錢包,向他們發送代幣,他們會欣然照做。

閃電網路目前無法做到這一點。智慧型手機應用程式的選項較為有限。通常,閃電節點需要存取比特幣節點,才能充分發揮作用。

設定好用戶端后,用戶還需要先開啟管道,之後才能進行支付。這個過程可能較為耗時,當向初學者介紹入帳/出帳容量等概念時,可能會讓人不知所措。

也就是說,我們持續做出改進,來降低准入門檻,並為用戶提供更流暢的體驗。


流動性

閃電網路面臨的最大批評之一是,您的交易能力會受到局限。您所動用的資金必須少於管道內鎖定的資金。如果您動用了全部資金,使得遠端餘額持有此管道的所有資金,則您必須關閉此管道。也可等待其他人透過此管道向您付款,但效果並不理想。

管道總容量可能也會對您的路徑有所限制。以先前的 Alice <> Carol <> Frank 為例。如果 Alice 和 Carol 在各自管道中有 5 BTC 容量,但 Carol 和 Frank 只有 1 BTC 容量,Alice 絕不能轉出超過 1 BTC。即便如此,全部餘額需要在 Carol <> Frank 管道的 Carol 端才能發揮作用。這樣可能會嚴重限制可透過 LN 管道傳遞的資金量,從而對可用性產生連鎖反應。


中心化樞紐

由於上一節提到的問題,有人擔心此網路將促進創建大量「樞紐」,那就是具有大量流動性、高度關聯的大型實體。任何大額付款皆需通過其中一些實體按路徑發送。

顯然,這種情況並不太好。這樣會削弱系統的功能,因為這些實體轉向線下會嚴重破壞對等者之間的關係。審查風險也會有所增加,因為只有幾個點可順利進行交易。


閃電網路的現狀

截至 2020 年 4 月,閃電網路看起來一切運作正常。此網路擁有逾 12,000 個線上節點、逾 30,000 個活躍管道以及逾 920 BTC 的容量。


閃電網路節點的全球分佈資料來源:explorer.acinq.co


節點實施有幾種不同的類型,而 Blockstream 的 c-lightning、Lightning Labs 的 Lightning Network Daemon 以及 ACINQ 的 Eclair 是其中幾種熱門的實施。對於不太願意採納技術的用戶而言,很多公司會提供即插即用型節點。您只需要接通裝置電源,就可以開始使用閃電網路了。


總結

自 2018 年推出主網以來,儘管許多人認為其仍然處於測試階段,閃電網路的增長還是給人留下了深刻印象。

仍有一些需要克服的可用性障礙,因為目前需要在某種程度上熟練掌握技術,才能操作閃電節點。但隨著開發量的增加,我們很可能會看到准入門檻隨時間推移而有所降低。

如果這些問題能夠得以解決,閃電網路可成為比特幣生態系必不可少的一部分,極大地提高可擴展性及交易速度。