来源:The History of Lightning: From Brainstorm to Beta
原文写于 2018年4月4号,介绍了整个闪电网络的历史,其最初的想法甚至可以追溯到2009年bitcoin 0.1 版的代码,以及中本聪当年支付通道的邮件解释,后来经过各路大神对其不断讨论与扩展,终于开花结果了。
闪电网络历史:从头脑风暴到测试版(一)
闪电网络历史:从头脑风暴到测试版(二)
闪电网络历史:从头脑风暴到测试版(三)
闪电网络
经过支付渠道和网络设计多年的演变,所有的谜团终于在2015年初解开。智能合约交易平台 Mirror 的CTO —— Thaddeus Tadge Dryja和Joseph Poon在当年2月首次发表了题为《比特币闪电网络:可伸缩的离线即时支付》的白皮书。
(注:Joseph Poon的中文名是潘志豪)
事实证明,这件事改变了游戏规则。
这份闪电网络白皮书, 提出几种解决方案来实现在完全无需信任的情况下实现支付通道网络:没有一个参与者可以在不损失他们投入的所有资金的情况下作弊,而中间人的转发交易将无法窃取任何资金。此外,该解决方案要求对比特币协议进行相对较少的更改,并承诺比目前提出的替代方案更加灵活,对用户更友好。
白皮书中描述的关键创新是“Poon-Dryja通道”。与早期的支付通道设计一样,Poon-Dryja通道在部分签名和没有广播的交易进行进行交换。但与以前的支付通道相比,这些新通道使用了一个额外的步骤,涉及密码交换,这使得支付通道可以在任何一个“方向”更新。Alice可以向Bob支付任意次数,Bob也可以在同一通道内支付给Alice相同的次数。
此外,闪电网络利用 哈希时间锁合约(HTLC)。这个概念通常是认为Tier Nolan提出的,最初是为跨区块链交易设计的;例如在无需信任的情况下交换比特币和莱特币。在闪电网络中,这个解决方案被用来连接跨支付通道的支付。
2015年2月,Poon和Dryja在 San Francisco Bitcoin Devs Seminar上首次公开提出了他们的想法。在那之后的几个月,也就是2015年春夏,比特币的扩容问题和区块大小之争演变成了一场公开争执。在这种气氛下,在2015年后期组织了两次会议:9月份的蒙特利尔扩容会议,12月份的香港扩容会议。在蒙特利尔,Poon和Dryja再次提出了他们的想法,然后Poon和Dryja也在香港扩容会议进行了更深入的介绍。
在第二届香港扩容会议之后,Gregory Maxwell在比特币开发邮件列表中提出了一个 比特币扩容路线图。这份路线图明确地包括了闪电网络。它获得了大多数比特币技术社区的支持,成为 Bitcoin Core 项目的路线图。
闪电网络的实现
闪电网络白皮书是一份冗长而复杂的论文,涵盖了大量的技术性概念;在2015年,很少有人有精力和能力去通读和理解它。当长期从事Linux内核开发的 Rusty Russell 了解到白皮书之后,整个社区对白皮书的整体理解有了显著的提高。在2015年初发表的一系列博客文章中,Russell “翻译”了白皮书,以吸引更广泛的读者(但仍相当技术性)。
2015年5月,Russell 加入了Blockstream,用C语言开发闪电网络实现—— c-lightning。事实证明,这一步至关重要。几个月前才提出的一个概念正在被一个世界级的开发人员实现。后来,Blockstream的Christian Decke加入了Russell的团队,包括Corné Plooy在内的其他开发者,也将在未来几年为这个开源项目做出贡献。
在Russell开始研究c-lightning后,Blockstream就不再是唯一一个实现闪电网络的公司。到2015年夏天,ACINQ 也决定尝试这一很有前景的技术。该公司原本计划开发基于智能卡的硬件钱包。这家位于巴黎的初创公司后来宣布,它已经用Scala语言开发了自己的闪电网络协议实现,名为eclair。
在接下来的几个月里,第三个实现正在进行中。
2016年1月,闪电网络白皮书的作者Poon和Dryja,以及Elizabeth Stark和Olaoluwa “Laolu” Osuntokun,成立了一个新公司来开发闪电网络:Lightning Labs。Lightning Labs将率先开发 Lnd,Lnd用谷歌的Golang语言进行开发,他们在公司成立之前就在开发lnd了。
2016年底,Dryja离开了Lightning Labs ,加入了 MIT Media Lab’s Digital Currency Initiative,同一个组织雇佣了Bitcoin Core的首席开发者 Wladimir J. van der Laan和其他几个Bitcoin Core贡献者。 在MIT,Dryja继续致力于闪电网络的实现,并将其改名为lit。Lit与lnd和其他实现的不同之处在于,它是一个钱包和一个封装在其中的节点;现在,它还通过一个配置选项同时支持多个币种。
此外,以矿池和挖矿硬件而闻名的Bitfury,在lnd的基础上做了一个新分支。这个分支的独特之处在于,它在设计上进行了权衡,不需要对比特币网络的交易延展性进行修复。Bitfury还在交易路由领域做出了贡献,其中最著名的是一种名为“Flare”的协议。
在2016年,钱包提供商Blockchain宣布,它开发了一个简化版的闪电网络,名为thunder。与一般的闪电网络实现相比,thunder做出了很大的权衡,最明显的差别是它需要信任网络上的另一方。通过这种权衡,早在2016年春天,它就发布了alpha版本,比其他任何开发团队都要早 (虽然thunder也可能在未来与闪电网络兼容,但开发目前似乎已经停滞)。
2016年底,在米兰举行的第三次扩容大会之后,大多数的闪电网络贡献者聚在一起举行了第一次闪电网络峰会(Lightning Summit)。他们讨论了如何使所有不同的闪电网络实现都可以互操作,形成一个名为“BOLT (Basis of Lightning Technology)”的闪电网络协议规范。
协议变化
闪电网络白皮书首次发表时,所描述的想法实际上与比特币协议并不兼容——至少不安全。要启用闪电网络,比特币需要修改几个协议。
第一个是新的 timelocks,可以让支付通道抵御比特币的延展性问题。
在闪电网络白皮书发表之前,这个问题就已经在被解决的过程中了。
2015年,Peter Todd 设计并提出了一种新的 timelock在比特币协议中的实现:Check Lock Time Verify (CLTV)。
后来,Bitcoin Core的开发者意识到,有了相对的timelocks,闪电网络的功能会更好。这些允许用户在确认另一笔交易后,将比特币锁定在特定时间点上。在闪电网络的背景下,用户可以无限期地打开他们的支付通道,而CLTV timelocks要求他们定期关闭通道。Bitcoin Core的贡献者设计了一个实现相对timelocks的软分叉升级,称为Check Sequence Verify(CSV),并在2016年夏天在比特币网络上激活。
但闪电网络最需要的协议修改 (至少用户体验良好),是对比特币交易延展性的修复。
在《闪电网络白皮书》发表时,交易延展性被认为是一个很大的挑战。 虽然当时有一个软分叉草案正在解决这个问题,但人们并不确定它能工作,并认为这可能需要一个硬分叉来解决。然后,到2015年底,Bitcoin Core的贡献者意识到隔离见证(SegWit)作为Blockstream的Elements Project项目的一部分,可以作为一个向后兼容的软分叉部署在比特币上。
经过长时间的努力,隔离见证软分叉终于在2017年夏天激活,为闪电网络的应用铺平了道路。
更多关于SegWit的历史,请看 The Long Road to SegWit: How Bitcoin’s Biggest Protocol Upgrade Became Reality。(注:这就是另一部血泪史了,有血有泪有...)
参考: