
本文來自BFTF技術社區聯盟,作者:BFTF技術社區聯盟,編譯:方圓,經授權發布。
導讀:閃電網絡是用來解決比特幣網絡擁塞問題而提出的比特幣網絡改進方案。閃電網絡的本質是把比特幣網絡作為結算網絡,兩個節點間在建立通道後,所有交易都可以在鏈下完成。本文作者對閃電網絡進行了綜合介紹,十分適合區塊鏈從業者閱讀。
如果您曾經使用過比特幣,那麼您可能會遇到長達一小時(或最差情況長達一天)的交易(確認)時間。在交易量很高的時候,比特幣網絡曾經積壓了超過15萬筆未驗證的交易,並且現在已經是司空見慣的情況了。如此之長的交易確認時間和高昂的手續費結合起來,讓人很難以在小額支付場景上使用比特幣(比如中午吃頓飯花30塊錢,礦工打包交易需要的手續費可能遠高於這個數字)。
閃電網絡可以幫助我們解決這個問題。閃電網絡是Thaddeus Dryja 和Joseph Poon 的心血結晶,他們二人在2015年提交了關於閃電網絡的白皮書。如果你對閱讀長篇大論的論文沒興趣,我會在本文中簡要介紹閃電網絡的原理和流程。
閃電網絡是什麼?
從本質上看,閃電網絡是比特幣用戶從比特幣區塊鏈中兌換貨幣價值的一種方法。這是通過一些與比特幣區塊鏈交互的複雜腳本來實現的,並且它允許小額交易快速付款(交易費用也很低)。如果比特幣在未來想成為一種可行的支付方式,那麼閃電網絡就是一個必要的提高比特幣區塊鏈伸縮性的工具。這種做法可以擴展到跨鏈交易。這種價值互換在實踐中是類似的,除了它們發生在兩種不同的貨幣/區塊鏈之間。我們在這裡更詳細地討論原子交換。
關於閃電網絡的作用和簡介到此為止,下面我們進入關於閃電網絡細節介紹階段。
閃電網絡如何工作?
打開雙向支付通道
如果要使用閃電網絡,那麼需要設置支付通道。支付通道是閃電網絡傳輸價值的交易途徑。如果要打開支付通道,需要在比特幣區塊鏈上新建交易。
“然而我以為你說所有這些都發生在鏈外?”別擔心,閃電網絡確實是在鏈外,但你首先必須讓比特幣網絡知道你正在開展交易。完成此操作後,交易雙方保留通道上的資產負債表。每次移動資金時,交易和更新的賬戶餘額都將記錄在此賬本中,並且在您在通道上進行支付後,可以將最終結果廣播到區塊鏈。
多簽錢包
那麼如果支付通道發生在鏈下,資金在何處/如何管理,它們如何被記錄到比特幣區塊鏈上?為了使用支付渠道,雙方都需要將他們的資金發送到多簽錢包地址。
假設Molly和Steve對超級碗的結果下注。他們每人下注1 BTC,並希望確保對方持有他/她的交易,因此他們將資金存入多簽錢包。多簽錢包的功能類似於存款保險箱,而交易的一組私鑰可以允許任何一方訪問資金。資金將保持鎖定在錢包中,直到:
Molly和Steve都簽名了最終交易
一方完成最終交易,或
達到時間限制並自動提交交易。一旦發生這種情況,資金將被轉回雙方的個人錢包。
為了成功設置多簽錢包,Molly和Steve都創建了一個值(實質上是解鎖事務的密鑰),然後他們使用這些值來創建哈希值並發送給對方。掌握這些對於理解承諾交易如何在以後發揮作用至關重要。
一旦Molly和Steve將各自的資金存入多簽錢包,他們就可以創建所謂支付通道並將其廣播到比特幣區塊鏈。廣播後,將使用一系列承諾交易來管理資金。
通過承諾交易轉移錢
最終Molly贏了賭注,她贏了0.5個比特幣,為了開始轉移這筆財富,Molly和Steve都會通過簽名承諾交易來更新他們在支付渠道中的各自餘額。承諾交易根據雙方協議在兩個參與者之間劃分資金,實質上,這些交易就像欠條一樣,一旦支付通道關閉才會實際支付(指記到比特幣區塊鏈上)。
例如,Molly簽名了一筆交易,該交易將1.5 BTC發送給她自己,並將0.5BTC發送給新的多簽地址。然後,她簽名此交易並將其哈希發送給Steve。反過來,Steve簽名承諾交易類似Molly的簽名的那樣,只是他發送.5 BTC給自己而將1.5BTC發給另一個多簽地址。然後他簽名交易並將此交易的哈希發送給Molly。
a)2BTC在最初的多簽錢包,b).5 BTC在一個多簽錢包裡,支付給Steve,以及c)1.5 BTC在一個多簽錢包給Molly。實際上,一旦任何一方發送其各自的交易哈希值,支付渠道中的資產負債表將更新。那麼這樣,在不使用比特幣區塊鏈的情況下我們就進行了交易。
錢包裡的錢只能在三個條件下解鎖:
鎖定時間到了
任何一方通過值(key)從他們設置的多重簽名錢包中解鎖資金,或者
雙方一起簽名交易。
定期付款/更新通道
定期付款/更新通道
如果Molly和Steve想繼續更新通道或進行多次交換怎麼辦?
假設Steve正在向Molly支付定期服務費,比如理髮。史蒂夫將0.2 BTC存入他們的多重簽名錢包,每次理髮之後,他都會向Molly簽名承諾交易,將0.001 BTC發送到新的多簽地址。要做到這一點,他必須重複我們剛才的步驟,在區塊鏈上開一個新事務。
因此,要處理定期付款,需要每次更新多重簽名地址中的帳戶餘額。為了做到這一點,Steve每次理髮,他都會向他設立的多重簽名錢包投入一筆新款來支付給Molly。但在這樣做時,他為這個新事務創建了一個新值和一個新哈希值。 Molly也要做同樣的事情,當雙方交換新的哈希時,他們還要交換前一個交易的舊值(注意不是交換哈希值,舊事務的哈希值在上一次已經交換)。
這確保了任何一方都不能欺騙對方。如果關閉支付通道時Steve試圖通過廣播舊的交易來欺騙Molly,他就有麻煩了。
例如,如果當關閉通道時,Steve將原始狀態廣播,他簽名了原始交易(Molly和Steve各一個BTC)。因為Molly有之前交易的密鑰,所以她可以懲罰Steve。更重要的是,Steve必須等到鎖定時間才能拿到錢,而Molly可以立馬拿到錢。因此,如果她發現Steve廣播了原始數據,她可以在多簽名錢包中直接拿走2 BTC(因為她有此交易的密鑰,因此,能夠解鎖其資金)。
因此,如果一方試圖欺騙另一方,則交易對手將獲得所有資金。這種懲罰是為了阻止不良行為者濫用支付通道的資金分配。
此外,如果Molly不在線的話,發現這種犯規的節點操作員和礦工可以代表她行事。作為補償,這些他們將獲得一定的賞金。
關閉支付通道
當Molly和Steve準備關閉通道時,他們只需用他們的私鑰簽署一筆交易,將他們的最終賬戶餘額廣播到區塊鏈。此時,礦工將進行驗證並將其存儲在區塊鏈中。與打開通道的交易一樣,此關閉通道交易需要和比特幣區塊鏈交互。
或者,雙方也可以設定合約期限的到期日。例如,使用nLockTime算法,他們可以保證30天內支付通道亦然打開,30天之後,通道將關閉,最終餘額將被廣播到區塊鏈。但是,每當各方想要更新其餘額時,到期日期都會減少。因此,如果Molly和Steve在一個賽季中投注多個足球比賽,每次下注時,nLockTime合同將有一個新的,縮短的到期日期(例如,如果第一個承諾交易將在30天內完成,第二筆交易將在第29天到期,然後第三筆交易將在第28天到期,依此類推)。
多通道支付和HTLC
多通道支付和HTLC
“如果Molly和Steve想要將比特幣發送給對方,但他們之間沒有打開的支付通道怎麼辦呢?”他們可以通過中間人。
事實證明,Molly和Steve都有與Chuck打開的支付通道,因此他們不需要開闢新的通道,而是通過Chuck進行交易。
現在,這在理論上是一個值得信賴的交易,訣竅在於以安全的方式進行交易。為此,閃電網絡實現了哈希時間鎖定合約(HTLC)。
Molly想給Steve付0.5 BTC。為此,Steve必須創建值(實質上是確認代碼或密鑰)。然後他創建一個這個值的哈希值發送給Molly。為了簡化這個書面插圖,我們將用V表示值,用H表示哈希值。
當Molly收到H時,她與Chuck分享。如果Chuck透露V,Molly則會向Chuck發送0.5 BTC。為了獲得V,Chuck將他自己的BTC的0.5發送給Steve以換取V。一旦他有了這個值,他就把V發送給Molly然後收到0.5BTC。這樣Molly有效地將0.5 BTC轉讓給Steve。
具體流程如下:
Steve創造V和H→Steve將H送到Molly→Molly將H發送給Chuck→Chuck將BTC發送給Steve→Steve將V發送給Chuck→Chuck將V發送給Molly→Molly將BTC發送給Chuck
因此,值(V)用作散列(H)的確認碼/密鑰,其表示事務的接收/鎖定。
“但Molly怎麼知道Chuck給她的V是合法的,Chunck付錢之後Steve跑路了怎麼辦”
正如nLockTime在雙向支付渠道中讓每個人都必須誠實一樣,哈希時間鎖定合約讓各方對此負責。
對於HTLC,正在交易的比特幣資金再次被鎖定在多簽錢包中,並且只能在提供值(V)和哈希值(H)之後解鎖a)或b)合約在超時期限之後到期。
實際上,這意味著,當Molly和Chuck達成協議讓Molly付給Steve時,她使用HTLC將她欠Chuck的比特幣鎖在一個多簽錢包裡。一旦Chuck支付Steve並收到V,他就可以輸入V和H進入HTLC,獲取到Molly支付的比特幣。或者,如果Chuck未能完成交易而且合約在一周之後到期,那麼Molly的比特幣將被釋放並重新進入她的私人錢包。
同樣的動作發生在Chuck和Steve自己的支付渠道上。在Steve揭曉V之前,Chuck無法將他的比特幣交給Steve。一旦Steve揭曉V,Chuck將可以從Molly那裡獲取資金並且Steve收到Chuck的BTC。
理論上,這個過程可以運行在多個支付通道和多個人的情況下。
總結:為什麼閃電網絡很重要
這是一個複雜的話題,要做到深入淺出是很困難的,讀到這裡的都是真愛。
概述:閃電網絡是一個鏈下系統,允許個人多次交換比特幣而無需將所有這些交易記在鏈上。只有兩個事務(以及打開和關閉)記錄在區塊鏈上,而所有其他事務(盡可能多的事務)都通過離線節點進行處理。
這個模型有幾個主要的好處:
有效的小額支付:閃電網絡面向小額支付。閃電網絡不需要支付超過傳輸價值的高昂費用,而是允許用戶相互發送少量貨幣而無需直接通過比特幣網絡。他們仍然需要向節點運營支付費用,但與比特幣網絡費用相比,這是微不足道的。
可擴展性和延遲解決方案:與之前的觀點一致,閃電網絡將減少比特幣網絡膨脹。減少鏈上交易的數量意味著減少礦工的工作量,這反過來意味著更快的交易時間和更低的費用。如果不必將每筆交易都放在區塊鏈的公共賬本上,那麼網絡運行起來會更加順暢。此外,閃電網絡交易將比鏈上的交易快得多。
目前,閃電網絡支持比特幣,Litecoin和Vertcoin。閃電網絡仍處於測試狀態,在本文發佈時尚未確認主網上線時間。