區塊鏈 Blockchain – 閃電網絡 Lightning Network

/ 1 評 / 4

比特幣網絡由於自身系統的 PoS 共識機制以及近年來在比特幣網絡上的交易不斷增多,所有的交易均是廣播上鏈,導致出現交易速度緩慢、交易成本高昂的問題越趨明顯,目前全網的交易處理速度大約為每秒鐘處理 7 筆左右(由於為單個區塊容量所限,每秒中僅支持少於10筆交易),若對於金融交易系統而言,這個速度將比傳統的系統遠遠低得多,而且在比特幣網絡中至少需要等待 6 個區塊的確認交易真實性,時間為 6 * 10分鐘 (平均出塊時間),也就是需要一個小時。

簡單來說,導致目前比特幣網絡出現這個問題的最主要原因是 大量交易在鏈上廣播,導致交易速度緩慢 ,所以在2015 年 2 月 - Joseph Poon 在論文《The Bitcoin Lightning Network: Scalable Off-Chain Instant Payments》中首次提出閃電網絡 (Lightning Network) 這個概念。

閃電網路簡單來說是一種為了提升交易速度及性能的解決方案,並非把所有交易都記錄在比特幣網絡上,而是將大量交易放到比特幣網絡外進行,只將關鍵交易放到鏈上進行確認,從而減少交易費用及時間。重點在於建立一個鏈下的交易通道(Channel),無論進行多少次的交易,也不會寫入鏈上或影響其他區塊,除非在這個交易通道建立或關閉時,才會在區塊鏈上記錄交易的最終結果。

閃電網絡的簡單運作過程

首先在看閃電網絡的定義前,先看一個簡單的運作例子:

1. Xan 和 Yelena 兩個人想進行交易,與比特幣網絡不一樣的是,這次兩人先各自預存入相同金額的資金到一個"保險箱"。

這種雙方都預存同等金額的行為的目的是為了他們兩人經常進行交易,而不需要每次都拿出資金,而這個"保險箱"內的錢亦只屬於他們兩人交易的用途,可以想像成兩個人之間構建了一條專屬的"交易通道"。

2. 接下來 Xan 要給 Yelena 發送 2 BTC 給 Yelena,他就寫了一張字條,上面寫著"某年某月某日某時某分某秒,Xan 答應把2個比特幣轉移給 Yelena",而且在這張字條上面簽名,把這張字條給了 Yelena。

但這個時候,這2個比特幣仍未真正到 Yelena 手上, Yelena 得到的只是一紙"承諾",最後如果 Yelena 想真正得到這2個比特幣,她會在這張字條上再簽名,然後拿到先前的"保險箱"托管者手上,當"保險箱"托管者看到這張字條上有兩人簽名,他就會從原來存有 20個比特幣的"保險箱"內,給 12 個比特幣給 Yelena,再給 8 個比特幣給 Xan。然後這個"保險箱"就會被丟掉,也代表經常性的交易關係暫時結束。(當然這裡只是方便理解,箇中原理會在下面的RSMC解釋)

當然,這個時候他們並未選擇結束關係,想繼續進行交易。

3. 某一天,Yelena 需要發送 1個比特幣給 Xan,這個時候,她又會做與Xan之前做的事情一樣,寫了一張字條,上面寫著"某年某月某日某時某分某秒,Yelena 答應把1個比特幣轉移給 Xan",而且在這張字條上面簽名,把這張字條給了 Xan。

同樣地,如果 Xan 想立即得到錢,他簽名會拿著這張字條前往"保險箱"托管者手上,告訴他想取回所有錢,這時,"保險箱"托管者就會按紀錄分配好資金,把 9個比特幣給 Xan,把11個比特幣給 Yelena。

到這裡,如果當 Xan要求取回這個"保險箱"(通道)內所有屬於自己的錢時,兩人的交易關係也暫時宣告結束。然而 Xan 當前未想結束交易關係。

 

4. 接下來,Yelena 和 Zeke 之間又各自預存了10個比特幣,建立起"交易通道",不久,Xan 需要發送給 Zeke 2個比特幣,但因為他們之間並未有直接的"交易通道",亦不想預存資金另外建立一條"交易通道",所以,這時可以要求 Yelena 幫忙,並跟Zeke說:"我會給2個比特幣給 Yelena,你去找 Yelena 拿吧。"(當然這裡只是方便理解,箇中原理會在下面的HTLC解釋)

這樣一來,在不用另外建立"交易通道"的情況下,使用"間接"的方式,也能做到與第三方,甚至更多人之間的交易。當人數不斷增多的時候,就會形成起一個龐大且快速的交易網絡,而這樣的網絡,也就是"閃電網絡",當任何一方需要取回屬於自己的資金時,只需關閉通道,就可以結束這個關係,而當建立/關閉通道的時候,才需要將紀錄永久寫入區塊鏈,所以大家之間經常性的交易,往往存在於鏈下。

可以簡單類比一下,在比特幣網絡上,每次交易都要資料寫入區塊鏈;

比特幣網絡就好比"銀行"的角色,每次交易就是在"銀行"轉賬,所有交易,銀行都需要紀錄及知道之間的關係;

閃電網絡則好比"現金"的角色,每次交易直接交易現金,在銀行並沒有紀錄亦不會知道之間的關係。

閃電網路 Lightning Network

閃電網路 (Lightning Network) 是工作在區塊鏈上(主要面向比特幣)的第二層支付協議,其設計目的是實現交易雙方的即時交易,將大量交易放到比特幣區塊鏈之外進行。閃電網絡通過智能合約來完善鏈下的交易通道,簡單來說,就是多簽名的交易確保鏈下交易的安全,只把關鍵交易上鏈(寫入區塊鏈)核心的概念主要有兩個:

RSMC(Recoverable Sequence Maturity Contract)-解決了鏈下交易的確認問題

HTLC(Hashed Timelock Contract)- 後者解決了支付通道的問題。

在所有交易中,智能合約起到了中間人的重要角色,而區塊鏈則確保最終的交易結果被確認。

那什麼是RSMC呢?

RSMCRecoverable Sequence Maturity Contract

RSMCRecoverable Sequence Maturity Contract 可撤銷的順序成熟度合同,簡單來說就是"資金池"的概念。

首先假定交易雙方之間存在一個 "微支付通道"(即資金池)。

雙方先預存一部分資金到 "微支付通道",初始情況下雙方的分配方案等於預存的金額。而當每次發生交易時,需要對交易後產生資金分配結果共同進行確認,同時簽字把舊版本的分配方案作廢。

任何一方需要提現時,可以將他手中雙方簽署過的交易結果寫到區塊鏈網絡中,從而被確認。

從這個過程中可以可以看到,只有在提現時候才需要上鏈(寫入區塊鏈)。

注意,任何一個版本的分配方案都需要經過雙方的簽名認證才被認為是合法的。

任何一方在任何時候都可以提出提現,提現時需要提供一個雙方都簽名過的資金分配方案(意味著肯定是某次交易後的結果,被雙方確認過,但未必是最新的結果)。而在一定時間內,如果另外一方拿出證明表明這個方案其實之前被作廢了(非最新的交易結果),則作出懲罰,把資金給質疑方;否則按照提出方的結果進行分配。懲罰機制可以確保了沒人會故意拿一個舊的交易結果來提現。

另外,即使雙方都確認了某次提現,首先提出提現一方的資金到賬時間要晚於對方,這就鼓勵大家盡量都在鏈下完成交易。

透過 RSMC 的多簽名及懲罰機制有效解決了鏈下交易的確認問題,從而使大量中間交易在鏈下發生。

HTLC 又是什麼?

HTLCHashed Timelock Contract

HTLC(Hashed Timelock Contract)- 哈希化時間鎖合約,簡單來說就是"限時轉賬"的概念。

上面提到的 RSMC,它的"微支付通道"就是通過 HTLC 實現。透過智能合約,雙方約定轉賬方先凍結一筆錢,接收方向轉賬方提供一個哈希值。如果在一定時間內有人能提出一個字符串,使得它哈希後的值跟已知值匹配(實際上意味著轉賬方授權了接收方來提現),則這筆錢轉給這個人。

基於這個原理, HTLC 更可擴展至兩個人及以上的場景:

首先看一個簡單版的例子:

假設 A 想轉賬給 CC 先給 A 發送一個哈希值。

A 可以先跟 B 簽訂一個合約,如果你在一定時間內能告訴我一個暗語,我就給你多少錢。

B 於是跑去跟 C 簽訂一個合同,如果你告訴我那個暗語,我就給你多少錢。

C 於是告訴 B 暗語,拿到 B 的錢,B 又從 A 拿到錢。

最終結果是 A 轉賬給 C。這樣一來,AC之間就構成了一條完整的、虛擬的「支付通道」。

按照這個原理,接下來再看另一個的例子:

假設Alice 想向 Dave 轉賬一筆錢,而 Alice Dave 之間又並未建立"微支付通道",那可以怎樣做的?

雙方可以透過現有的其他通道間接地建立起一條"微支付通道"。Alice Dave 轉賬一筆錢,Dave 則產生了一個隨機像原 R,並且把這個 R 進行哈希,得到了 H 這個哈希值,Dave則保留這個像原 R ,並把 H 發送給 Alice

由於 Alice Bob 之間已經存在微支付通道,所以 Alice 可以建立一個 HTLC (3-Day) 的合約並把 Dave 發過來的 H 值一起送給 Bob

HTLC (3-Day) 合約的意思就是:如果 Bob 能夠在合約到期(三天)前提供一個與 H 值對應的像原 R 值,這筆錢就由 Bob 所有。如果超過了合約時間,則需要返回同等金額給 Alice

如是者, Bob CarolCarol Dave 之間都建立類似的 HTLC 合約,而大家之間的區別就是,合約的時間是遞減的。

直到 Dave 後, Alice Dave 之間的臨時「支付通道」就已經成功建立了。

那麼建立後,Dave 如何從 Alice 的手上得到這筆錢呢?

接著看,此時 Dave 手上持有 H 值對應的像原 R,就可以在 HTLC 合約到期前,將 R 發送給 Carol ,從而得到這筆錢。而 Carol 又將這個 R 發送給 Bob,從 Bob 手上又取回這筆錢,如此類推,直至 Bob Alice 手上取回這筆錢。整個過程下來的最終結果就是"Alice Dave 轉賬了一筆錢",而整個 HTLC 的交易完成並且關閉。

淨值清算與懲罰機制

"微支付通道"被雙方建立並存在期間,雙方可以在鏈下進行多次交易,直至這條通道關閉,以下是三種情形導致清算並關閉通道。

1. 雙方同意上鏈清算

雙方之間認為不會再有頻繁的交易往來,並且都希望能取回屬於自己的資金,此時雙方就可以透過建立另一次的交易,注意,這個交易將不具有 RSMC 的輸出,直接按最後一次的交易分配輸出並且雙方進行簽名確認,最後由其中一方向上鏈廣播這筆交易後,即可完成淨值清算。

2. 單方面提出最後一次交易

如果其中一方想取回屬於自己的資金,並在無法聯絡對方的情況下,可以單方面向上鏈廣播自己擁有雙方最後一次交易後關閉通道。在這個情況下,對方可以即時獲得最後一次交易中自己的份額,而自己就必須等待交易所指定的時間鎖到期後才可以取回自己的份額。

3. 任意一方違規提交舊的歷史交易紀錄

事實上不會發生,但一旦發生,可以提交違規補償交易以實施懲罰。如果對方單方面提交了對自己有利的舊交易紀錄,就必須等待交易所指定的時間鎖到期後才可以得到,如果在此期間,發現對方違規提交這筆舊紀錄,就可以通過廣播違規補償交易,如於該交易並沒有時間鎖,所以可以立即上鏈確認並將得到對方宣稱的交易金額,這樣一來,發生這個事情的概率就相當低了。然而,因為廣播違規補償交易是自己應盡的責任,如果在交易所指定的時間鎖到期後仍未向鏈上廣播這筆交易,就能如對方所願地得到了他們想要的金額了,這個就是閃電網絡的懲罰機制。

優缺點

優點

1. 即時支付

由於閃電網絡中的交易不需要等待區塊確認,交易可即時在鏈下完成確認,而當在關鍵時候(建立/關閉微支付通道)時才需要上鏈,從而解決了區塊鏈中的交易速度緩慢問題;

2. 低廉的交易手續費用

雖然閃電網絡是使用真正的比特幣進行交易,但卻最小化交易結算(交易廣播上鏈)的需要,所以並不需要每筆交易都寫入區塊鏈,因此可以大大減低小額比特幣交易的手續費,降低比特幣的使用門檻,對小額資金交易友好。

3. 高擴展性

在閃電網絡中,大部份交易均在鏈下確認,允許用戶執行近乎無限次的微支付交易,所以一些需要高頻率使用的場景(比如供應鏈物流大量的複雜交易環節,物聯網設備間的自動大量交易等)都可以達到理想的效果,而又不必每次都寫入容量"寸金尺土"區塊鏈上,更可減少上鏈的手續費用。

缺點

1. 間接中心化

閃電網絡中的RSMC合約就是提出"資金池"的概念,那就是建立"微支付通道"時,雙方都要預存同等資金。也就是說,小額交易上並沒有問題,如果其中一方需要轉賬的金額大過對方能夠預存的資金,這時就需要尋找其他擁有大量資金的節點進行"路由",間接建立臨時的支付通道,所以就變相成為了"中介銀行"的角色,而這些節點,往往背後都有可能是各大金融機構,隨著時間的推移,這些節點或者會聯合起來,最終或許會將"去中心化"又變為"中心化"。

2. 對大額資金交易不友好

在比特幣網絡中進行交易,無論交易金額的大小,都需要將交易上鏈,就要支付手續費,而且波動很大,也就是說轉賬金額的多少與手續費沒有存有一個固定比例,手續費是根據交易所佔的容量比例有多大而定;在閃電網絡中進行交易,都會存在最小固定比例(Small percentage)的手續費,假設 A 轉賬給 B 一塊,可能也就只收幾分錢的手續費,但如果轉賬金額大,同樣也是按照比例來算,而且因為金額大的關係,可能對方也沒有同樣預存的資金,需要尋找一些中間節點進行"路由",才能最終成功到達那個對方手上,所有在這個"路由"上也會收取一個較大比例的手續費,所以對金額大的交易就不太友好了。所以對於金額大的交易來說,無論在手續費或安全性上,使用比特幣網絡會比閃電網絡會更好。

3. 降低鏈上資金流動性

閃電網絡中的RSMC要求支付通道鎖定了資金,使資金流動性降低,並且因為閃電網絡令上鏈的交易數量大幅度降低,導致鏈上的礦工之間競爭。

4. 系統性攻擊

如第一點所述,閃電網絡中一些擁有大額資金的支付通道都預存了大量資金,亦即為資金被"鎖定"了,所以如果一旦這些支付通道成為攻擊的目標,就會令所有使用這些支付通道的參與者都損失資金,損失將會是非常龐大。加上這些支付通道都包含大量的歷史鏈下交易,通過並發廣播歷史鏈下交易,攻擊者將可能得到更多的資金,而且進行系統性攻擊將會導致大量交易上鏈,從而產生高昂的上鏈交易費用。

總結

由於比特幣網絡自身的共識機制、容量小及交易量大的關係,導致交易速度緩慢,因而促成了各種解決方案的誕生,閃電網絡是其中的一種,閃電網絡自身的概念並不複雜,閃電網絡透過核心的兩種智能合約類型 RSMC HTLC 保障交易雙方的直接交易都可以在鏈上完成,並不需要每次交易都上鏈,減低了交易的手續費用,同時具有交易即時完成的效果,而 HTLC 則在RSMC上進行了個擴展,保障了交易雙方之間即使沒有建立直接的"微支付通道",都能以多簽名、間接的方式透過臨時支付通道完成支付。閃電網絡成功結合了這兩種機制,實現了任意兩個人之間的交易都可以在鏈下完成,並且提供有效的淨值清算及懲罰機制,保障雙方利益。而在閃電網絡中的所有交易,智能合約起了關鍵的"中介"角色,而最終結算的交易則上鏈確認,確保了鏈下交易的安全性。

而且閃電網絡的概念並不只局限於比特幣,也適用於其他的虛擬貨幣,以太坊也有自己的閃電網絡,

而當中 HTLC 智能合約的概念也可擴展為一種跨鏈技術,實現在不同賬本之間交換價值。

直至20184月,閃電網絡節點已經超過1500個,其中1147個都是公開的,由此可見閃電網絡節點仍是相當受用戶歡迎。

凡事有利有弊,區塊鏈技術亦不例外,各種方案都有其優缺點,並沒有存在一種最優的方案,而是需要就實際情況而選擇最適合自身的方案,又或者是混合搭配使用。

所以在總結最後一句要強調的是,學習區塊鏈要理解當中各種方案的核心概念及箇中原理,從而選擇或再創造更佳的方案,而非為不明所以地為某種方案"背書"

參考文章

How to explain Lightning Network to your non-technical friends?

閃電網絡白皮書

區塊鏈技術指南 · GitBook

維基百科- 閃電網絡

區塊鏈技術指南

比特幣閃電網絡介紹

在〈“區塊鏈 Blockchain – 閃電網絡 Lightning Network”〉中有 1 則留言

  1. NT表示:

    寫的非常好。獲益很多,謝謝。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *