區塊鏈-什麼是閃電網絡?

 

目錄:http://www.javashuo.com/article/p-nitsjfvy-ey.html安全

1. 引言網絡

比特幣網絡的擁堵問題由來以久,關於擴容的爭論也喋喋不休,在屢次共識失敗以後,比特大陸團隊硬分叉出bch,經過擴大區塊容量來實現網絡擴容,而bitcoin core團隊則經過軟分叉方式激活了隔離見證,爲後續的閃電網絡作準備。架構

比特幣是世界上使用最普遍和最具價值的數字貨幣,它容許任何人在不受信任的環境下進行價值傳遞。比特幣被稱爲「數字黃金」,這個稱謂是對其在加密貨幣領域地位的確定,但比特幣也表現出黃金的一些缺點,Peter Thiel表示,比特幣「就像金庫中永不移動的金條同樣」,說的正是比特幣高昂的交易費和極低的處理速度,可否成爲支付手段是比特幣可否在將來大行其道的關鍵。分佈式

閃電網絡能夠提供擴容性方面的重大改進。所以,在不影響核心協議的基礎安全性的狀況下,交易速度和交易費率應該大幅改進。然而,相當重要的是,與閃電網絡支付相關的安全性可能使閃電網絡不適合大額支付(或者至少將其用於大額支付多是不負責任的)。目前加密貨幣領域的主要推進力量彷佛是投機和投資,而這些資金流動須要這些較大額度的支付,相比之下,小額零售支付的體量還相對較小。正由於如此,至少在中期內,閃電網絡可能並無像有些人想象的那麼大的做用。雖然愛好者彷佛很快就會採用這種技術,但其普遍應用可能須要至關長的時間。
目前閃電網絡測試網已經上線,雖然也爆出很多問題,但毫無疑問這是區塊鏈網絡擴容問題上的一大探索。相信隨着參與者愈來愈多,閃電網絡也會愈來愈成熟。函數

2. 什麼是閃電網絡?性能

什麼是閃電網絡呢?在狀態通道一文中咱們提到過,閃電網絡是狀態通道的典型應用。是一個分佈式網絡,經過智能合約功能以支持跨參與者網絡的即時付款,同時利用區塊鏈的特性消除將資金託管給第三方帶來的風險。主要做爲用於即時、高容量的微支付。區塊鏈

閃電網絡的目的是實現安全地進行鏈下交易,其本質上是使用了哈希時間鎖定智能合約來安全地進行0確認交易的一種機制,經過設置巧妙的‘智能合約’,完善鏈下通道,使得用戶能夠在閃電網絡上進行0確認的交易。測試

核心的概念主要有兩個:RSMC(Recoverable Sequence Maturity Contract)和 HTLC(Hashed Timelock Contract)。RSMC 保障了兩我的之間的直接交易能夠在鏈下完成,HTLC 保障了任意兩我的之間的轉帳均可以經過一條「支付」通道來完成。這兩個類型的交易組合構成了閃電網絡。從而實現任意兩我的均可以在鏈下完成交易。加密

  • RSMC
    Recoverable Sequence Maturity Contract,中文能夠翻譯爲「可撤銷的順序成熟度合同」。其實主要原理很簡單,就是相似準備金機制。

咱們先假定交易雙方之間存在一個「微支付通道」(資金池)。雙方都預存一部分資金到「微支付通道」裏,以後每次交易,就對交易後的資金分配方案共同進行確認,同時簽字做廢舊的版本。當須要提現時,將最終交易結果寫到區塊鏈網絡中,被最終確認。能夠看到,只有在提現時候才須要經過區塊鏈。.net

任何一個版本的方案都須要通過雙方的簽名認證才合法。任何一方在任什麼時候候均可以提出提現,提現須要提供一個雙方都簽名過的資金分配方案(意味着確定是某次交易後的結果)。在必定時間內,若是另一方提出證實代表這個方案其實以前被做廢了(非最新的交易結果),則資金罰沒給質疑成功方。這就確保了沒人會拿一箇舊的交易結果來提現。

另外,即便雙方都確認了某次提現,首先提出提現一方的資金到帳時間要晚於對方,這就鼓勵你們儘可能都在鏈外完成交易。

  • HTLC
    微支付通道是經過 Hashed Timelock Contract 來實現的,中文意思是「哈希的帶時鐘的合約」。這個其實就是限時轉帳。理解起來其實也很簡單,經過智能合約,雙方約定轉帳方先凍結一筆錢,並提供一個哈希值,若是在必定時間內有人能提出一個字符串,使得它哈希後的值跟已知值匹配(實際上意味着轉帳方受權了接收方來提現),則這筆錢轉給接收方。

不太恰當的例子,約定必定時間內,有人知道了某個暗語(能夠生成匹配的哈希值),就能夠拿到這個指定的資金。

推廣一步,甲想轉帳給丙,丙先發給甲一個哈希值。甲能夠先跟乙簽定一個合同,若是你在必定時間內能告訴我一個暗語,我就給你多少錢。乙因而跑去跟丙簽定一個合同,若是你告訴我那個暗語,我就給你多少錢。丙因而告訴乙暗語,拿到乙的錢,乙又從甲拿到錢。最終達到結果是甲轉帳給丙。這樣甲和丙之間彷佛構成了一條完整的虛擬的「支付通道」。

HTLC 的機制能夠擴展到多我的,你們能夠想象一下,想象出來了就理解了閃電網絡。

閃電網絡採用了更合理的支付網絡架構,表明着效率的提升。與其向全部人廣播交易,交易能夠更直接地發送給收款人。只有當交易雙方不誠實時,才須要進入繁瑣的流程——鏈上共識操做。經過這種方式,能夠實現至關於互聯網上各方之間直接溝通所能達到的性能和效率,同時保留比特幣區塊鏈的一些安全特性。然而,若是各方想在出現問題時能夠隨時迴歸到區塊鏈上並收回資金,那麼創建這樣一種支付系統是很是複雜的,而且還存在着一些重大風險和侷限性。

3. 閃電網絡是如何工做的?

閃電網絡的正常使用包括經過向區塊鏈網絡提交正常的資金交易來開通支付通道,而後進行任何數量的閃電交易,更新通道內資金的臨時分配而不廣播到區塊鏈,最後關閉支付經過廣播最終版本的交易來分配通道內的資金。
閃電網絡是基於比特幣區塊鏈構建的智能合約系統,容許兩方直接進行快速,廉價的支付。爲了實現這些快速而廉價的交易,採起了如下步驟:

  • 設置一個多重簽名錢包,其中包含必定數量的比特幣(由雙方中的至少一方提供)
  • 錢包地址而後保存到公共比特幣區塊鏈中,包括資產負債表(智能合約),證實該比特幣存款的多少屬於誰
  • 在此支付通道進行一次設置以後,這兩方就能夠進行無限次的交易,而無需觸及存儲在區塊鏈中的信息
  • 對於每次交易,雙方簽署更新的資產負債表以便始終反映存儲在多信用點錢包中的比特幣的金額屬於誰
  • 更新後的資產負債表不會上傳到區塊鏈,而是雙方保留其副本。
  • 每當發生爭議或支付通道關閉時,雙方均可以使用最新的互相簽署的資產負債表來支付他們在多信用卡錢包中的份額。

這聽起來很是麻煩,但實際上對於最終用戶來講,進行閃電支付幾乎不須要燒腦的工做,全部上述操做都將在後臺自動進行。

閃電網絡使用支付渠道有效地容許用戶直接與對方進行交易,而不是將業務廣播到整個世界(又名公共區塊鏈)。經過彼此跟蹤彼此之間的支付,雙方能夠避免與區塊鏈進行昂貴且耗時的交互。若是Lightning Network上的餘額存在某種爭議,那麼由雙方提供的最近的資產負債表將決定多sig錢包中資金的分配方式。

閃電網絡不須要對手方合做退出支付通道。雙方均可以選擇單方面關閉通道。由於全部各方都有多個多簽名。在這個網絡上有許多用戶之間的通道,理論上能夠經過這個網絡向任何人發送付款。

4. 閃電網絡的主要特色

理論上來講,閃電網絡應該容許網絡中的全部參與者經過在節點之間找到一條路徑,由此可以在各個方向上進行近乎即時且廉價的交易。所以,只要沒有出現問題,就能夠避免向比特幣網絡進行廣播,從而造成可擴容網絡。該體系架構甚至容許小微交易並加強了付款隱私性。

因爲相對時間鎖定功能,通道能夠無限期地保持開放,而且不存在交易對手方風險; 若是有人試圖經過惡意地關閉通道來竊取資金,交易的其餘參與方將有一個很長的時間窗口來發起他們本身的贖回交易並收回資金。

  • 快速支付:在既定通道內的支付幾乎能夠像數據經過互聯網在兩個節點之間傳輸同樣快。
  • 無需可信第三方:通道中的兩個參與者直接使用常規的比特幣交易進行互相支付(其中只有一個是廣播的),所以任何第三方都不能控制其資金。
  • 爲區塊鏈減負:只有開啓通道,關閉通道和爭議性交易須要提交到區塊鏈上進行,容許閃電網絡內的全部其餘交易保持未提交狀態。這這使得閃電網絡用戶能夠經過比特幣進行頻繁支付,而不會使必須處理區塊鏈上每筆交易的完整節點承擔過多的負擔。
  • 支付通道能夠無限期地保持開放:只要頻道中的雙方繼續彼此合做,頻道能夠無限期地保持開放 - 沒有強制超時期限。根據雙方的意願,能夠長期保持通道開啓,這能夠進一步減小區塊鏈上的負載,同時也能夠稀釋最終的費用。
  • 雙方約定可快速關閉通道:若是雙方贊成,能夠當即關閉支付通道(雙方可能但願等待一個或多個確認以確保支付通道在正確的狀態下關閉)。雙方未達成協定(如一方消失)也能夠關閉通道,但須要耗費更長的時間。
  • 洋蔥式路由:支付路由信息能夠以嵌套的方式加密,以便中間節點只知道他們收到了可路由支付的人和下次發送給誰,防止中間節點知道發起者或目的地。
  • 具備多重簽名功能:每一個參與方均可以要求經過多個密鑰對他們的付款進行簽名(https://en.bitcoin.it/wiki/Lightning_Network#cite_note-poon_multisig-2)。
  • 跨鏈:若是另外一條區塊鏈支持用於哈希鎖的相同哈希函數,以及具有建立時間鎖的能力,支付通道就能夠跨多個區塊鏈(包括側鏈)進行路由。利用異構區塊鏈共識規則,交叉鏈式原子互換能夠當即發生在鏈外。只要鏈能夠支持相同的加密散列函數,就能夠跨區塊鏈進行交易,而不須要信任第三方託管商。
  • 小額支付是可能的:因爲費用與支付金額成比例,您能夠支付一分錢; 會計甚至以千分之一的精確度完成。
  • 付款即時結算:資金在經過網絡到達目的地和返回所需的時間內發送,一般爲幾分之一秒。
  • 改進隱私:並不是每一個交易都存儲在公共區塊鏈上,只有當支付通道最終關閉而且餘額支付給雙方

5. 是否每一個交易都須要開設新的支付通道?

不是的,閃電網絡(所以它的名字)被構建爲一個網絡。儘管Alice可能尚未與Dave創建開放的支付渠道,但Alice經過Bob間接與Dave鏈接,或者甚至在二者之間使用多個步驟。藉助閃電網絡,用戶能夠與任何經過多跳鏈接到他們的支付通道網絡的人進行交易。從理論上講,每一個人均可以經過網絡與其餘人鏈接。人們也會經過(小)費用來激勵這些鏈接節點,每次交易使用其中一個鏈接時都會支付這些費用。閃電網絡的測試網實施的早期結果證明,確實能夠建立足夠分散的網絡。

閃電網絡的架構仍然是值得信賴的(由於它基於智能合約),而且始終確保資金將經過中介機構到達目的地,或者在沒有間接路徑到達目的地的狀況下退款。

Bob和Carol在網絡上充當「節點」。閃電網絡上的節點在某種程度上與比特幣網絡上的礦工相似。

6. 閃電網絡下的安全風險

一個巨大的未知因素是人們和企業如何實際使用這個網絡,評論員們的見解彷佛也不盡相同。有些人認爲閃電網絡最終會在小額支付場景中無處不在,其中的複雜性將以自動化方式處理。其餘人對閃電網絡持懷疑態度,一般的設想是在使用該系統時須要更多以手動方式來構建閃電網絡的各個組件,其用戶體驗還會由於通道意外關閉和閃電網絡宕機的困擾而變得糟糕。實際上,真實的狀況可能位於這兩種願景之間,隨着時間的推移,閃電網絡可能會更加趨近於雄心勃勃地那種願景。這種分歧彷佛能夠歸結爲閃電網絡的懷疑者認爲它是一個複雜,不完整和不切實際的支付系統,其徹底依賴於通道架構系統。支持者則將閃電網絡視爲比特幣區塊鏈上的第二層可擴展構件,最終將由錢包,支付協議系統和通道服務公司進行補充,從而帶來簡單而無縫的用戶體驗。最後,錢包能夠互相通訊,在無需用戶知情或者操心的狀況下,自動動態地決定最佳支付方式——鏈上支付或是經由閃電網絡上的最實際的方式。

  • 收款時要求必須在線:如上所述,收款人在收款以前須要簽名回收交易,以便付款人知道他們能夠在發生惡意通道關閉或拒絕簽名的狀況下回收資金。所以,要收款就須要一個熱錢包,這意味着若是發生安全事故,私鑰可能會暴露。
  • 監控通道的需求:閃電網絡參與者或服務商可能須要主動監控支付通道。這可能給用戶或服務商帶來負擔,並可能下降通道內資金相對於存儲在鏈上的比特幣的安全性。可能會由於未能適當監控通道或鏈上網絡的擁堵,致使錯過回收交易截止日期。
  • 礦工能夠審查通道關閉的交易:51%的算力可能有能力經過審查通道關閉的交易來竊取閃電網絡用戶的資金,在這種狀況下礦工是對立方。即便沒有閃電網絡,此類攻擊的潛在後果已經至關具備破壞性,但閃電網絡可能會爲惡意礦工提供更大的攻擊面。

收款時私鑰暴露到到網絡上的可能性,惡意的關閉通道的風險以及礦工審查通道回收交易的風險,雖然這三個因素中單獨的每個彷佛都不是那麼重要,但加在一塊兒,咱們認爲這明顯致使了更低的安全性 - 雖然全部這些風險均可以在必定程度上加以管理。

有一種風險是,懶惰或信息貧乏的用戶在通道中留存了過量資金,而且因爲其中一種事故狀況而致使資金丟失或被盜。同時還存在的風險是因爲價格波動,用戶在支付通道中會留存比意圖中更多的資金。

  • 匹配失敗:若是其中一個對等方沒有響應,用戶可能須要等待數小時才能關閉付款通道並經過替代路線從新發送資金
  • 沒有離線付款:用戶沒法支付不在線的人
  • 對於大額付款並不理想:儘管可能存在經過各類支付渠道的路線,但同行多個錢包中的資金可能不足以轉移大額資金
  • 集中化:閃電網絡可能會鼓勵支付中心的集中化(相似於礦工集中),這也是爲何有人說閃電網絡實際上會出現相似銀行的超級節點的緣由。

6.閃電網絡技術展望

恆星宣佈將在2018年部署閃電網絡

做者:unclefynn 連接:https://www.jianshu.com/p/b75a6ee8c7cf 來源:簡書 簡書著做權歸做者全部,任何形式的轉載都請聯繫做者得到受權並註明出處。