當前位置:
首頁 > 最新 > 詳解閃電網路的歷史——從頭腦風暴到測試版問世

詳解閃電網路的歷史——從頭腦風暴到測試版問世

就在幾周前,第一個閃電網路的官方測試版——lnd——正式發布,其第二個版本——eclair——也在上周進行了部署,而閃電網路的第三個版本——c-lightning——預計也會很快實施。因此,人們期待已久的以廉價和即時的方式進行交易的比特幣覆蓋網路——閃電網路被許多開發商認為是安全的,同時它也可以在比特幣的主網上使用:這是多年來相關開發者一直在努力達成的技術的一個重要里程碑。

以下是關於閃電網路從概念孕育到最近測試版本實施期間的故事。


閃電網路最早的起源可以追溯到比特幣本身。

閃電網路拼圖的第一部分可以從一個叫做「支付渠道」的概念說起。支付渠道本質上是兩個比特幣用戶之間的比特幣餘額,這個渠道連接的只有兩個用戶:世界上的其他人不需要知道或關心他們的共同餘額是多少。更重要的是,這些餘額可以在不需要進行任何比特幣鏈上交易的情況下進行更新;當一個用戶的餘額增加時,另一個用戶的餘額就會相應減少。實際上,這一過程允許參與者相互之間進行交易,這樣就不會使他們的交易數據對整個比特幣網路帶來負擔。

一旦用戶完成了交易,他們就可以通過向網路僅傳輸一個交易來解決他們的支付渠道:交易根據用戶的渠道餘額會支付給他們各自應該接收的比特幣。這一過程對用戶的好處意味著通道更新(「鏈下交易(off-chain transaction)」)的費用會更便宜,因為它們不需要支付挖礦費用,而且由於這些交易不需要進行區塊鏈確認,它相應的交易速度要更快。

這一普遍觀點提出的時間可以說是和2009年由中本聰發布的第一個比特幣軟體一樣早。Bitcoin 0.1包含了一份原始的代碼草案,該草案允許用戶在確認交易之前更新交易:

(一份包含在Bitcoin 0.1中的支付通道代碼草稿,來源:GitHub)

雖然這段代碼只是一個粗略的草稿,但中本聰與當時的bitcoinj開發者Mike Hearn進行私人通信時更詳細地介紹了支付渠道將如何工作。

在幾年之後的2013年,Hearn在Bitcoin-development郵件列表中公布了中本聰關於支付渠道的解釋:

(中本聰對支付渠道如何運作的解釋,由Mike Hearn描述。來源:Bitcoin-dev郵件列表)


儘管支付渠道的概念存在的時間和比特幣一樣長,但中本聰的設計並不是完全安全的。最重要的是,支付渠道的用戶可以與礦工串通起來獲得比渠道餘額能給他的更多的比特幣。

在2011年夏天,即中本聰離開比特幣項目後,有人首次提出了解決這個問題的方案。Bitcointalk論壇用戶「hashcoin」列出了一個兩層的支付通道,該渠道要求用戶將幾個部分簽名的多重簽名交易和帶有時間鎖(timelocks)的交易進行交換,時間鎖依賴於彼此之間的確認。如果一個參與者消失了,另一個人可以在經過一段時間後在支付渠道中要求獲得所有的資金。然而這種設計的缺點是,hashcoin的渠道只能在一個交易方向上工作。Alice可以向Bob進行任意次數的支付,但是Bob無法通過相同的渠道向Alice發起支付。

一個類似於hashcoin的想法在2013年初重新浮出水面,這一次它繞過了理論領域。在那年的4月份,Jeremy Spilman在Bitcoin-development在郵件列表中描述了一個支付渠道的概念。他甚至編寫了一個概念證明(proof of concept)的機制。這個設計是由Mike Hearn來進行調整的,在那之後Bitcoin Core的參與者、Blockstream的聯合創始人和Chaincode Labs的開發者Matt Corallo在2013年中期將這個概念轉變為bitcoinj的工作代碼。

又過了一年,也就是2014年,Alex Akselrod(現在是Lightning Labs的工程師)第一個提出了雙向支付渠道。在這一渠道中,Alice可以任意多次的向Bob進行支付,但通過使用較少的時間鎖, 儘管支付次數有限,但Bob可以在同一個通道內向Alice進行支付。但是與單向支付通道相反的是,這種解決方案實際上從未在代碼中實現過。


大約在第一個支付渠道被提出的同時,包括Bitcoin Core的開發者Peter Todd和Gavin Andresen在內的其他人正在考慮鏈下的支付網路。如果Alice可以通過一個鏈下交易向Bob進行支付, Bob可以通過一個鏈下交易支付Carol,那麼Alice應該能夠在不需要進行任何鏈上交易的前提下,通過Bob向Carol進行支付。

Corné Plooy(現在是荷蘭比特幣交易所BL3P的一名閃電網路的開發者)也在致力於比特幣支付層的相關工作,他在2011年首次提出了這一想法。

(這是對Plooy的支付層進行設計的一個早期例子,它將會演變為了閃電網路的前身Amiko Pay。來源:Corné Plooy)

隨著Bitcoin Core的開發者和未來的Blockstream 的CTO 、Gregory Maxwell和Ripple 的發明者Ryan Fugger(以及其他一些人)的建議,這個想法在過去的幾年裡逐漸演變成比特幣和原始瑞波技術的合併版本,最終形成了被人們稱為「Amiko Pay」的系統Plooy。早期的Amiko支付草案在設計中沒有使用支付渠道,因此開發者在系統中注入了信任機制,但是:如果一個用戶拒絕與另一個用戶結清餘額的話,後者就沒有相關追索權。

在2012年夏天,數學家、未來的比特幣公司TLV的聯合創始人Meni Rosenfeld提出了一個早期支付網路的建議,該提議利用了支付渠道。在Bitcointalk論壇上,Rosenfeld描述了一個系統,在這個系統中Bob(來自上面的例子)被一個支付處理器所取代,Alice和Carol都是它的客戶。支付處理器也可以與其它的有更多客戶的支付處理器進行渠道的鏈接,這樣就可以把支付渠道網路變成一個輪輻式系統。

而這樣的一個系統也確實在支付處理其中引入了一點信任機制——他們可以拒絕完成付款並把錢留在自己手裡——這個過程的風險是很小的:但是當用戶注意並停止使用這一渠道之前,這種手段只能完成一次支付。此外,更大的支付可以被分割成較小的部分,如果一個支付處理器被證明是不可靠的話,那麼只有一小部分的支付數據將會丟失。

這一解決方案在這些年裡重新被人們提及了好幾次。例如,Bitcoin Core的貢獻者Peter Todd於2014年在比特幣開發郵件列表上發表了這一概念。與此同時,支付處理器BitPay在2015年初發布了一份關於類似的跨渠道支付(「Impulse」)的白皮書。與此同時,還有一個類似的解決方案實際上是由瑞典的創業公司Stroem來實現的——但這些迭代都沒有以一種有意義的方式進行下去。

(現在已經不存在的Strawpay微支付公司的標誌。來源:互聯網檔案館)

Alex Akselrod較早地嘗試建立一個去信任的支付渠道網路。在2013年的wiki草案中,Akselrod的解決方案在理論上解決了這個問題。但他的解決方案的主要問題是其在實踐中它仍然相當笨拙。例如,如果一筆付款在任何一條交易路線上都失敗了,那麼用戶就沒有追索權,他們只能等到資金通過支付渠道的時間鎖定來能獲得釋放,這一過程可能需要幾個月的時間。

與此同時,在2015年,Plooy的Amiko Pay已經發展到了可以被人們所信任的程度。然而,它的設計要求對比特幣協議進行相對意義深遠的改變,即有必要回滾某些類型的交易。雖然這一想法在技術上是可行的,但這一對比特幣協議的這些改變是否會被採用還不清楚。

在同年晚些時候,來自蘇黎世理工大學(ETH Zurich)的Christian Decker博士(現在在Blockstream任職)和Roger Wattenhofer在他們的白皮書中「一個快速、可擴展的支付網路,使用比特幣的雙微支付通道」中提出了另一種覆蓋網路的設計。他們的解決方案非常依賴時間鎖定作為支付渠道有效性的「倒數計時器(countdown ticker)」,它與一種名為「invalidation tree」的加密技巧相結合用於過期的通道餘額。

Akselrod的解決方案也就是後來的Amiko Pay,和雙工微支付通道(DMCs)在某些方面都與閃電網路相似,並且它們可以通過做出不同的權衡來實現他們自己的權利。如果沒有發明閃電網路的話,那麼這些解決方案中的任何一種都可能成為比特幣的首選擴展層。

當然,閃電網路是被發明的。


經過多年的支付渠道和網路設計的演變,所有關於閃電網路的拼圖碎片最終在2015年初一起平湊成了完成的圖像。

智能合約交易平台Mirror的CTO,Thaddeus「Tadge」Dryja和Joseph Poon寫了一篇題為「比特幣閃電網路:可擴展的連鎖即時支付」的白皮書,該論文於當年2月首次公開。

事實證明,這是一個遊戲規則的改變者。

這篇論文被人們當做了閃電網路的白皮書,它提出了幾種解決方案來實現一個完全去信任化的付款渠道網路:當參與者把他們所有的錢都放在他們的渠道上時,它們是不會冒險進行欺詐的,而中間商在完成交易的時候也無法竊取用戶哪怕是一丁點的比特幣。此外,該解決方案需要對比特幣協議進行相對較少的修改,並承諾比目前提出的替代方案要更加靈活和友好。

在這份白皮書中所描述的關鍵創新是「Poon – Dryja渠道」。與早期的支付渠道設計一樣,Poon-Dryja渠道依賴於部分簽名和非廣播交易的交換。但與以往的支付渠道相比,這些新渠道採取了一些額外的步驟,這些步驟包括了交換秘密數字,這使得支付渠道可以在不同「方向」上進行更新。Alice可以向Bob進行任意次數的支付Bob,而Bob也可以在同一個通道向Alice支付任意次數。

此外,閃電網路利用了哈希時間鎖定合約(Hashed Timelock Contract,簡稱HTLCs)。這個概念通常被認為是由Tier Noan最早提出的,最初這一概念是為跨區塊鏈交易而設計的;例如,通過這個系統用戶可以去信任的交易比特幣和萊特幣。在閃電網路中,這個解決方案被用來連接支付渠道的支付。

2015年2月,Poon和Dryja在舊金山的比特幣研討會上首次公開了他們的想法。

此後的幾個月的時間裡,在2015年的春夏兩季,比特幣的擴容問題和區塊容量大小限制的爭論演變成了一場公開的爭鬥。在這種危機氛圍中,2015年相關人士末組織了一系列的會議:在9月份的蒙特利爾比特幣擴容大會(Scaling Bitcoin Montreal),在12月份的香港比特幣擴容大會(Scaling Bitcoin Hongkong)。在蒙特利爾,Poon和Dryja再一次提出了他們的建議,隨後他們在香港對這一話題也做了第二次,也是更為深入的介紹。

在香港會議的第二節擴容大會之後,Gregory Maxwell在Bitcoin-development的郵件列中提出了比特幣的擴容路線圖,這張路線圖也包括了閃電網路。這個路線圖獲得了大多數比特幣技術社區的支持,並成為了Bitcoin Core項目的路線圖。

如果人們對閃電網路的預期不夠大的話,那麼現在人們肯定對它有了更大的預期。


閃電網路白皮書是一篇很長而複雜的論文,它涵蓋了高度技術化的概念;在2015年,很少有人有時間和相關技巧去閱讀和理解它。但是,作為長期Linux內核開發人員的Rusty Russell了解了這份白皮書之後,它對這一技術的的理解就大大增加了。在2015年初發表的一系列博客文章中,Russel將這份白皮書「翻譯」成了一個更容易讓一般讀者所理解的建議(但其內容仍然具有相當的技術性)。

在隨後的2015年5月,區塊鏈開發公司Blockstream聘請了Russell,並希望它在C語言中實現閃電網路:C – Lightning。事實證明,這一重大舉措對閃電網路的實施來說至關重要。一個只有幾個月前才提出的概念,現在正在由一個世界級的開發人員來實現。後來,Christian Decker也加入了Russell在Blockstream的項目,而其他的開發者,包括Corne Plooy在接下來的幾年中也會對這一開源項目做出貢獻。

在Russel開始研究c-lightning後不久,Blockstream不再是唯一一家實現閃電實現的公司。到2015年夏天,一家規模較小的、原本計劃開發基於安卓的硬體錢包的比特幣技術公司ACINQ也決定嘗試一下這種有前景的技術。這家總部位於巴黎的初創公司後來宣布它已經開發了自己的Scala編程語言「eclair」來實現閃電網路側協議。

(ACINQ公司關於 éclair的公告。來源:medium.com)

在接下來的幾個月里,第三個關於閃電網路的實施方案也正在實施中。到2016年1月,閃電網路的兩位作者Poon和Dryja,以及Elizabeth Stark、Olaoluwa 「Laolu」 Osuntokun共同創立了一個全新的公司來開發閃電網路:也就是Lightning Labs。Lightning Labs將率先開發lnd,這是在谷歌的Go編程語言(也被稱為「golang」)中實現的閃電網路技術,他們在創建公司之前就已經開始開發這一技術了。

在成立該公司大約一年後,也就是在2016年末,Dryja離開了Lightning Labs轉而加入麻省理工學院媒體實驗室的數字貨幣計劃,該組織僱傭了Bitcoin Core的開發者Wladimir van der Laan和其他幾位Bitcoin Core的貢獻者。在麻省理工學院,Dryja繼續致力於在Lightning Labs所做的的閃電網路的實施工作,他將其重新命名為lit;現如今,lnd和lit都存在著。Lit通過將一個錢包和一個節點包裝成一個數據包,將自己與lnd和其它的閃電網路技術區分開來;在今天,它還通過配置選項能同時支持多個幣種。

此外,以礦池和挖礦硬體而聞名的區塊鏈公司Bitfury,對lnd的實施進行了分叉產生了另一個版本的軟體。該分叉的獨特之處在於它在設計中進行了權衡,以便不需要在比特幣網路上有一個可延用性的修正——稍後再詳細說明這一獨特之處。Bitfury還在交易路由領域做出了貢獻,最明顯的貢獻是一種名為「Flare」的協議。(然而,lnd的Bitfury分叉目前的開發進度似乎是停滯不前了。)

此外,在2016年,主要的錢包提供商Blockchain宣布它開發了一個被稱為thunder的閃電網路的簡化版本。與典型的閃電網路的實現相比,這一版本做了相當大的權衡,最顯著的原因是它需要獲得網路上的對手方的信任。通過這種權衡,它能夠在2016年春天發布其實現的內部測試版本,這可比其他開發團隊要早得多。(雖然thunder也可能與未來的閃電網路進行兼容,但這一項目的發展目前似乎也停滯不前了。)

就在2016年年底,第三次擴容大會——米蘭比特幣擴容大會(Scaling Bitcoin Milan)過後的幾天里,關於閃電網路實施的大部分貢獻者匯聚一堂舉行了第一次閃電峰會( Lightning Summit)。在這次會議中,他們討論了如何使所有不同閃電網路實現相互協同工作,從而形成了一個被稱為「BOLT」 (一個以閃電技術為基礎的縮寫)的閃電網路協議規範。閃電網路白皮書是一個理論上的建議,BOLT則成為了我們今天所知的閃電網路的基礎。


當閃電網路白皮書首次發表時,它所描述的想法實際上是與比特幣協議是不兼容的——至少它是不安全的。為了能夠像描述的那樣啟用閃電網路,相關開發者需要對比特幣進行一些協議上的改變。

第一個改變的協議是新的時間鎖定,它將使支付渠道能夠抵抗比特幣的延展性漏洞。然而,這個問題早在閃電網路白皮書發布之前就已經被解決了,並且在2015年得到了徹底的解決,在當時Peter Todd設計並提出的一種新的在比特幣協議中實現了:CheckLockTimeVerify (CLTV)。

後來,Bitcoin Core的開發者們意識到閃電網路與相關時間鎖定的功能的表現甚至會更好。這些功能允許用戶在另一筆交易被確認後,將比特幣鎖定在一個特定的時間點上。在使用閃電網路的情況下,用戶可以無限期地打開他們的支付渠道,而CLTV 時間鎖定則要求他們定期關閉他們的渠道。在2016年夏天,比特幣網路上啟動了一個名為CheckSequenceVerify (CSV)的軟分叉升級,以實現相對的時間鎖定。

但閃電網路需要(至少是假定用戶有良好的用戶體驗) 的最大協議改變是對任何比特幣交易可延展性的修正。

在閃電網路白皮書發布的時候這被認為是一個巨大的挑戰。當一個軟分叉草案正在修復這一挑戰的時候,開發者不確定這樣的方案是否可行,並且認為網路需要硬分叉來解決這個問題。然後,到了2015年年底,Bitcoin Core的參與者意識到隔離見證(SegWit),作為Blockstream 的Elements Project的一部分可以作為一種反相兼容的軟分叉部署在比特幣上。

經過長時間的鬥爭,隔離見證的軟分叉終於在2017年夏天被激活,這也為比特幣的閃電網路的發展鋪平了道路。


儘管隔離見證還沒有被部署在比特幣協議上(而且也不完全確定是否會這樣做),但閃電網路的發展仍在進程中。

閃電網路的部署是從測試網路開始的,它是專門為測試目的而設計的比特幣副本。或者更準確地說,在這種情況下,閃電網路開始於一個專門的測試網路版本,它被稱為「SegNet 4」(它是第四個針對隔離見證的測試網路)並於2016年5月正式啟動。

在2016年10月SegNet 4部署後不到6個月,Blockstream開發團隊已經將c-lightning原型升級到了可以使用的程度。在被稱為「閃電網路的第一次戰役」的情況下,Decker使用測試網路的比特幣在閃電網路的早期循環中從Russell那「買了」一張貓的圖片。

(這隻貓的照片是Christian Decker從Rusty Russell那裡買的。來源:Blockstream.com)

到2017年1月,第一個閃電網路的實現——lnd的內部測試版本發布。與此同時,閃電網路本身已經「正式」進入了「內部測試階段」:來自世界各地的開發者們首次被邀請嘗試這項技術,而Lightning Labs將繼續幫助項目進行測試和改進相應的代碼。

這個內部測試階段反過來也導致越來越多的開發人員在lnd和其他閃電網路的實現之上構建應用程序。這些在閃電網路上實施的應用被稱為「Lapps」,這些應用包括了從桌面錢包和移動錢包,到微支付博客平台,再到賭博網站,瀏覽器,還有更多——儘管在大多數情況下,這些應用程序仍然是為比特幣的測試網路所設計的。

在2017年夏季,隔離見證最終被激活,比特幣閃電網路的基礎工作已經完成。從那時起到比特幣的主流網站上宣布完成了閃電網路的第一筆交易一共經歷了三個月的時間。在不久之後的11月,Lightning Labs在區塊鏈上進行了第一次閃電網路的跨鏈交易:從比特幣到萊特幣。在去年12月,來自Blockstream、Lightning Labs和ACINQ的開發團隊宣布,他們已經成功的完成了互操作性測試。

此外,到今年年底,其他人也開始在比特幣主網上的閃電網路使用比特幣來進行交易——在某些情況下這些使用者違背了開發者的建議。隨著越來越多的閃電通道被開放,到了12月,開發者Alex Bosworth通過他建立的支付處理器Bitrefill的閃電通道支付了他的電話賬單:這是有史以來第一次在閃電網路上進行真實貨幣的買賣。

一個月後,Blockstream——儘管其開發的c-lightning的實現還在外部測試版——開了一家網路商店,在這家網路商店中人們可以用比特幣買到真正的產品,儘管該網站上有明確的風險警告。到了2018年2月,由於比特幣披薩而享譽盛名的比特幣傳奇人物Lazlo Hanyecz宣布會通過閃電網路購買到了兩張披薩餅!

(Lazlo Hanyecz正在享用披薩)


經過多年的發展,甚至是更多年不斷的概念化,閃電網路也許正是在幾個星期前達到的其發展歷程中最偉大的里程碑。

到2018年3月中旬,Lightning Labs的lnd是第一個在外部測試版中發布的閃電網路實現。該公司同時宣布了一項價值250萬美元的種子投資計劃,投資方中包括了推特的首席執行官Jack Dorsey等知名投資者,Lightning Labs認為該公司一直在準備為比特幣的主流網路(主要是技術用戶)使用閃電網路。

隨後,ACINQ在3月28日發布了一條推文,宣布eclair也已經發布了外部測試版,因此這也被認為是閃電網路為上線主網做好了準備。該公司還表示,他們的安卓版本的閃電錢包將於下周發布。(在這篇文章發表的時候,其發布時間為下一周。)

Blockstream的c-lightning實現還沒有在外部測試版中發布,不過它的開發團隊已經向比特幣雜誌表明了它也即將發布。不過,這一區塊鏈開發公司在今年3月的最後一周推出了7款全新的Lapps,這也凸顯了該公司在閃電網路方面的進展。

雖然人們已經開始使用了閃電軟體,但其外部測試階段只會進一步刺激這種使用量增長。在這篇文章發表的時候,超過1000個閃電節點已經打開了近5000個支付渠道,總共佔有了10個比特幣(大約7萬美元)。每天都有成百上千的新節點出現在網上,甚至連一個特定在萊特幣上部署的閃電網路也正在形成,在未來它可能會與比特幣進行互操作。

(在發表這篇文章時的閃電網路圖)

然而,即使有了這些進步,閃電網路仍處於早期階段。在如今大多數閃電網路的用戶仍然是技術人員(通常是開發者),他們的使用也大多是帶有實驗性質的。雖然測試版軟體是閃電網路發展主要的里程碑,但是開發和改進網路是一個持續進行的過程,而且相關人員在這方面還需要做很多工作,而閃電網路上關於路由、隱私和其它風險的公開問題仍然存在。最有可能的是只有閃電完了進一步被更多的人使用才能回答這些問題。

備註:在為這篇文章做研究時,我意識到閃電網路的完整(至今為止)歷史比我已經知道的更加廣泛。將閃電網路發展的歷史概括為一篇文章需要省略一些細節,這對所有對幫助該技術實現的人、項目和概念都是不公平的。本文試圖概述閃電網路目前的情況,但最好將這篇文章理解為一篇粗略的摘要——而不是詳盡的歷史或技術描述。感謝所有為這篇文章提供信息的人。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 巴比特資訊 的精彩文章:

IBM區塊鏈帝國拔地而起,70億美元市場正被搶佔
以色列將開設當地最大的區塊鏈課程 韓國三星合辦

TAG:巴比特資訊 |