实现
闪电网络的白皮书是一份长而复杂的文件,包含许多技术含量很高的概念;在 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。
闪电网络节点数量已达31939个:金色财经报道,据1ML.com数据,目前,支撑网络的节点数量达到31939个,相较30天前数据,环比上涨4.88%;通道数量为83787,相较30天前数据,环比上涨3.2%;闪电网络承载能力目前为3323.25BTC,约合1.62亿美元。[2021/12/23 7:59:44]
来自 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 和其它实现有差异的点在于它把钱包和节点封装成了一个整体;现在,它还支持同时使用多种币。
比特币闪电网络总容量突破1亿美元:据Bitcoinvisuals数据显示,目前比特币闪电网络总容量已突破2,220.56 BTC,按照美元价值计算超过1亿美元,创下历史新高,本文撰写时为101,316,77美元,推特创始人Jack Dorsey点赞了这一消息。8月10日,闪电网络发布了v0.10.1版本,添加了包括兼容Taproot地址在内的多项新功能。[2021/8/11 1:48:04]
此外,区块链公司 Bitfury(因其矿池服务和挖矿硬件而知名)也 fork 了 lnd 实现、做了另一个版本。这个版本的特殊之处在于,它在设计上做了牺牲,使得无需修复比特币网络的熔融性(malleability)—— 后面我们再详细说明。Bitfury 也在交易路由领域作了贡献,最著名的成果是 “Flare” 协议(只不过现在 Bitfury 版本的 lnd 开发似乎已经停滞下来了)(译者注:“熔融性” 的例子是,本质上是同一个签名的交易,可能会产生完全不同的哈希值(交易 ID),使交易变得无法跟踪;就像同一块金属可以熔成不同的形状一样)。
再后来,在 2016 年,主要的钱包服务商 Blockchain 宣布他们开发出了一个简化版的闪电网络,叫做 “thunder”。这个实现对标准的闪电网络实现做了比较大的牺牲,最明显的是它需要你信任网络中的对手方。也因为这种牺牲,它得以在 2016 年春天推出 alpha 版本,比其他开发团队要早得多。(虽然 thunder 也可能兼容闪电网络,但这一实现的开发似乎也已经停滞了。)
闪电网络节点数量已达19366个:金色财经报道,据1ML.com数据,目前,支撑网络的节点数量达到19366个,相较30天前数据,环比上涨5.6%;通道数量为42152,相较30天前数据,环比上涨4.2%;闪电网络承载能力目前为1204.93BTC,约合5926万美元。[2021/4/23 20:52:59]
在 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 年夏天的比特币网络上激活了。
CoinCorner增加对比特币闪电网络的支持:金色财经报道,英国加密交易所CoinCorner增加了对比特币闪电网络的支持。其用户现在可以通过闪电网络存入和提取比特币。[2021/1/7 16:35:56]
但闪电网络(至少,如果想要用一个平顺的用户体验的话)所要求的最大的协议变更是为所有的比特币交易修复熔融性漏洞。
在闪电网络白皮书出版之时,熔融性已经被认为是个很大的问题。虽然那时候已经有一个软分叉草案已经在讨论中了,但开发者并不确定这有用,而且认为可能需要一次硬分叉才行。然后,在 2015 年末,Bitcoin Core 贡献者们发现,Blockstream 公司 Elements Project 解决熔融性的办法 “隔离 见证”(SegWit)可以作为向后兼容的软分叉部署在比特币上。
漫长的挣扎过后,隔离见证软分叉最终于 2017 年夏天在比特币区块链上激活,为闪电网络登陆比特币铺平了道路。
(要了解隔离见证的历史,见“The Long Road to SegWit: How Bitcoin’s Biggest Protocol Upgrade Became Reality”)
即使在隔离见证还未部署在比特币协议上(也尚不清楚到底会不会部署)的时候,闪电网络的开发也进展很大。
这是从测试网上开始的。测试网是比特币网络的副本,专门用于测试。闪电网络最开始在一个特殊版本的测试网上个起步:代号为“SegNet 4” 的测试网(它是第四个 SegWit 的测试网),启动于 2016 年 5 月。
动态 | 比特币侧链Liquid即将整合闪电网络 已发布实验性代码:比特币技术开发公司 Blockstream 宣布即将整合旗下比特币侧链 Liquid 和比特币闪电网络实现方案 c-lightning,并发布早期实验性代码。在规划中,Blockstream 还将在 Liquid 的闪电网络上支持其他资产的转账和闪电网络中的匿名转账。Liquid 是一条由 Blockstream 开发的比特币侧链,其设计目标是扩展比特币主链的限制,特点包括资产发行,更快的确认时间和匿名转账。[2019/8/1]
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 享用披萨。
经过多年的开发和(甚至更长时间的)思索之后,闪电网络在几周前到达了可能是最大的一个里程碑。
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 万美元。)每天都有数百个新节点加入,甚至莱特币专用的闪电网络也发展了,未来还可以与比特币的闪电网络交互。
我在思考Curation economy这个主题。Curator这个词不大好解释,他们处于创作者(creators)和消费者(consumers)之间,就如同下图这个3c金字塔.
1900/1/1 0:00:00原文标题:《基于委员会的累积终结性模型》作者:Vitalik Buterin本文提出了一种以太坊信标链(Beacon Chain)的拟议替代设计,在未来长期内可以切换到该设计(取代当前计划切换的 CBC).
1900/1/1 0:00:00原文标题:为什么 “通用登录” 可能行不通?自人们开始探索区块链的非金融用例以来,Web 3.0 中的身份概念一直是讨论的焦点。通用登录的主要支持者之一 UniLogin 已停止运营.
1900/1/1 0:00:00头条 ▌Coin Metrics:BSV遭受“大规模”的51%攻击在昨天的一次攻击未遂之后,从美国东部时间周二上午11:45(北京时间8月3日23:45)左右开始,BSV遭受了“大规模”的51%攻击,导致该链的三个版本同时被挖掘.
1900/1/1 0:00:00原标题:《FTX三部曲第一部:什么样的性格使SBF能够统治一家估值180亿美元的公司?》FTX的CEO是一位难得一见的高管。?FTX 将成为未来十年最具影响力的公司之一.
1900/1/1 0:00:00DeFi治理是近期DeFi行业讨论热度最高的话题之一,从Uniswap通过提案为DeFi教育基金资助100万UNI,到Sushiswap提议向部分投资机构以折扣价出售代币.
1900/1/1 0:00:00