实现
闪电网络的白皮书是一份长而复杂的文件,包含许多技术含量很高的概念;在2015年,很少有人有时间和能力读完并且理解这份文件。但Linux系统内核长期开发者RustyRussell学习了这份白皮书后,大家的基础认识提高了一大截。在2015年初的?系?列?博?客?中,Russell为更广泛的读者“翻译”了这份白皮书。
然后,在2015年3月,Russell接受Blockstream工程的聘请,开发一个C语言的闪电网络实现:c-lightning。事实证明,这是迈向实现的关键一步。一个几个月前才刚刚提出的概念,现在就有了一个世界顶尖的工程师来实现它。后来,Blockstream的ChristianDecker也加入了Russell;其他人也为这个开源项目做了贡献。
在Russell开始开发c-lightning不久之后,Blocksteam就不是唯一一个入局实现闪电网络的公司了。在2015年夏天,ACINQ这家更小的比特币科技公司决定也尝试一下这项富有前景的技术。这家位于巴黎的创业公司后来宣布他们开发者用Scala编程语言开发出了自己的闪电网络协议,叫做eclair。
来自ACINQ的eclair发行公告
又过了几个月,第三个实现开始起步。在2016年1月,闪电网络白皮书的作者Poon和Dryja,也跟ElizabethStark和Olaoluwa“Laolu”Osuntokun一道,成立了一个全新的公司来开发闪电网络:LightningLabs。LightningLabs带头在lnd上开闸,这是一个用谷歌公司推出的Go编程语言实现的闪电网络——他们在公司成立之前就开始开发了。
在成立公司大概一年后,在2016年底,Dryja离开了LightningLabs,转而加入了MITMediaLab的DigitalCurrencyInitiative,这个机构也雇用了BitcoinCore的顶尖开发者WladimirvanderLaan和多位BitcoinCore的贡献者。在MIT,Dryja继续开发他在LightningLabs起步的闪电网络实现,重命名为lit。现在lnd和lit都可用。Lit与lnd和其它实现有差异的点在于它把钱包和节点封装成了一个整体;现在,它还支持同时使用多种币。
此外,区块链公司Bitfury也fork了lnd实现、做了另一个版本。这个版本的特殊之处在于,它在设计上做了牺牲,使得无需修复比特币网络的熔融性——后面我们再详细说明。Bitfury也在交易路由领域作了贡献,最著名的成果是“Flare”协议,使交易变得无法跟踪;就像同一块金属可以熔成不同的形状一样)。
再后来,在2016年,主要的钱包服务商Blockchain宣布他们开发出了一个简化版的闪电网络,叫做“thunder”。这个实现对标准的闪电网络实现做了比较大的牺牲,最明显的是它需要你信任网络中的对手方。也因为这种牺牲,它得以在2016年春天推出alpha版本,比其他开发团队要早得多。
在ScalingBitcoinMilan大会之后,第三次会议在2016年底举办,大部分闪电网络的贡献者都齐聚一堂。在这里,他们讨论了如何让所有的不同实现能相互操作,从而产生了一个叫做“BOLT”的闪电网络协议规范”的缩写)。闪电网络白皮书是理论上的第一,BOLT才是我们今天所知的、实际上的闪电网络的基础。
协议变更
在闪电网络白皮书首次面世时,它的想法跟当时的比特币协议是不兼容的——至少,是不安全的。要像白皮书里写的那样使用闪电网络,比特币需要多方面的协议变更。
第一个变更是新类型的时间锁,它可以让支付网络抵抗比特币的熔融性漏洞。不过,这个问题在闪电网络白皮书出版之前就已经在解决中了,并且在2015年得到了最终的解决:PeterTodd所提议和设计的一种新型时间锁在比特币协议中实现了。
然后,BitcoinCore开发者意识到,如果有相对时间锁,闪电网络可以运行得更好。因为相对时间锁可以让用户指定某些比特币在某笔交易上链后再锁定一段时间。概念上,在闪电网络中,用户可以让支付通道永远敞开;但CLTV时间锁让他们不得不定期关闭通道。一个软分叉升级实现了相对时间锁,叫做“CheckSequenceVerify”。这种脚本是由BitcoinCore的贡献者BtcDrak、EricLombrozo和MarkFriedenbach设计的,并且在2016年夏天的比特币网络上激活了。
但闪电网络所要求的最大的协议变更是为所有的比特币交易修复熔融性漏洞。
在闪电网络白皮书出版之时,熔融性已经被认为是个很大的问题。虽然那时候已经有一个软分叉草案已经在讨论中了,但开发者并不确定这有用,而且认为可能需要一次硬分叉才行。然后,在2015年末,BitcoinCore贡献者们发现,Blockstream公司ElementsProject解决熔融性的办法“隔离?见证”可以作为向后兼容的软分叉部署在比特币上。
漫长的挣扎过后,隔离见证软分叉最终于2017年夏天在比特币区块链上激活,为闪电网络登陆比特币铺平了道路。
Alpha版本
即使在隔离见证还未部署在比特币协议上的时候,闪电网络的开发也进展很大。
这是从测试网上开始的。测试网是比特币网络的副本,专门用于测试。闪电网络最开始在一个特殊版本的测试网上个起步:代号为“SegNet4”的测试网,启动于2016年5月。
SegNet4测试网部署不到半年,在2016年10月,Blockstream开发团队就已经把他们的c-lightning原型提高到可用的程度。后来这被称为“闪电网络第一击”:Decker通过闪电网络的一个早期版本,从Russell手上“买”了一只猫,用的是测试网的比特币。
ChristianDecker从RustyRussell处“买”的一张猫图片
到2017年1月,第一个闪电网络实现——lnd——?推出Alpha版本。有了这个实现,闪电网络就“正式”地迈入了“Alpha阶段”:全世界的开发者,第一次收到邀请,去实验这种新技术。而LightningLabs还在继续测试和提升代码。
这个Alpha版本,反过来,吸引越来越多的开发者到lng和其他闪电网络实现上开发应用。这些“Lapps”从桌面端钱包到移动端钱包,再到小额支付的博客平台,网站,到浏览器,无所不包——虽然大部分仍然是为比特币的测试网设计的。
到了2017年夏天,隔离见证终于激活,而闪电网络在比特币上的地基已经夯实。又过了三个月,Blockstream宣布在比特币主网上发出了第一笔闪电网络交易。11月,LightningLabs做了第一笔跨区块链的闪电网络交易。12月,来自Blockstream、LightningLabs和ACINQ的开发团队宣布他们已经通过了互操作性测试。
而且,到了这一年的末尾,有些人开始在比特币主网上使用alpha的闪电网络实现了——有时候甚至是违反开发者的建议的。越来越多的闪电通道打开。到了12月,开发者AlexBosworth用闪电网络通道向支付处理商Bitrefill支付了自己的手机账单:这是闪电网络上最早一批把比特币当钱来用的交易之一。
又过了一个月,Blockstream开设了一个网上商店,让人可以用比特币来购买实体商品——虽然c-lightning实现还只是beta版本,网站上有清晰的风险提醒。2018年2月,在闪电网络仍处在alpha阶段时,比特币世界的传奇人物、以“比特币买披萨”趣事闻名世界的LazloHanyecz宣布自己使用闪电网络买了——当然,又是——披萨!
LazloHanyecz享用披萨。
Beta版
经过多年的开发和思索之后,闪电网络在几周前到达了可能是最大的一个里程碑。
2018年3月中旬,LightningLabs的lnd率先发布了beta版的闪电网络实现。他们同时还宣布获得了250万美元的种子轮融资,投资人包括大名鼎鼎的TwitterCEOackDorsey。LightningLabs认为,他们已经准备好在比特币的主网上使用闪电网络——虽然最主要还是提供给懂技术的人用的。
紧随这份公告之后,ACINQ在3月28日发布了一条推文,宣布eclair已经推出vet版本,因此也已经准备好在主网上使用了。这家创业公司还宣布,他们的Android闪电钱包几周后就将与大家见面。
Blockstream的c-lightning实现尚未发布beta版,虽然他们的开发团队告诉BitcoinMegazine,他们也会紧随其后。这家区块链开发公司还在3月份的最后一周一口气发布了7款新的Lapp,彰显了这家公司在闪电网络前端的积累。
虽然在alpha时代,人们就已经在使用闪电网络软件了,beta版本进一步刺激了增长趋势。在本文发表之时,已经有超过1000个闪电网络节点和5000个闪电网络通道,留存有超过10btc。每天都有数百个新节点加入,甚至莱特币专用的闪电网络也发展了,未来还可以与比特币的闪电网络交互。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。