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

以太坊爱好者 view 37985 2021-8-9 09:41
share to
Scan QR code with WeChat

几周以前,第一个闪电网络实现 lnd 已经正式推出 beta 版。第二个实现 eclair 在上周发布,第三个实现 c-lightning 也快要来了。因此,这个在比特币上实现便宜和即时支付的覆盖层网络,已被大部分其开发者认为可以安全地用在比特币主网上了:这是这项技术在经年开发之后的一个重大里程碑。

这个故事,说起来可就长了。

第一串火花

闪电网络在观念上的起源最早可以追溯到比特币本身。

闪电网络用到的第一个概念叫做 “支付通道”。而支付通道本质上就是两个比特币用户之间的比特币余额;而且只需要他们彼此知道就好,其他人既不需要知道,也不需要关心他们相互之间的关系。重要的是,他们彼此的余额无需任何链上的比特币交易就能更新;而且 A 的余额增加,就意味着 B 的余额减少同样的数量。

在他们完成交易,心满意足之后,他们只需在网络中广播一笔交易就可以结算他们的支付通道:这一笔交易会基于他们的通道余额,给双方分发应得的数额。对于他们双方来说,这也意味着通道的更新(“链下交易”)相对更便宜,因为不需要付矿工手续费,而且也更快,因为不需要区块链的确认。

这个观念,整体上可以说跟中本聪在 2009 年放出的比特币软件一样早。Bitcoin 0.1 就包含了一个代码草稿,是允许用户在交易被网络确认之前更新这笔交易的:

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

Bitcoin 0.1 包含的支付通道草稿

虽然这份代码很粗糙,中本聪后来在跟 bitcoinj 开发者私聊时 Mike Hearn 讲了更多支付通道如何工作的细节。

几年以后(2013 年),Hearn 在比特币开发邮件组中公开了中本聪对支付通道的解释:

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

中本聪对支付通道原理的解释,曝光自 Mike Hearn

第一个支付通道

虽然支付通道作为一个概念,可以说与比特币同样久远,中本聪的设计是不够安全的。更重要的是,支付通道中的一个用户可以跟矿工合起伙来让区块链确认一个旧的交易,从而获得比自己该得的数量更多的比特币(比如刚给对方支付完,又把旧的交易上链)。

这个问题的第一个解决方案出现在 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

在 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

一个更早的、建立免信任的支付通道网络的尝试,来自 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 项目在事实上的路线图。

如果人们原本对闪电网络的期待还不够高,这下就完全够了。

btcfans公众号

Scan QR code with WeChat

Disclaimer:

Previous: 速览支付巨头的加密货币征途:Visa、MasterCard、PayPal 与 Square Next: 如何使用Aave进行闪电贷

Related