区块链学堂——闪电网络是个什么鬼(技术篇)?

区块链学堂第26篇

阅读本文需要具备以下知识储备 ➊ 理解区块链的概念 ➋ 了解比特币网络的运行原理和架构 ➌ 最好阅读《区块链学堂——闪电网络是个什么鬼(故事篇)?》

闪电网络(Lightning Network)这个词乍听起来很酷炫,很深奥,甚至还有点儿邪乎,其实就是在比特币主链以外再架设一个通道,让用户的货币(数字货币)在这个通道上可以进行快速支付,有人会问那不是成了中心化交易所的用户之间收发币吗?虽然很像,但不是,因为闪电网络是去中心化的架构,和传统的交易所有着本质区别。本质上,闪电网络就是一个没有自己发行代币的,依附在比特币主链上的另一个区块链项目。

闪电网络的卓越之处在于,无需信任对方以及第三方即可实现实时的、海量的交易。

闪电网络起源于比特币的扩容问题,它基于微支付通道(双向支付通道)演进而来,创造性的设计出了两种类型的交易合约——序列到期可撤销合约RSMC(Revocable Sequence Maturity Contract)和哈希时间锁定合约HTLC(Hashed Timelock Contract)。

RSMC解决了通道中货币单向流动问题,HTLC解决了货币跨节点传递的问题,这两个类型的交易组合构成了闪电网络。

注:本文图中带<>号的签名表示已经签名成功,不带<>号的签名表示待签名,多重签名只有完成全部签名才能被广播进区块(主链)。

一、建立微(双向)支付通道

➊、双方各拿出1BTC,构建资金池Funding Tx(类比为联名卡),输出为张三和李四的2/2双(多)重签名。此时, Funding Tx未签名,所以不能广播进主链。

➋、张三构造Commitment Tx——C1A和D1A,并交给李四签名。C1A的第一个输出为多重签名地址,张三的另一把私钥张三2和李四的2/2多重签名,第二个输出为李四1BTC。

➌、D1A为C1A第一个输出的交易,输出给张三1BTC,但此类型交易带有sequence,作用是阻止当前交易进块(主链),只有前向交易有sequence个确认时才能进块(sequence值大小由系统设定)。

➍、李四构造Commitment Tx——C1B和D1B,并交给张三签名,结构与C1A、D1A对称。

➎、李四对C1A和D1A进行签名,并将签名给张三;同理,张三对C1B和D1B签名,完成后交给李四。此时,由于并未对Funding Tx进行签名,任何一方均无法作弊(欺诈),任何一方也不会有任何损失。

➏、双方均完成对commitment Tx的签名并交换后,各自再对Funding Tx进行签名,并交换。此时,Funding Tx是完整的交易,可以广播进入主链。

这就是创建序列到期可撤销合约RSMC的全部过程。

RSMC合约具有如下规则—— C1A, C1B两笔交易来自同一个输出,所以这两个交易只有一个能进入主链,否则就会产生双花(双重支付)。 若张三广播C1A,则李四立即拿到1BTC(C1A的第二个输出),而张三需要等C1A得到1000个确认,才能通过D1A的输出拿到1BTC。 同样,若李四广播C1B,则张三立即拿到1BTC,李四等待C1B得到1000个确认,才能通过D1B拿到1BTC。也就是说,单方面广播交易,终止合约的那一方会延迟拿到币,而另一放则立即拿币。

二、转账(交易更新)

张三和李四各自拥有1BTC的余额,此时张三从李四处购买了一件商品,假设价格为0.5BTC,那么余额应该变为张三 0.5BTC、李四1.5BTC。于是创建新的Commitment Tx,对于张三来说是C2A 和D2A,对于李四来说是C2B和D2B,过程与上面类似。

此时两个状态均是有效的,那么最核心的问题来了,因为C1A和C1B已经是处理过的交易了,C2A和C2B才是最新交易状态。怎样才能彻底废弃掉C1A和C1B呢?

RSMC采用了一个非常巧妙的方法,在C1A的第一个输出中,采用了张三2和李四的多重签名,张三将张三2的私钥交给李四,即表示张三放弃C1A,承认C2A。

咦?张三和张三2什么关系?假设一个人可以刻几个印章,有正方形的,有长方形的,有圆形的,有菱形的......,现在张三将张三2这枚正方形的印章交给李四,就代表之前所有需要盖上正方形印章签字的交易都无法再激活,因为张三本人没有这枚印章了,李四手握李四本人的印章和张三2的印章,虽然可以激活这笔交易C1A,但一旦激活张三就会得到1BTC,而李四将损失C2A中的1.5BTC,显然,李四不会这么傻,所以张三交出了张三2的私匙(正方形印章),就表示张三放弃了C1A,承认了C2A。

同样的逻辑,李四交出李四2的私钥给张三即意味废弃了C1B,承认了C2B。

张三交出张三2的私钥给李四,那么李四就可以修改D1A的输出给他自己,形成新的交易F1A。若张三破坏合约存在C2A的情况下依然广播出C1A,那么张三的惩罚就是失去他全部的币。张三交出张三2的私钥,或者对交易F1A进行签名,两者是等同的,都是对C1A的放弃。

引入sequence的目的是,阻止后续交易进块(D1A),给出一个实施惩罚窗口期,当发现对方破坏合约时,可以有1000个块确认的时间去实施惩罚交易,即广播F1A代替D1A。若错过1000个块时间窗口,则无法再实施惩罚了(D1A进块了)。

 三、中转交易

张三想要支付0.5BTC给王五,但他并没有一个渠道来和他进行交易。幸运的是,他和李四有一个交易渠道,而王五正好和李四也有一个交易渠道。这样张三就能借助李四的交易渠道,通过哈希时间锁定合约(HTLC)来和王五进行交易了。

具体的交易细节如下:

➊、张三通知王五,我要给你转0.5BTC,然后王五收到张三发来的一个随机数R值;

➋、王五将这个R值进行Hash运算得到H(R)回复给张三;

➌、张三收到回复后,联系李四,告诉李四:如果你找到H(R)的原始R值,我就转给你0.5BTC;

➍、李四得知王五知道R值,便与王五展开了谈判,李四告诉王五,如果你告诉我张三发给你的R值,我就转给你0.5BTC;

➎、王五用R值从李四手中换取了0.5BTC;

➏、接着李四用R值从张三手中换取了0.5BTC。

最后交易完成,张三以脱链的形式付给王五0.5BTC。

 四、关闭交易

关闭RSMC逻辑相对简单,直接按照最终的余额,构造出一个Commitment TX即可,例如输出为张三0.5BTC,李四1.5BTC,无需再设置多重签名,构造惩罚交易等。

总结

RSMC通过巧妙的设置Commitment TX的多重签名输出,以及sequence的延迟进块形成惩罚窗口期,解决了在微支付通道中的货币单向流动问题,而哈希锁定合约HTLC则解决了货币跨节点的传递,因此闪电网络成为比特币网络扩容的方案之一。其实闪电网络是一种链下交易,只有关键的环节才会发送到比特币主链,非关键环节则在链下(闪电网络上)进行计算、运行,这样大大降低了主链负荷,从而让主链快如闪电。

理想很丰满,现实很骨感,很多组织和团队对比特币采用闪电网络扩容的方案表示了质疑,他们认为,所谓的闪电网络只是一个假象,而多一层代码,则多一重风险,还是那句话,世界上没有银弹,没有一种技术能搞定所有的问题,闪电网络也不例外。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏华仔的技术笔记

关于Plasma, Plasma Cash & Plasma XT

Plasma白皮书由以太坊创始人Vitalik Buterin和闪电网络白皮书联合创始人Joseph Poon联合编写。Plasma旨在解决以太坊网络目前面临的...

662
来自专栏友弟技术工作室

区块链入门总结区块链

新交易创建 -> 交易广播网络 -> 交易验证 -> 验证结果通过网络广播 -> 交易写账本

752
来自专栏Seebug漏洞平台

从以太坊;MorphToken事件;看智能合约构造函数大小写编码错误漏洞

以太坊智能合约的含义就是一组代码(函数)和数据(合约的状态),它们位于以太坊区块链的一个特定地址上。智能合约一般使用solidity语言编写。

963
来自专栏about云

区块链包含术语概念【27术语整理汇总】

问题导读 1.区块链包含哪些概念? 2.什么是工作量证明? 3.什么是共识机制? 4.你认为哪些概念比较重要? 区块链现在很多人都在学习,无论是看书籍,...

1203
来自专栏架构师之路

1分钟了解“挖矿”的本质

上一篇《1分钟了解区块链的本质》,介绍了什么是区块链,区块链是一个没有管理员,每个节点都拥有全部数据,高可用的分布式存储系统。 文章的留言里,不少朋友会用比特币...

36910
来自专栏码洞

面向程序猿的比特币教程之数据结构基础

最近才开始了解区块链,花了一些时间使劲钻研了一下,大致理解了比特币区块链的基本结构和运行机制。比特币说复杂也不复杂,但是如果深究下去,绝不是非常简单。

781
来自专栏LuckQI

让入门者也能开明白的区块链讲解三

852
来自专栏阮一峰的网络日志

区块链入门教程

区块链(blockchain)是眼下的大热门,新闻媒体大量报道,宣称它将创造未来。 可是,简单易懂的入门文章却很少。区块链到底是什么,有何特别之处,很少有解释。...

3365
来自专栏ImportSource

什么?区块链中的hash算法!施主,快扶老衲起来

hash算法有很多种。比如MD5、SHA1、SH2(SHA224、SHA256、SHA384和SHA512)、SH3、RIPEMD-160。

1103
来自专栏CDA数据分析师

深度丨解读比特币背后的奥秘丨附中字视频

翻译/校对: Mika 本文为 CDA 数据分析师原创作品,转载需授权 "拥有"一枚比特币意味着什么很多人都听说过比特币。这是一种数字货币,不需要特定政府发行...

18810

扫码关注云+社区