(編者註:原文發表於2018 年4 月。)
幾週以前,第一個閃電網絡實現 lnd 已經正式推出beta 版。第二個實現 eclair 在上週發布,第三個實現 c-lightning 也快要來了。因此,這個在比特幣上實現便宜和即時支付的覆蓋層網絡,已被大部分其開發者認為可以安全地用在比特幣主網上了:這是這項技術在經年開發之後的一個重大里程碑。
這個故事,說起來可就長了。
第一串火花
閃電網絡在觀念上的起源最早可以追溯到比特幣本身。
閃電網絡用到的第一個概念叫做“支付通道”。而支付通道本質上就是兩個比特幣用戶之間的比特幣餘額;而且只需要他們彼此知道就好,其他人既不需要知道,也不需要關心他們相互之間的關係。重要的是,他們彼此的餘額無需任何鏈上的比特幣交易就能更新;而且A 的餘額增加,就意味著B 的餘額減少同樣的數量。
在他們完成交易,心滿意足之後,他們只需在網絡中廣播一筆交易就可以結算他們的支付通道:這一筆交易會基於他們的通道餘額,給雙方分發應得的數額。對於他們雙方來說,這也意味著通道的更新(“鏈下交易”)相對更便宜,因為不需要付礦工手續費,而且也更快,因為不需要區塊鏈的確認。
這個觀念,整體上可以說跟中本聰在2009 年放出的比特幣軟件一樣早。 Bitcoin 0.1 就包含了一個代碼草稿,是允許用戶在交易被網絡確認之前更新這筆交易的:
- Bitcoin 0.1 包含的支付通道草稿。來源:GitHub -
雖然這份代碼很粗糙,中本聰後來在跟 bitcoinj 開發者私聊時Mike Hearn 講了更多支付通道如何工作的細節。
幾年以後(2013 年),Hearn 在比特幣開發郵件組中公開了中本聰對支付通道的解釋:
- 中本聰對支付通道原理的解釋,曝光自Mike Hearn。來源:Bitcoin-dev mailing list -
第一個支付通道
雖然支付通道作為一個概念,可以說與比特幣同樣久遠,中本聰的設計是不夠安全的。更重要的是,支付通道中的一個用戶可以跟礦工合起夥來讓區塊鏈確認一個舊的交易,從而獲得比自己該得的數量更多的比特幣(比如剛給對方支付完,又把舊的交易上鍊)。
這個問題的第一個解決方案出現在2011 年(在中本聰離開比特幣項目之後)。 Bitcointalk 論壇用戶“hashcoin” 構想了一種雙層的支付通道hashcoin,需要用戶交換部分簽名的多簽名事務,以及與這些多簽名事務相互依賴的時間鎖事務。如果一個參與者消失了了,另一方可以在等待一段時間後拿走通道中的所有資金。不過,這一設計的缺陷在於,這種支付通道是單向的。 Alice 可以給Bob 支付任意次,但Bob 沒法用同一個通道給Alice 支付。
另一個類似於hashcoin 的想法在2013 年早期浮出水面,而這一次它不再只是想想而已。在這一年的4 月份,Jeremy Spilman 在比特幣開發郵件組中描述了一個支付通道的概念。他甚至寫了一份概念驗證代碼。這個設計又由Mike Hearn 調整過,後來成為Bitcoin Core 軟件貢獻者、Blockstream 公司聯合創始人和 Chaincode Labs 開發者的Matt Corallo 在 2013 中段把它從概念變成了 bitcoinj 上可以工作的代碼。
又過了一年,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(和其他人)的建議之下,這個想法經過了多年的發展,變成了比特幣和原初的Ripple 基礎的集合體,並產生出了一個Plooy 叫做“Amiko Pay” 的系統。 Amiko Pay 更早的草稿沒有用到支付通道的,因此需要為這個系統注入信任:如果某個用戶拒絕與另一個用戶結算餘額,後者沒有任何辦法。
一個使用了支付通道的早期支付網絡構想由數學家、後來成為 Bitcoin emBassy TLV 合夥人的Meni Rosenfeld 在2012 年提出。在Bitcointalk 論壇上,Rosenfeld 描述了一個(按照上面的例子) 由支付處理商替代Bob ,服務於Alice 和Carol 的例子。這個支付處理商,反過來,也跟其他的支付處理商開設了支付通道,所以整個支付通道網絡是一個車輪模型。
這種解決方案在過去幾年中出現了很多次。例如,Bitcoin Core 的貢獻者Peter Todd 就曾在2014 年在比特幣開發者郵件組中提出過這種概念。與此同時,支付處理商 BitPay 也在2015 年初公開了一份有關類似的通道內支付方案(“Impulse”)的白皮書。而一個相似的解決方案也由瑞典的創業公司 Strawpay 實現了出來,叫做 Stroem(或者Ström),就在幾乎同一時間—— 但這些進展都沒有造成很大影響。
- 現已倒閉的Strawpay 小額支付公司的Logo。來源:The Internet Archive -
一個更早的、建立免信任的支付通道網絡的嘗試,來自Alex Akselrod。他在2013 年提出了一個草案,在2014 年這份草案轉化為一份概念驗證代碼。 Akselrod 的解決方案花了很大力氣,在理論上解決了這個問題。但在實踐中,問題依舊。比如說,如果一筆支付在路由過程中失敗了,用戶沒有任何追索權,只有等支付通道的時間鎖解除後資金釋放,而這可能要經歷幾個月的時間。
與此同時,到了2015 年,Plooy 的Amiko Pay 已經進化到了可以免信任工作的地步。不過,他的設計需要對比特幣協議進行相對深遠的更改,以至於需要回滾特定類型的交易。雖然在技術上是可以做到的,但這樣對比特幣的更改會不會被接受,並不那麼顯然。
這一年的年底,來自蘇黎世聯邦理工學院(ETH Zurich)的研究員、Christian Decker 博士(現已入職Blockstream)和Roger Wattenhofer 在他們的白皮書“A Fast and Scalable Payment Network with Bitcoin Duplex Microayment Channels” 中提出了另一種覆蓋層網絡設計。他們的解決方案重度依賴於時間鎖來作為通道有效性的“倒計時裝置”,以及一種叫做“無效樹” 的密碼學技巧來作廢陳舊的通道交易。
Akselrod 的解決方案、Amiko Pay 後來的草案,還有Duplex 小額支付通道(DMC)都在某些方麵類似於閃電網絡,也都可以在不同的假設(取捨)下正常工作。如果閃電網絡沒有發明,這裡的任何一個方案都有可能成為比特幣擴展層的基礎。
但是,歷史沒有如果,閃電網絡橫空出世。
閃電網絡
支付通道和網絡設計演化了多年之後,終於在2015 年初集齊了所有的拼圖。
智能合約交易平台 Mirror 的CTO Thaddeus “Tadge” Dryja 和Joseph Poon 一起撰寫了一份名為“The Bitcoin Lightning Network: Scalable Off-Chain Instant Payments” 的白皮書,在2015 年的2 月首次出版。
事實證明,它扭轉了乾坤。
閃電網絡白皮書提出了多種解決方案,來實現一個完全免信任的支付通道網絡:任何人,只要想欺詐,就要冒著失去自己在通道中所有餘額的風險;而且傳遞支付交易的中介也別想偷走一分錢。此外,這個解決方案只需對比特幣協議做相對較少的變更,並且承諾比已經有的其它方案更靈活、對用戶更友好。
這個白皮書所描述的關鍵創新是“Poon-Dryja 通道”。跟早期的其它支付通道設計一樣,Poon-Dryja 通道也依賴於參與者交換部分簽名且未廣播至全網的交易。但與前輩們不同的是,這種新的通道還需要額外的一步:雙方需要不斷交換秘密數值;這一設計使得通道可以在任意“方向” 上更新。 Alixe 可以給Bob 支付任意次,而Bob 也可以在同一個通道中給Alice 支付任意次。
此外,閃電網絡還利用了 哈希時間鎖合約(HTLC)。這個概念一般認為是Tier Nolan 提出的,設計初衷是用於跨區塊鏈交易;舉個例子,用於免信任地互換比特幣和萊特幣。在閃電網絡中,這種工具用於把多個支付通道串聯起來。
Poon 和Dryja 在2015 年2 月的舊金山比特幣開發者研討會(Bitcoin Devs Seminar)上首次展示了他們的構想。
在這之後的幾個月,整個2015 年的春天和夏天,比特幣的擴展問題和區塊大小上限的分歧演變成了公開的爭執。在這種危機氣氛中,人們在2015 年底召開了連續兩場大會:9 月份召開了 Scaling Bitcoin Montreal,10 月份是 Scaling Bitcoin Hong Kong。在蒙特利爾,Poon 和Dryja 再次登台演講,並且 Poon 和 Dryja 都在香港作了第二次更深入的演講。
就在香港的大會之後,Gregory Maxwell 在比特幣開發者郵件組中提出了一份擴展方案路線圖。這張路線圖突出地包括了閃電網絡。它獲得了比特幣技術社區大部分人的支持,並且變成了Bitcoin Core 項目在事實上的路線圖。
如果人們原本對閃電網絡的期待還不夠高,這下就完全夠了。
(未完)
(文內有許多超鏈接,可點擊左下”閱讀原文“ 從EthFans 網站上獲取)
原文鏈接:
https://bitcoinmagazine.com/technical/history-lightning-brainstorm-beta
作者: AARON VAN WIRDUM