深圳市龙华区振华时代广场10整层
18165737729

闪电网络的历史:从头脑风暴到测试版本(下)

实现

闪电网络的白皮书是一份长而复杂的文件,包含许多技术含量很高的概念;在 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 发行公告

又过了几个月,第三个实现开始起步。在 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 处 “买” 的一张猫图片

到 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 万美元。)每天都有数百个新节点加入,甚至莱特币专用的闪电网络也发展了,未来还可以与比特币的闪电网络交互。