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

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

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

第一串火花

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

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

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

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

Blockstream工程师用Python3.0重写闪电网络代码库以测试相关应用功能:据Blockstream中文社区消息,开发了闪电网络大部分协议的Blockstream工程师Rusty Russell,最近用Python3.0重写了测试闪电网络的代码库,该库可以用来测试闪电网络上应用程序的基本功能是否正常。[2020/7/20]

Bitcoin0.1包含的支付通道草稿

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

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

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

第一个支付通道

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

动态 | Bitfinex发推宣布现已上线闪电网络:Bitfinex刚发推宣布,Bitfinex正式上线闪电网络。闪电网络包含充当开放式支付通道的节点,用户可以通过该网络在Bitfinex上存入和提取比特币。[2019/12/3]

这个问题的第一个解决方案出现在2011年。Bitcointalk论坛用户“hashcoin”?构想了一种双层的支付通道hashcoin,需要用户交换部分签名的多签名事务,以及与这些多签名事务相互依赖的时间锁事务。如果一个参与者消失了了,另一方可以在等待一段时间后拿走通道中的所有资金。不过,这一设计的缺陷在于,这种支付通道是单向的。Alice可以给Bob支付任意次,但Bob没法用同一个通道给Alice支付。

另一个类似于hashcoin的想法在2013年早期浮出水面,而这一次它不再只是想想而已。在这一年的4月份,JeremySpilman在比特币开发邮件组中描述了一个支付通道的概念。他甚至写了一份概念验证代码。这个设计又由MikeHearn调整过,后来成为BitcoinCore软件贡献者、Blockstream?公司联合创始人和?ChaincodeLabs?开发者的MattCorallo在?2013中段把它从概念变成了?bitcoinj?上可以工作的代码。

动态 | 闪电网络节点数量达10014个:1ML.com数据显示,闪电网络节点数量呈持续上升趋势。目前,支撑网络的节点数量达到10014个,在过去的30天中上涨了3.11%,而通道数量为36217,在过去的30天中下降了0.9%。闪电网络承载能力目前为828.66个BTC,约合662.67万美元。[2019/9/27]

又过了一年,AlexAkselrod首次提出了双向的支付通道。Alice可以给Bob支付任意多次,而Bob也可以使用递减的时间锁,在同一个通道中给Alice支付——只不过次数是有限的。不过,不像单向的支付通道,这个解决方案从来没被代码实现过。

第一个支付网络概念

在第一个支付通道的概念出现的同一时间,其他人——包括BitcoinCore开发者?PeterTodd?和?GavinAndresen?——也在思考离链的支付网络。如果Alice可以通过链下的交易给Bob支付,而Bob可以通过一笔链下的交易给Carol支付,那么Alice也应该能通过Bob给Carol支付、无需让交易上链才对。

CornéPlooy也一直在研究比特币的支付层,根源于他在?2011年提出的一个初步想法。

动态 | 本周比特币闪电网络容量增长近300%:据bitconist报道,比特币闪电网络(LN)的节点突然涌入,容量增加到新的历史最高点,正处理超过200万美元的BTC。1ML.com的数据显示,过去一周整体容量增长近300%至438 BTC,通道数量达到1.2万多个。[2018/11/23]

?Plooy的支付层层的一个早期图示,后来成了闪电网络的前身AmikoPay

在BitcoinCore的开发者和未来Blockstream公司的CTO?GregoryMaxwell,以及Ripple创始人?RyanFugger的建议之下,这个想法?经过?了?多年?的发展,变成了比特币和原初的Ripple基础的集合体,并产生出了一个Plooy叫做“AmikoPay”的系统。AmikoPay更早的草稿没有用到支付通道的,因此需要为这个系统注入信任:如果某个用户拒绝与另一个用户结算余额,后者没有任何办法。

一个使用了支付通道的早期支付网络构想由数学家、后来成为?BitcoinemBassyTLV?合伙人的MeniRosenfeld在2012年提出。在Bitcointalk论坛上,Rosenfeld描述了一个由支付处理商替代Bob,服务于Alice和Carol的例子。这个支付处理商,反过来,也跟其他的支付处理商开设了支付通道,所以整个支付通道网络是一个车轮模型。?

动态 | 闪电网络容量两日内增加10BTC:据btcmanager报道,统计数据显示,闪电网络的容量在7月8日仅为40 BTC,而7月10日则为51.72 BTC(超过3.3万美元)。闪电网络容量从30 BTC增至40 BTC花费了一周时间,却仅用两天便从40 BTC增加到超过50 BTC。闪电网络中的节点数量为2719,其间创建了8951个通道用于传输比特币。大约2000个节点拥有活动的通道,过去24小时内打开了182个新的通道。[2018/7/11]

这种解决方案在过去几年中出现了很多次。例如,BitcoinCore的贡献者PeterTodd就曾在2014年在比特币开发者邮件组中提出过这种概念。与此同时,支付处理商?BitPay?也在2015年初公开了一份有关类似的通道内支付方案的白皮书。而一个相似的解决方案也由瑞典的创业公司?Strawpay?实现了出来,叫做?Stroem,就在几乎同一时间——但这些进展都没有造成很大影响。

现已倒闭的Strawpay小额支付公司的Logo

一个更早的、建立免信任的支付通道网络的尝试,来自AlexAkselrod。他在2013年提出了一个草案,在2014年这份草案转化为一份概念验证代码。Akselrod的解决方案花了很大力气,在理论上解决了这个问题。但在实践中,问题依旧。比如说,如果一笔支付在路由过程中失败了,用户没有任何追索权,只有等支付通道的时间锁解除后资金释放,而这可能要经历几个月的时间。

与此同时,到了2015年,Plooy的AmikoPay已经进化到了可以免信任工作的地步。不过,他的设计需要对比特币协议进行相对深远的更改,以至于需要回滚特定类型的交易。虽然在技术上是可以做到的,但这样对比特币的更改会不会被接受,并不那么显然。

这一年的年底,来自苏黎世联邦理工学院的研究员、ChristianDecker博士和RogerWattenhofer在他们的白皮书“AFastandScalablePaymentNetworkwithBitcoinDuplexMicroaymentChannels”中提出了另一种覆盖层网络设计。他们的解决方案重度依赖于时间锁来作为通道有效性的“倒计时装置”,以及一种叫做“无效树”的密码学技巧来作废陈旧的通道交易。

Akselrod的解决方案、AmikoPay后来的草案,还有Duplex小额支付通道都在某些方面类似于闪电网络,也都可以在不同的假设下正常工作。如果闪电网络没有发明,这里的任何一个方案都有可能成为比特币扩展层的基础。

但是,历史没有如果,闪电网络横空出世。

闪电网络

支付通道和网络设计演化了多年之后,终于在2015年初集齐了所有的拼图。

智能合约交易平台?Mirror?的CTOThaddeus“Tadge”Dryja和JosephPoon一起撰写了一份名为“TheBitcoinLightningNetwork:ScalableOff-ChainInstantPayments”的白皮书,在2015年的2月首次出版。

事实证明,它扭转了乾坤。

闪电网络白皮书提出了多种解决方案,来实现一个完全免信任的支付通道网络:任何人,只要想欺诈,就要冒着失去自己在通道中所有余额的风险;而且传递支付交易的中介也别想偷走一分钱。此外,这个解决方案只需对比特币协议做相对较少的变更,并且承诺比已经有的其它方案更灵活、对用户更友好。

这个白皮书所描述的关键创新是“Poon-Dryja通道”。跟早期的其它支付通道设计一样,Poon-Dryja通道也依赖于参与者交换部分签名且未广播至全网的交易。但与前辈们不同的是,这种新的通道还需要额外的一步:双方需要不断交换秘密数值;这一设计使得通道可以在任意“方向”上更新。Alixe可以给Bob支付任意次,而Bob也可以在同一个通道中给Alice支付任意次。

此外,闪电网络还利用了?哈希时间锁合约。这个概念一般认为是TierNolan?提出的,设计初衷是用于跨区块链交易;举个例子,用于免信任地互换比特币和莱特币。在闪电网络中,这种工具用于把多个支付通道串联起来。

Poon和Dryja在2015年2月的旧金山比特币开发者研讨会上首次展示了他们的构想。

在这之后的几个月,整个2015年的春天和夏天,比特币的扩展问题和区块大小上限的分歧演变成了公开的争执。在这种危机气氛中,人们在2015年底召开了连续两场大会:9月份召开了?ScalingBitcoinMontreal,10月份是?ScalingBitcoinHongKong。在蒙特利尔,Poon和Dryja?再次登台演讲,并且?Poon?和?Dryja?都在香港作了第二次更深入的演讲。

就在香港的大会之后,GregoryMaxwell在比特币开发者邮件组中提出了一份扩展方案路线图。这张路线图突出地包括了闪电网络。它获得了比特币技术社区大部分人的支持,并且变成了BitcoinCore项目在事实上的路线图。

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

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金宝趣谈

[0:15ms0-6:161ms