就在幾周之前,第一次閃電網絡落地Ind,并在全國范圍內進行公測,第二次落地eclair在上周啟動,同時很快也要啟動第三次c-lightning落地。因此,人們對閃電網絡這種覆蓋比特幣的網絡已經期待已久,并且使用它進行交易費用低、速度快,許多開發商也認為他的安全性足以在比特幣的主網上使用:這是該技術上的重要突破。
最初的概念
閃電網絡最早的起源可以追溯到比特幣本身。
閃電之謎的第一部分是一個叫做“支付通道”的概念。“支付渠道本質上是兩個比特幣用戶之間的比特幣余額平衡,只有兩個用戶:其他人不需要知道也不需要關系他們之間的相互平衡。”重要的是,這些余額不用在線交易也能更新;當一個用戶的余額增加時,另一個用戶的余額就會相應減少。也就是說,允許比特幣的擁有者私下交易,這樣一來不會因為他們的交易使整個網絡產生負擔。
一旦用戶完成交易,他們可以通過僅向網絡發送一筆交易來結算他們的付款渠道:該交易根據他們的渠道余額支付他們應該收到的每項交易。為了這些用戶的利益,這也應該意味著渠道更新(“離線交易”)更便宜,因為它們不需要采礦費用,而且速度更快,因為它們不需要區塊鏈確認。這個總體思路可以說和2009年中本聰最早發布的比特幣一樣古老。比特幣0.1中的一份原始的碼草案允許用戶在確認交易之前更新交易:
包含在比特幣中的支付渠道代碼草稿0.1。
雖然這個代碼是一個粗略的草案,但中本聰(Satoshi Nakamoto)更詳細地介紹了支付渠道如何與當時的bitcoinj開發人員Mike Hearn進行私密交流。
幾年后,2013年,Hearn在比特幣發展郵件列表中發布了中本聰對支付渠道的解釋:
邁克赫恩描述了中本聰對付款渠道如何運作的解釋。
最初的付款渠道
盡管比特幣的本身一直就有支付渠道的概念,但中本聰的設計并不完全安全。最重要的是,支付渠道中的用戶可能會與礦工勾結,借機獲取更多的比特幣。
2011年夏天有人首次提出了解決這個問題的辦法時,,中本聰已經離開了比特幣這個項目。 Bitcointalk論壇用戶“hashcoin”提出了一個雙層支付渠道,該渠道要求用戶交換幾個部分簽名的多重簽名進行交易,并且提出時間間隔相互依賴才是有效的。如果交易雙方一方有人沒有支付,另一方在一段時間后可以要求去支付渠道中的所有資金。然而,這種設計的缺點是hashcoin的渠道只能朝著一個方向發展。比如:我可以支付任意次數給你,但你無法通過同一頻道支付給我。
2013年初有人重新提出了和hashcoin的想法差不多的想法,這一次它逃脫了理論領域。當年4月,Jeremy Spilman在比特幣開發郵件列表中描述了一種支付渠道概念。他甚至編寫了一個概念證明。反過來,這個設計是由Mike Hearn調整的,之后比特幣核心貢獻者Blockstream聯合創始人和Chaincode Labs開發人員Matt Corallo在2013年中之前將該概念轉化為bitcoinj的工作代碼。
2014年,Alex Akselrod(現在是Lightning Labs的一名工程師)率先提出了雙向付費渠道。我可以支付任意次數給你,而使用遞減的時間段,你也可以在同一頻道內支付給我,只不過有限制次數。然而,與單向支付渠道不同的是,該解決方案從未在代碼中實際實施過。
第一個網絡支付概念
大約在第一個支付渠道被提出的同時,包括比特幣核心開發者Peter Todd和Gavin Andresen -在內的其他人也已經在考慮非連鎖的支付網絡。 如果我可以通過非連鎖交易向你支付費用,并且你可以通過非連鎖交易支付給他,那么我應該也能夠通過你支付給他,而不需進其他的鏈式交易。
CornéPlooy(目前是荷蘭比特幣交易所BL3P的閃電開發人員)也一直致力于比特幣的支付層,他在2011年首次提出這是一個粗略的想法。
Plooy的支付層設計的早期例證,將演變成閃電網絡前身Amiko Pay。
隨著比特幣核心開發人員和未來Blockstream的 CTO Gregory Maxwell以及Ripple發明人Ryan Fugger(等等)的加入,這一想法逐漸演化為比特幣與原始Ripple技術的合并,所以Plooy系統便改稱為“Amiko Pay ”Amiko Pay早期的草稿并未使用支付渠道,因此重新對對系統添加了信任機制,但是:如果一個用戶拒絕與另一個用戶達進行交易,后者也無權追償。
在2012年夏季,數學家、后來的emBassy TLV聯合創始人梅尼羅森菲爾德提出利用支付渠道的早期支付網絡的提案。在Bitcointalk論壇上,羅森菲爾德描述了一個系統,提出第三方系統作為支付處理器,大家都是客戶。支付處理器又可以與其他支付處理器以及更多客戶建立渠道,將支付渠道網絡轉變為中心輻射式系統。
這樣的系統確實在支付方面增加了一些可信任性,人們可以拒絕付款并且保留余額,大家一致認為這種付款系統的風險很小,但是只有客戶在支付前啟動這個程序才會生效。此外,較大的付款可以分割成較小的量來依次進行,這樣如果一個付款處理器用不了,也只有一小部分余額會丟失。
這種解決方案多年來一再出現。例如,Bitcoin Core的貢獻者Peter Todd在2014年將該概念發布到比特幣開發郵件列表。支付處理器BitPay同時在2015年初發布了類似渠道間支付(“Impulse”)的白皮書。像這樣實際上將由瑞典初創公司Strawpay在幾乎同一時間稱為Stroem(或Str?m),但這些迭代都沒有以有意義的方式起飛。
現已解散的Strawpay微支付的LOGO。
亞歷克斯·阿克塞羅德(Alex Akselrod)在建立可靠的支付渠道網絡方面做出的嘗試較早。他在2013年的維基草稿中首次描述,將在整個2014年作為一個概念驗證實施,Akselrod的解決方案在理論層面上大大解決了這個問題。主要問題在于它在實踐中仍然相當笨拙。例如,如果付款在交易路線的任何地方失敗,則用戶將無法追索,而是等待資金通過付款渠道時間鎖定釋放,這可能需要數月。
與此同時,到2015年,Plooy的Amiko Pay已經發展到可以無可信任的地步。然而,他的設計需要對比特幣協議做出相對深遠的改變,以至于需要回滾某些類型的交易。雖然在技術上可行,但是否會采用比特幣協議的這種改變并不明顯。
同年晚些時候,來自蘇黎世技術大學(蘇黎世聯邦理工學院),Christian Decker博士(現在位于Blockstream)和Roger Wattenhofer的研究人員在他們的白皮書“用比特幣雙面打印的快速和可擴展支付網絡”中提出了另一種覆蓋網絡設計微支付渠道“。他們的解決方案強烈依靠時間鎖定作為支付渠道有效性的一種”倒數計時器“,與過期渠道余額的稱為”無效樹“的加密技巧結合使用。
Akselrod的解決方案,Amiko Pay的后期草案以及Duplex Micropayment Channels(DMC)在某些方面與Lightning Network類似,并且可以通過做出不同的權衡來自行實施。如果閃電網絡沒有被發明出來,那么這些解決方案中的任何一個都可能成為比特幣去比例層的基礎。
但是,當然,閃電網絡是被發明出來。
閃電網絡
經過多年的支付渠道和網絡設計的發展,所有這些難題終于在2015年初落下帷幕。
Thaddeus“Tadge”Dryja - 智能合約交易平臺Mirror的首席技術官 - Joseph Poon撰寫了一篇題為“比特幣閃電網絡:可擴展的外鏈即時付款”的白皮書,該文件于當年2月首次發布。
它被證明是一個改變游戲規則的游戲。
正如本文提到的那樣,閃電網絡白皮書提出了幾種解決方案來完全無信任地實現支付渠道網絡:沒有參與者可以作弊而不冒險投入他們渠道中的所有資金,而中間商轉發交易將無法甚至偷一點它。此外,該解決方案對比特幣協議只需要相對較少的更改,并且承諾比迄今提出的替代方案更靈活和更方便用戶。
白皮書中描述的關鍵創新是“Poon-Dryja渠道”。像早期的付款渠道設計一樣,Poon-Dryja渠道依賴部分簽署和非廣播交易的交換。但與以前的支付渠道相比,這些新渠道采取了額外的步驟,涉及密匙的交換,這允許支付渠道在“方向”上更新。我可以向你支付任意次數,并且你也可以向我付費同樣任意次數。
此外,閃電網絡利用哈希時間片合同(HTLC)。這一概念通常歸于Tier Nolan,最初設計用于跨區塊鏈交易;例如,可靠地交換比特幣和萊特幣。在閃電網絡中,該解決方案被用于跨支付渠道進行支付。
Poon和Dryja于2015年2月在舊金山比特幣開發者研討會上公布了他們的想法:
在此后的幾個月里,也就是2015年的春季和夏季,比特幣的縮放問題和塊尺寸限制爭議變成了公眾的爭執。在這場危機的氛圍中,當年年底舉辦了一系列會議:9月的蒙特利爾比特幣會議和12月的香港比特幣會議。 在蒙特利爾,Poon和Dryja再次提出了他們的建議,然后Poon和Dryja在香港進行了第二次更深入的介紹。
在本次第二屆香港會議之后,Gregory Maxwell在比特幣發展郵件列表中提出了一個擴展路線圖。 這個路線圖突出地包括了閃電網絡。 它得到了大多數比特幣技術社區的支持,并成為比特幣核心項目事實上的路線圖。
如果對閃電網絡的預期還不夠大,那肯定是現在。
概念實現
閃電網絡白皮書不僅長而且十分復雜,涵蓋高度技術性的概念;在2015年,很少有人有時間和技能來閱讀和理解它。但是當長期的Linux內核開發人員Rusty Russell了解白皮書時,基本上就增大了理解程度。在2015年初發布的一系列博客文章中,羅素“提出了一個更普遍(但技術含量還是非常高)的觀點。
然后,2015年5月,Russell被區塊鏈開發公司Blockstream聘用,開發C語言編程語言Lightning的實際實現:c-lightning。實施這一重大舉措證明是關鍵。一個僅在幾個月前才提出的概念現在正在由世界級開發人員實現。 Russell后來在Blockstream的Christian Decker加入,而包括CornéPlooy在內的其他開發人員將在未來幾年為開源項目貢獻力量。
在Russell開始研究c-lightning之后不久,Blockstream不再是實現Lightning實施的唯一公司。到2015年夏季,原本計劃開發基于智能卡的硬件錢包的小型比特幣技術公司ACINQ決定嘗試使用前景看好的技術。這家位于巴黎的創業公司后來宣布,它已經開發了自己的Scala編程語言的Lightning協議實現,命名為eclair。
ACINQ發布的eclair公告。
在接下來的幾個月里,第三個實施正在進行中。截至2016年1月,閃電網絡的白皮書作者Poon和Dryja與Elizabeth Stark和Olaoluwa“Laolu”Osuntokun一起成立了一家全新的公司來開發Lightning:Lightning Labs。 Lightning Labs將帶頭開發Linux,這是Google Go編程語言(也稱為“golang”)的Lightning實現,他們在成立公司之前就已經開始開發了。
在公司成立大約一年后,Dryja在2016年末離開Lightning Labs,轉而加入麻省理工學院媒體實驗室的數字貨幣計劃,該計劃是雇用比特幣核心首席開發人員Wladimir van der Laan和其他幾個比特幣核心貢獻者的組織。在麻省理工學院,Dryja繼續研究他在Lightning Labs啟動的閃電實施,他重新點燃了閃電;Ind和Lit都存在。 Lit通過成為一個錢包和一個節點來區別于lnd和其他實現;今天,它還通過配置選項同時支持多個硬幣。
此外,區塊鏈公司Bitfury以其采礦池和采礦硬件而聞名,并將該實施分為另一版本的軟件。這個分支的獨特之處在于它在設計中進行了權衡,以免在比特幣網絡上進行延期修復 - 稍后再做更多介紹。 Bitfury在交易路由領域也做出了貢獻,最顯著的是以一種名為“Flare”的協議的形式。(然而,現在Bitfury fork的發展似乎暫時停滯了)。
此外,2016年,主要錢包供應商Blockchain宣布開發了閃電網絡的簡化版本,名為雷霆。與典型的Lightning版本相比,這個版本做了相對較大的改變,最顯著的一點是它需要信任網絡交易對手。通過做出這種改變,它早在2016年春季就能夠推出alpha版本的實施版本,早在任何其他開發團隊之前。 (雖然雷霆也可能在未來與閃電網絡兼容,但目前這一項計劃還沒有取得說明進展。)
在2016年末舉辦的第三屆大比特幣米蘭大比拼之后的幾天中,大多數參加閃電版本測試的參與者聚集在一起,被稱為第一次閃電峰會。在這里,他們討論了如何使所有不同的實現互操作,從而導致閃電網絡協議規范被稱為“BOLT”(閃電技術基礎的首字母縮略詞)。在閃電網絡白皮書是一個理論建議的地方,BOLT成為了我們今天所了解的實際閃電網絡的基礎。
協議變更
當閃電網絡白皮書首次發布時,所描述的想法實際上與比特幣協議不兼容 - 至少不安全。為了按照描述啟用閃電網絡,比特幣需要多次協議更改。
其中第一個是可以使付款渠道抵御比特幣可塑性錯誤的新時間段。然而,即使在閃電網絡白皮書出版之前,這個問題已經得到解決,并且在2015年得到了最終解決,當時在比特幣協議中實現了Peter Todd設計和提出的一種新型時間段:CheckLockTimeVerify (CLTV)。
后來,比特幣核心開發人員意識到,閃電網絡在相對時間段內會更好地發揮作用。這些允許用戶在確認另一筆交易后將比特幣鎖定在特定時間點。在Lightning環境中,用戶可以無限期地開通付款渠道,而CLTV時間限制則需要他們定期關閉渠道。到2016年夏季,在比特幣網絡上啟動了稱為CheckSequenceVerify(CSV)的軟叉升級以實現相對時間段。
但閃電網絡所要求的最大協議變更(至少假設體面的用戶體驗)是對任何比特幣交易的延展性修復。
在閃電網絡白皮書出版時,可塑性被認為是一個巨大的挑戰。雖然當時正在進行修正軟叉的草案,但開發人員并不確定這是否可行,并認為它可能需要一個硬分叉。然后,到2015年底,比特幣核心貢獻者意識到,作為Blockstream元素項目一部分的可塑性修復程序的隔離見證(SegWit)可以作為向后兼容的軟分叉部署在比特幣上。
經過漫長的斗爭之后,隔離見證軟叉終于在2017年夏天激活,為比特幣閃電網絡鋪平了道路。
Alpha階段
盡管隔離見證者尚未被部署在比特幣協議上(但它并不完全肯定它會這樣做),閃電網絡的開發工作正在順利進行。
這是在testnet上開始的,比特幣是專門為測試目的而設計的。或者更準確地說,在這種情況下,閃電網絡啟動了一個專用版本的測試網,名為“SegNet 4”(這是第四個SegWit專用測試網),于2016年5月發布。
部署SegNet 4后不到六個月,2016年10月,Blockstream開發團隊已將其C型閃電原型推向可用范圍。在被稱為“Lightning First Strike”中,Decker在Lightning Network的早期版本中使用testnet比特幣從Russell“購買”了一張貓照片。
這只貓的照片是克里斯蒂安·德克爾從Rusty Russell那里買的。
到2017年1月,第一個Lightning落地——lnd ,以alpha版本發布。因此,閃電網絡本身已經“正式”進入了“alpha階段”:來自全球的開發者首次受邀嘗試該技術,而Lightning Labs將繼續幫助測試和改進代碼。
這個alpha階段反過來導致越來越多的開發人員在lnd和其他Lightning實現之上構建應用程序。這些“Lapps”,比如桌面和移動錢包,小額支付博客平臺,賭博網站,探索者等等,盡管在大多數情況下仍然是為比特幣測試網設計的。
在2017年夏天,隔離見證終于激活了,閃電比特幣網絡的基礎工作已經完成。從那時起,Blockstream花了大約三個月的時間宣布它在比特幣主網上的第一筆交易。過了一會兒,在11月,Lightning Labs首次跨區塊鏈進行Lightning交易:從比特幣到萊特幣。而在去年12月,來自Blockstream,Lightning Labs和ACINQ的開發團隊宣布他們已經進行了成功的互操作性測試。
而且,到今年年底,其他人開始真正在比特幣的主網上使用閃電網絡 - 在某些情況下,甚至與開發者的建議相抵觸。越來越多的閃電頻道已經開放,到了12月,開發商Alex Bosworth通過他與付費處理器Bitrefill建立的Lightning頻道支付了他的電話賬單:這是在閃電網絡上首次實現的第一筆真錢購買交易。
一個月后,盡管c-lightning落地仍處于測試階段,Blockstream 宣布他們開了一家網上商店,可以用實際的比特幣購買真品。該超市對比特幣交易所涉風險有明確警告。2018年2月,比特幣的傳奇人物拉扎洛·漢耶茲(Lazlo Hanyecz)宣布,他會通過閃電網絡購買披薩。
拉扎洛·漢耶茲(Lazlo Hanyecz)和他喜歡的披薩。
經過多年的發展,甚至更多年的概念化,可喜的是,就在幾個星期前終于取得了里程碑式的進展。
2018年3月中旬,Lightning Labs的lnd以測試版落地。該公司同時以250萬美元的種子投資輪回宣布,其中包括Twitter首席執行官杰克多爾西等大型投資者,Lightning實驗室認為Lightning落地已經率先準備在比特幣的主網上使用 ,主要面向技術用戶。
隨后在3月28日發布了ACINQ的推文,宣布eclair也已發布測試版,因此也被視為可以使用主網。該創業公司補充說,他們的Android閃電錢包將在下周發布。 (在本文發表時,即本周。)
Blockstream的c-lightning實現尚未發布測試版,盡管其開發團隊向比特幣雜志表示,這也可能很快出現。然而,區塊鏈開發公司在增加名單的同時,在3月的最后一周推出了7款全新的Lapps,突出了該公司在閃電戰方面的進展。
盡管人們已經在使用Lightning軟件,但測試版階段只會進一步刺激這一增長。在本文發表時,超過1000個Lightning節點已經開放了近5,000個支付渠道,總共持有10比特幣(撰寫本文時約為70,000美元)。每天都會有數百個新節點上線,甚至還有一個特定于萊特幣的閃電網絡正在形成,未來可能會與比特幣進行互操作。
閃電網絡發布時的圖表
然而,即使有了這些進展,閃電網絡仍處于早期階段。閃電網絡的大多數用戶仍然是技術人員(通常是開發人員),而用例大多是實驗性的。盡管測試版軟件是主要的里程碑,但網絡的開發和改進仍是一個持續的過程,還有很多工作要做,而有關路由、隱私和其他風險的問題依然存在。很有可能只有進一步的采用用戶反饋才能做出改進。
作者提醒:在寫本文之前,我意識到閃電網絡的全部(前)歷史比我已經知道的更廣泛。如果單獨來寫閃電網絡,那么這對那些曾經在這項技術上提供過幫助的技術人員是不公平的。本文試圖概述這么個故事,但是本文只能作為一個粗略的總結,內容或許不是那么詳盡,還是要感謝所有提供信息和意見的人,以至于作者能夠將閃電網絡的歷史做一個大概的描述。
評論