實現
閃電網絡的白皮書是一份長而復雜的文件,包含許多技術含量很高的概念;在2015 年,很少有人有時間和能力讀完並且理解這份文件。但Linux 系統內核長期開發者Rusty Russell 學習了這份白皮書後,大家的基礎認識提高了一大截。在2015 年初的 系 列 博 客 中,Russell 為更廣泛的讀者“翻譯” 了這份白皮書(但還是比較挑人的)。
然後,在2015 年3 月,Russell 接受Blockstream 工程的聘請,開發一個C 語言的閃電網絡實現:c-lightning。事實證明,這是邁向實現的關鍵一步。一個幾個月前才剛剛提出的概念,現在就有了一個世界頂尖的工程師來實現它。後來,Blockstream 的Christian Decker 也加入了Russell;其他人(包括Corné Plooy) 也為這個開源項目做了貢獻。
在Russell 開始開發c-lightning 不久之後,Blocksteam 就不是唯一一個入局實現閃電網絡的公司了。在2015 年夏天,ACINQ 這家更小的比特幣科技公司(一開始計劃開發基於智能卡的硬件錢包)決定也嘗試一下這項富有前景的技術。這家位於巴黎的創業公司後來宣布他們開發者用Scala 編程語言開發出了自己的閃電網絡協議,叫做eclair。
- 來自ACINQ 的eclair 發行公告。來源:medium.com -
又過了幾個月,第三個實現開始起步。在2016 年1 月,閃電網絡白皮書的作者Poon 和Dryja,也跟Elizabeth Stark 和Olaoluwa “Laolu” Osuntokun 一道,成立了一個全新的公司來開發閃電網絡:Lightning Labs。 Lightning Labs 帶頭在lnd 上開閘,這是一個用谷歌公司推出的Go 編程語言(也叫“golang”)實現的閃電網絡—— 他們在公司成立之前就開始開發了。
在成立公司大概一年後,在2016 年底,Dryja 離開了Lightning Labs,轉而加入了MIT Media Lab 的Digital Currency Initiative,這個機構也僱用了Bitcoin Core 的頂尖開發者Wladimir van der Laan 和多位Bitcoin Core的貢獻者。在MIT,Dryja 繼續開發他在Lightning Labs 起步的閃電網絡實現,重命名為lit。現在lnd 和lit 都可用。 Lit 與lnd 和其它實現有差異的點在於它把錢包和節點封裝成了一個整體;現在,它還支持同時使用多種幣。
此外,區塊鏈公司Bitfury(因其礦池服務和挖礦硬件而知名)也fork 了lnd 實現、做了另一個版本。這個版本的特殊之處在於,它在設計上做了犧牲,使得無需修復比特幣網絡的熔融性(malleability)—— 後面我們再詳細說明。 Bitfury 也在交易路由領域作了貢獻,最著名的成果是“Flare” 協議(只不過現在Bitfury 版本的lnd 開發似乎已經停滯下來了)(譯者註:“熔融性” 的例子是,本質上是同一個簽名的交易,可能會產生完全不同的哈希值(交易ID),使交易變得無法跟踪;就像同一塊金屬可以熔成不同的形狀一樣)。
再後來,在2016 年,主要的錢包服務商Blockchain 宣布他們開發出了一個簡化版的閃電網絡,叫做“thunder”。這個實現對標準的閃電網絡實現做了比較大的犧牲,最明顯的是它需要你信任網絡中的對手方。也因為這種犧牲,它得以在2016 年春天推出alpha 版本,比其他開發團隊要早得多。 (雖然thunder 也可能兼容閃電網絡,但這一實現的開發似乎也已經停滯了。)
在Scaling Bitcoin Milan 大會之後,第三次會議在2016 年底舉辦,大部分閃電網絡的貢獻者都齊聚一堂(這場大會因此被稱為第一次閃電網絡峰會)。在這裡,他們討論瞭如何讓所有的不同實現能相互操作,從而產生了一個叫做“BOLT”的閃電網絡協議規範(BOLT 是“閃電網絡技術技術(Basis of Lightning Technology)” 的縮寫)。閃電網絡白皮書是理論上的第一,BOLT 才是我們今天所知的、實際上的閃電網絡的基礎。
協議變更
在閃電網絡白皮書首次面世時,它的想法跟當時的比特幣協議是不兼容的—— 至少,是不安全的。要像白皮書裡寫的那樣使用閃電網絡,比特幣需要多方面的協議變更。
第一個變更是新類型的時間鎖,它可以讓支付網絡抵抗比特幣的熔融性漏洞。不過,這個問題在閃電網絡白皮書出版之前就已經在解決中了,並且在2015 年得到了最終的解決:Peter Todd 所提議和設計的一種新型時間鎖(CheckLockTimeVerify,CLTV)在比特幣協議中實現了。
然後,Bitcoin Core 開發者意識到,如果有相對時間鎖,閃電網絡可以運行得更好。因為相對時間鎖可以讓用戶指定某些比特幣在某筆交易上鍊後再鎖定一段時間。概念上,在閃電網絡中,用戶可以讓支付通道永遠敞開;但CLTV 時間鎖讓他們不得不定期關閉通道。一個軟分叉升級實現了相對時間鎖,叫做“CheckSequenceVerify”(CSV)。這種腳本是由Bitcoin Core 的貢獻者BtcDrak、Eric Lombrozo 和Mark Friedenbach 設計的,並且在2016 年夏天的比特幣網絡上激活了。
但閃電網絡(至少,如果想要用一個平順的用戶體驗的話)所要求的最大的協議變更是為所有的比特幣交易修復熔融性漏洞。
在閃電網絡白皮書出版之時,熔融性已經被認為是個很大的問題。雖然那時候已經有一個軟分叉草案已經在討論中了,但開發者並不確定這有用,而且認為可能需要一次硬分叉才行。然後,在2015 年末,Bitcoin Core 貢獻者們發現,Blockstream 公司Elements Project 解決熔融性的辦法“隔離 見證”(SegWit)可以作為向後兼容的軟分叉部署在比特幣上。
漫長的掙扎過後,隔離見證軟分叉最終於2017 年夏天在比特幣區塊鏈上激活,為閃電網絡登陸比特幣鋪平了道路。
(要了解隔離見證的歷史,見“The Long Road to SegWit: How Bitcoin's Biggest Protocol Upgrade Became Reality”)
Alpha 版本
即使在隔離見證還未部署在比特幣協議上(也尚不清楚到底會不會部署)的時候,閃電網絡的開發也進展很大。
這是從測試網上開始的。測試網是比特幣網絡的副本,專門用於測試。閃電網絡最開始在一個特殊版本的測試網上個起步:代號為“SegNet 4” 的測試網(它是第四個SegWit 的測試網),啟動於2016 年5 月。
SegNet 4 測試網部署不到半年,在2016 年10 月,Blockstream 開發團隊就已經把他們的c-lightning 原型提高到可用的程度。後來這被稱為“閃電網絡第一擊”:Decker 通過閃電網絡的一個早期版本,從Russell 手上“買” 了一隻貓,用的是測試網的比特幣(沒有價值的)。
- Christian Decker 從Rusty Russell 處“買” 的一張貓圖片。來源:Blockstream.com-
到2017 年1 月,第一個閃電網絡實現—— lnd —— 推出Alpha 版本。有了這個實現,閃電網絡就“正式” 地邁入了“Alpha 階段”:全世界的開發者,第一次收到邀請,去實驗這種新技術。而Lightning Labs 還在繼續測試和提升代碼。
這個Alpha 版本,反過來,吸引越來越多的開發者到lng 和其他閃電網絡實現上開發應用。這些“Lapps”從桌面端錢包到移動端錢包,再到小額支付的博客平台,博彩網站,到瀏覽器,無所不包—— 雖然大部分仍然是為比特幣的測試網設計的。
到了2017 年夏天,隔離見證終於激活,而閃電網絡在比特幣上的地基已經夯實。又過了三個月,Blockstream 宣佈在比特幣主網上發出了第一筆閃電網絡交易。 11 月,Lightning Labs 做了第一筆跨區塊鏈(從比特幣到萊特幣)的閃電網絡交易。 12 月,來自Blockstream、Lightning Labs 和ACINQ 的開發團隊宣布他們已經通過了互操作性測試。
而且,到了這一年的末尾,有些人開始在比特幣主網上使用alpha 的閃電網絡實現了—— 有時候甚至是違反開發者的建議的。越來越多的閃電通道打開。到了12 月,開發者Alex Bosworth 用閃電網絡通道向支付處理商Bitrefill 支付了自己的手機賬單:這是閃電網絡上最早一批把比特幣當錢來用的交易之一。
又過了一個月,Blockstream 開設了一個網上商店,讓人可以用比特幣來購買實體商品—— 雖然c-lightning 實現還只是beta 版本,網站上有清晰的風險提醒。 2018 年2 月,在閃電網絡仍處在alpha 階段時,比特幣世界的傳奇人物、以“比特幣買披薩” 趣事聞名世界的Lazlo Hanyecz 宣布自己使用閃電網絡買了—— 當然,又是——披薩!
- Lazlo Hanyecz 享用披薩。來源:-
Beta 版
經過多年的開發和(甚至更長時間的)思索之後,閃電網絡在幾週前到達了可能是最大的一個里程碑。
2018 年3 月中旬,Lightning Labs 的lnd 率先發布了beta 版的閃電網絡實現。他們同時還宣布獲得了250 萬美元的種子輪融資,投資人包括大名鼎鼎的Twitter CEO ack Dorsey。 Lightning Labs 認為,他們已經準備好在比特幣的主網上使用閃電網絡—— 雖然最主要還是提供給懂技術的人用的。
緊隨這份公告之後,ACINQ 在3 月28 日發布了一條推文,宣布eclair 已經推出vet 版本,因此也已經準備好在主網上使用了。這家創業公司還宣布,他們的Android 閃電錢包幾週後就將與大家見面。 (算起來恰好是本文出版的這週。)
Blockstream 的c-lightning 實現尚未發布beta 版,雖然他們的開發團隊告訴Bitcoin Megazine,他們也會緊隨其後。這家區塊鏈開發公司還在3 月份的最後一周一口氣發布了7 款新的Lapp(在此之前他們也一直在推出新品),彰顯了這家公司在閃電網絡前端的積累。
雖然在alpha 時代,人們就已經在使用閃電網絡軟件了,beta 版本進一步刺激了增長趨勢。在本文發表之時,已經有超過1000 個閃電網絡節點和5000 個閃電網絡通道,留存有超過10 btc(在本文撰寫之時總價值約7 萬美元)。 (編者註:截至2021 年8 月8 日,全世界已經有12044 個閃電網絡節點和58717 個通道,留存超過1500 btc,價值6000 萬美元。)每天都有數百個新節點加入,甚至萊特幣專用的閃電網絡也發展了,未來還可以與比特幣的閃電網絡交互。
- 在本文撰寫之時,閃電網絡的圖示。來源:http://lnmainnet.gaben.win/ -
即使我們已經有了這些進展,閃電網絡也還是處在非常初級的階段。大部分用戶都非常了解技術(通常就是開發者),使用場景也都是實驗性的。雖然beta 版軟件發布是一個很大的里程碑,網絡的開發和提升仍要繼續,還有許多事情等我們去做,路由、隱私 和其他風險領域,還有許多開放問題。
通常來說,只有進一步普及,才能告訴我們這些問題的答案。
作者註:在為本文做研究時,我開始意識到,閃電網絡的(史前)歷史比我已知的要豐富得多。把它們都塞到一篇文章裡,需要我略去許多細節,這對所有幫助實現這項技術的人、項目和概念都不公平。本文嘗試概括閃電網絡迄今的故事,但最好只把本文當成一個粗糙的總結—— 而不是一份詳盡的歷史和技術講解。感謝每一位提供信息和其它反饋的朋友。
(完)
(文內有許多超鏈接,可點擊左下”閱讀原文“ 從EthFans 網站上獲取)
原文鏈接:
https://bitcoinmagazine.com/technical/history-lightning-brainstorm-beta
作者: AARON VAN WIRDUM
翻譯:阿劍