前言
加密貨幣有一些極為獨特的特性。它們不會輕易被駭客入侵或是關閉,任何人皆可使用比特幣在全球範圍內傳輸價值,無需第三方介入。
為確保這些功能能夠得以保留,必須做出重大的權衡取捨。由於負責執行加密貨幣網路的節點有多個,因而吞吐量較為有限。因此,對於旨在為大眾所採納的技術,區塊鏈網路每秒可處理交易次數 (TPS) 相對較低。
為了克服區塊鏈技術所固有的局限性,已提議一系列可擴展性解決方案來提升網路可處理的交易次數。本文將深入探討閃電網路,這是比特幣協定的一種擴展。
何謂閃電網路?
您執行的第一筆交易,實際上是與另一個用戶建立一種智能合約。我們稍後會做詳細介紹。現在,只需想想與另一個用戶建立擁有私人帳本的智能合約。您可以在此帳本中寫入多筆交易。這些交易僅可供您和交易對手查看,但由於設定的某些特殊功能,你們雙方均不可弄虛作假。
雙方都可隨時將管道的當前狀態發布至區塊鏈。屆時,管道兩端的餘額均會分配給鏈上相應的一方。
閃電網路為何必不可少?
若嘗試從區塊鏈中抽離,您的靈活性會要大得多。倘若出現問題,並不會對實際的比特幣網路產生影響。第二層解決方案並不會削弱維持協定穩定運行逾 10 年的任何安全假設。
不過,亦無義務轉變舊時的事務處理方式。於最終用戶而言,鏈上交易會繼續正常運作,但他們當下亦可選擇鏈下交易方式。
使用閃電網路可享若干好處。下面講講其中一些主要好處。
可擴展性
大約每十分鐘可創建一次比特幣區塊,只能容納一定數量的交易。區塊空間是一種稀缺資源,因此您必須與其他用戶競價,才能及時拿到自己的區塊空間。礦工們最關心的是報酬問題,因此,他們會先拿下手續費較高的交易。
如果同一時間內並沒有很多用戶嘗試轉帳,這並不是真正的問題。您可以設定較低的手續費,您很可能會將交易加入到下一個區塊中。但當每個人在同一時間廣播交易時,平均手續費就會大幅上漲,有幾次已經超過 5 美元了。2017 年牛市的高峰時期,平均手續費已超過 50 美元。

比特幣平均交易手續費 (美元)
對於轉移數千美元的比特幣交易而言,手續費似乎顯得微不足道,但對於小額支付來說,這並非長久之計。誰願意買一杯 3 美元的咖啡並支付 5 美元的手續費?
使用閃電網路時,您仍然需要支付兩筆手續費,一筆用於開啟管道,一筆用於關閉管道。但是,管道一經開啟,您和交易對手可以免費執行數千筆交易。完成交易後,您只需將最終狀態發布至區塊鏈即可。
從全局來看,如果更多用戶依賴於閃電網路等鏈下解決方案,區塊空間的使用效率會更高。可在支付管道中進行小額高頻轉帳,而區塊空間則可用於大額交易以及管道開啟/關閉。這樣可讓更廣泛的用戶群體使用此系統,從而實現長遠擴展。
小額支付
閃電網路對於小額支付更有吸引力。由於常規交易會收取一定的手續費,在主鏈上發送少量資金並不划算。但是,你可在一個管道內免費發送若干分之幾的比特幣。
小額支付適用於各種各樣的用例。一些人推測,它們可能是訂閱式模型的可行替代品,藉由這種模型,用戶每次使用服務時均需支付少量費用。
隱私
如果 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 創建有條件支付,即接收方必須在特定時間之前提供秘密,不然,發送者可以撤回資金。接下來的這個部分可能透過範例來闡述更為易懂,所以我們再來說說 Alice 和 Bob。
開啟和關閉管道
我們舉了這麼一個例子:Alice 和 Bob 剛剛創建了為共用的多重簽名地址提供資金的交易。但這些交易並未發布至區塊鏈上!我們需要先完成一件事。

Bob 的三枚代幣和 Alice 的三枚代幣。
她可以嘗試立即廣播交易,但這屬於無效行為,因為 Bob 並未加上他的簽名。Alice 必須先將未完成的交易交給他。一旦他加上自己的簽名,即可生效。
我們仍未落實一個可讓每個人皆誠實行事的機制。如前所述,如果您的交易對手拒絕合作,您的資金就會有效困住。我們來看看防範這種情況的機制。有一些不同的變化因素,因此,請耐心等待。
各方都需要想出一個秘密,我們稱之為 A 秘密和 B 秘密。如果 Alice 和 Bob 揭露這些秘密,後果不堪設想,所以他們當下會守住這些秘密。此交易對將生成各自秘密的雜湊值:雜湊值 (A 秘密) 和雜湊值 (B 秘密)。因此,他們並不是分享他們的秘密,而是彼此共用這些雜湊值。

Alice 和 Bob 彼此分享他們秘密的雜湊值。
如果您考慮像我們之前提到的迷你帳本等管道,則承諾交易就是您對帳本所做的更新。創建承諾交易的新交易對時,都會隨時重新調整兩個參與者之間的餘額。

Alice 的交易有兩筆輸出,一筆輸出至她自己的地址,一筆輸出至一個新的多重簽名地址。她仍然需要 Bob 的簽名才能生效。
Bob 同樣如此,一筆輸出支付給自己,另一筆輸出支付給另一個多重簽名地址。他簽署並將其給到 Alice。

我們有兩筆非常相似的未完成交易。
新多重簽名地址 (3 BTC 輸出之目的地) 具有一些特殊屬性。我們來看看 Alice 已簽署並交給 Bob 的未完成交易。可於以下條件下使用多重簽名輸出:
- 雙方可以合作簽署此交易。
- 由於具有時間鎖,Bob 可在特定時段後自行動用資金。
- 如果 Alice 知道 Bob 的秘密 (即 B 秘密),她就可以動用資金。
對於 Bob 轉帳給 Alice 的交易:
- 雙方可以合作簽署此交易。
- 特定時段過後,Alice 可以自行動用資金。
- 如果 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 的交易,她當下會有一個無附加條件的輸出。
閃電網路如何防止弄虛作假?
Alice 立即收到了她的代幣。而 Bob 卻必須等待時間鎖到期,才能透過多重簽名地址動用資金。還記得可讓 Alice 立即動用同一筆資金的另一個條件嗎?她需要一個當時並不知道的秘密。她當下這麼做了,在創建第二輪交易後,Bob 立即洩露了那個秘密。
Bob 只能坐等時間鎖到期,別無他法,而 Alice 可以動用這些資金。這種基於懲罰的機制就意味著,參與者甚至不太可能試圖作弊,因為這樣會將自己的代幣拱手讓人。
設定支付路徑
我們之前提到過這個,管道可能是互聯互通的。不然,閃電網路對於付款就沒那麼大的用處了。您確實要在咖啡店的管道內鎖定 500 美元,只是為了在接下來幾個月每天喝上這種續命水?
您不一定非得這麼做。如果 Alice 與 Bob 開啟一個管道,而 Bob 已經與 Carol 開啟一個管道,則 Bob 可在兩者之間按設定路徑付款。多次「跨跳」也是可行的,這就是說,Alice 可以向擁有路徑的任何人有效付款。

在這種情況下,Alice 可透過多條路徑轉帳至 Frank。實際上,她總是會選擇最簡單的路徑。
針對在發送路徑中所起到的作用,中間機構可能會收取少量手續費 (雖然沒有義務這麼做)。閃電網路仍然非常新,因此,市場並未實現收取手續費這一操作。很多人期望依據所提供的流動性來收取手續費。
在基礎鏈上,您的手續費僅會依據您的交易在區塊中所佔據空間來收取,傳輸的金額值並不重要,1 美元和 10,000,000 美元的付款費用是一樣的。相比之下,閃電網路中並沒有區塊空間之類的事物。

Alice 向 Frank 轉帳 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,因為這是她在管道端的全部家當。
如前所述,事實上並沒有收取手續費的要求。有些人可能並不怎麼關心流動性的減少。一些人可能只是直接對接收方開啟管道。
閃電網路的局限性
如果能夠證明閃電網路可有效解決比特幣的所有可擴展性問題,那簡直是太好了。可惜的是,閃電網路有一些無可避免的缺點。
可用性
閃電網路目前無法做到這一點。智慧型手機應用程式的選項較為有限。通常,閃電節點需要存取比特幣節點,才能充分發揮作用。
設定好用戶端后,用戶還需要先開啟管道,之後才能進行支付。這個過程可能較為耗時,當向初學者介紹入帳/出帳容量等概念時,可能會讓人不知所措。
也就是說,我們持續做出改進,來降低准入門檻,並為用戶提供更流暢的體驗。
流動性
閃電網路面臨的最大批評之一是,您的交易能力會受到局限。您所動用的資金必須少於管道內鎖定的資金。如果您動用了全部資金,使得遠端餘額持有此管道的所有資金,則您必須關閉此管道。也可等待其他人透過此管道向您付款,但效果並不理想。
中心化樞紐
由於上一節提到的問題,有人擔心此網路將促進創建大量「樞紐」,那就是具有大量流動性、高度關聯的大型實體。任何大額付款皆需通過其中一些實體按路徑發送。
顯然,這種情況並不太好。這樣會削弱系統的功能,因為這些實體轉向線下會嚴重破壞對等者之間的關係。審查風險也會有所增加,因為只有幾個點可順利進行交易。
閃電網路的現狀
截至 2020 年 4 月,閃電網路看起來一切運作正常。此網路擁有逾 12,000 個線上節點、逾 30,000 個活躍管道以及逾 920 BTC 的容量。

閃電網路節點的全球分佈資料來源:explorer.acinq.co
總結
自 2018 年推出主網以來,儘管許多人認為其仍然處於測試階段,閃電網路的增長還是給人留下了深刻印象。
仍有一些需要克服的可用性障礙,因為目前需要在某種程度上熟練掌握技術,才能操作閃電節點。但隨著開發量的增加,我們很可能會看到准入門檻隨時間推移而有所降低。
如果這些問題能夠得以解決,閃電網路可成為比特幣生態系必不可少的一部分,極大地提高可擴展性及交易速度。