主页 > imtoken钱包激活 > 闪电网络基础 LApp:任何区块链都可以实现

闪电网络基础 LApp:任何区块链都可以实现

imtoken钱包激活 2023-01-18 15:09:45

自3月20日比特台公开课“闪电网络基本原理”举办。

​​近几个月来,国内外社区(尤其是海外)关于闪电网络的讨论愈演愈烈,火炬接力行动(连推特创始人杰克·多尔西都加入了)让闪电网络更加激烈。互联网热潮达到了一个新的高峰,这其实是一件很幸福的事情,因为毕竟比特币社区在闪电网络上做的工作太多了,能走到今天的地步也不容易!

说到闪电网络,国内最早关于闪电网络的技术讨论其实发生在2016年5月。

那时,比特派还在魔方法庭。一天,阿彪(我个人非常佩服的圈内技术专家潘志彪)过来和我和董叔讨论了闪电网络的事情。深入探讨,这几乎可以称得上是国内最早的讨论了。那次我们谈得很深入。如果考虑到当时闪电网络中唯一有价值的文件就是那份白皮书,这样深入的讨论其实很少见。

当时,我们谈到了闪电网络的安全考虑,目前的基础设施状况,以及未来的演进路径。通过那次讨论,我们中的一些人已经确定闪电网络白皮书绝对是继中本聪白皮书之后加密货币领域第二重要的论文。没想到,直到三年后的今天,闪电网络才真正进入应用领域并不容易。

在闪电网络方面,原论文作者肯定做出了很大贡献,闪电实验室开发的lnd已经成为当今闪电网络最流行的节点方案。这类公司对闪电网络技术的投资由来已久,包括将 Rusty(Linus 的得力助手)这样的科技巨头引入 All-in 数年,这对闪电网络走到今天至关重要。

​好了,在简单介绍完背景知识之后,我给大家讲一下闪电网络的基本原理。这里我要说明的是,闪电网络的使用与基本原理关系不大。你其实可以,如果你完全不明白原理,你可以直接使用它。唯一的区别就是好不好用,完成度有多高。

但是了解闪电网络的基本原理对于从业者甚至是最普通的新手用户来说都是有益的。毕竟,当你真正了解了它的运作逻辑之后,你就会知道闪电网络的终结。它是怎么做到的?无需链上扩容,无需信任和去中心化,即可实现几乎零成本、几乎无限扩展的区块链交易能力。所以,就像了解比特币的基本原理一样,多了解底层知识应该是一件好事。

今天,我们就用最简单的语言给大家讲解一下这个基本原理,看看能不能让大家基本了解闪电网络到底是怎么一回事。

交易费用成本高

首先,让我打个比方。假设每个人都在打麻将并投注比特币。如果局里每个人都按输赢转钱,考虑到比特币矿工费,成本其实很高。

如果你考虑需要等待一个区块的确认时间,那么这种体验是非常有问题的。现在让我们做一个不同的方法。让我们准备一本账簿。账簿列出了四个玩家,A、B、C、D,以及每场比赛的赢家和输家。八圈后,我们将计算一次账户,最后根据上次结算的结果进行转账。一次性币,这个成本要低很多,因为你只需要支付一次矿工费,玩的时候不用再等,因为你不再需要每一轮都处理比特币区块链,您将不再需要等待交易确认时间。

​在日常生活中,很多人都是这样打麻将和打牌的,因为即使每局给钱都是一件麻烦的事情,只要记账,做最后的计算。 .

而且这种记账方式其实有点类似于闪电网络的思路。

在像比特币这样的去中心化系统中,很难做到这一点。闪电网络从逻辑上解决了这个问题。

好的,现在让我们深入了解闪电网络的基础知识。 (我们首先假设你对比特币的原理有基本的了解,比如未签名交易、交易哈希和交易签名的概念,并且对多重签名有一定的基本了解)

因为关于闪电网络最重要的是完整的描述都在白皮书中,而且由于闪电网络的白皮书没有中本聪的那么短小精悍,所以它是一种冗长而晦涩的类型。因此,我将尽量简明扼要地解释相关原则。 ,但会从下面的白皮书中借用图片。

我们看图一:

Funding Tx(入资交易)-闪电网络

这张图其实很简单,先说一下这里的Funding Tx(投资交易),假设Alice和Bob要各投入0.5个BTC到通道中。所谓通道,从技术实现的角度来看,其实就是一个 2/2 的多重签名地址。 2/2表示如果要在这个地址转币,Alice和Bob都需要同意(都签)才OK,就像打麻将一样,必须先压钱才能上桌。

只有一个Funding Tx的问题在于,虽然这样可以保证双方都投入了足够数量的资产(后续操作需要双方达成共识),但是如果一方不配合,对方将资产冻结在里面,这显然不是我们想要实现的。在极端情况下,如果 Bob 丢失了他的私钥,那么 Alice 的币就没有了,这显然是不可接受的。

因此,需要提前准备一个Commitment Tx(承诺交易),即在向多重签名地址汇款之前,准备从多重签名地址分别转回给Alice和Bob0.5BTC 未签名交易,并且(因为是多重签名),Bob 必须对交易进行签名并将签名发送给 Alice,反之亦然,这样 Alice 和 Bob 都有能力从多重签名中提取硬币- 签名地址 能够回到自己手中的能力(因为对方的签名),这样双方就不用担心对方不合作了,可以安全的将资产存入多方签名地址(因为不需要对方同意,可以拿回资产),比上一个好。

完成这些步骤后,双方就可以向比特币网络广播Funding Tx,即在通道中存币,不用担心对方的配合,因为可以随时发送多重签名。提币。 (当然,双方要自己留着对方的Commitment Tx的签名)

这里我简单谈谈隔离验证对闪电网络的意义。我们在内部拿出来,终于彻底解决了“交易可扩展性问题”,通过 Funding Tx + Commitment Tx 的例子我们可以看到闪电网络对后续尚未广播的交易使用了很多依赖。这种依赖需要 tx id/hash 的确定性,否则如果交易前的 hash 发生变化,后面的交易就会失效(你保留的证书就没用了),所以显然不,这就是 Segwit 的意义所在闪电网络。

现在,让我们再看一下图 2:

静态的一个通道是满足不了用户的需求的-闪电网络

图1的内容已经实现了之后,还不够,因为一个静态的频道已经不能满足用户的需求了。打麻将,有输有赢。我们需要渠道来反映每一轮的输赢关系。例如,Alice 输给了 Bob 0.@ >1BTC。

我们假设,以与图 1 类似的方式,也准备好未签名的交易,Alice 转移 0.4BTC,Bob 转移 0.6BTC。双方签署交易后,将您的签名交给对方。这样,相比原来的0.5/0.5,频道多了一个状态0.4/0.6,双方都有能力广播交易,分别取回 0.4 和 0.6 BTC。

但是问题来了,从 Alice 的角度来看,她更有动力去广播 0.5/0.5 的交易,而 Bob 更有动力去广播<@的交易0.4/0.6,在这种情况下,还没有达到我们的目的。

其实我这里要说明一下,我们现在需要的是能够标记出0.5/0.5和0.4/0.@的序列>6 另外,后面的证书生效后,之前的证书无效,即0.4/0.6生效时,0.5/0. 5 必须作废。

现在我们看图3:(这里我们要说明一下,紫色的意思是Alice手里已经有Bob的签名了,她会在交易上签名,由她自己广播出去;蓝色的则相反.过来)

Revocable Sequence Maturity Contract (RSMC) 可撤销序列成熟合约-闪电网络

图中有个词叫Revocable Sequence Maturity Contract (RSMC) Revocable Sequence Maturity Contract。

图3中的主要逻辑是,如果Alice想要中断交易,她必须向比特币网络广播C1a和RD1a(因为Bob已经给了她这两个的签名),当C1a广播后,Bob直接得到 0.5BTC,Alice 的 0.5BTC 被转移到另一个 RSMC 合约。 RD1a 的交易需要等待 C1a 确认 1000 个区块后才生效。 Alice 只有这样你才能得到自己的0.5BTC。

通过图3,我们实现了订单依赖,并对主动断开通道(即等待1000个确认块)的人进行轻微惩罚。也就是说,在任何时候,通道的一方都可以在没有另一方合作的情况下断开通道。断开通道的操作会让对方立即拿到币,需要等待一段时间。

继续看图4:

更新通道内的状态-闪电网络

现在我们可以参考图3更新channel中的状态,从图3的状态更新到图4的状态,C1a/C1b更新为C2a/C2b,但是我们要废掉旧的状态,我们该怎么做?

其实我们需要介绍的是惩罚机制,请看图5:

惩罚机制-闪电网络

Alice 在生成 C2a/RD2a 之前,需要将自己在 C1a 中的私钥 Alice2 发送给 Bob;同样,Bob 将他在 C1b 中的私钥 Bob2 发送给 Alice。

我想在这里解释一点。其实这里就是RSMC合约对应的多重签名地址的私钥。以 C1a 为例,Bob 签署了 C1a 的未签名交易,并交给了 Alice。但是 Bob 不能广播 C1a,因为 Alice 没有签名。也就是说,只有 Alice 可以广播交易。但是当频道状态更新到 C2a 时,Alice 不敢广播 C1a,因为在更新到 C2a 之前,她必须在 C1a 中发送 RSMC 私钥(另一个私钥) Bob,并且 Bob 得到这个私钥之后,如果他在比特币网络上看到C1a,就说明Alice在作弊,Bob可以用Alice2在RSMC的私钥加上自己Bob2的私钥直接把Alice的0.5 BTC拿走比特派钱包app,Alice还要等1000块取回0.5 BTC,Bob广播的交易先生效,惩罚成功。

如果 Alice 不默认广播 C1a 交易(而是根据协议废除交易),那么 C1a 将永远不会出现在比特币网络上,尽管 Bob 在 RSMC 中拥有 Alice2 的私有信息。钥匙,但没用,因为地址上没有硬币。

这样,通道状态终于从C1更新到了C2,Alice和Bob都不敢回到之前的状态,因为谁回去就会受到惩罚,所有的币都会回到对方。

这其实是闪电网络最基本的原理。

这样,我们每一轮都可以遵循这个规则,C1更新为C2,C2更新为C3......

最后,我们可以打完八局麻将,每一局都保留账号,但是下一轮的结果会使上一轮的账号失效。在此过程中,任何人都不敢作弊,作弊者将受到惩罚。

这其实就是闪电网络的基本逻辑。

在这里我们可以添加一个额外的点。通过上面的介绍,大家应该可以明白,对于Alice和Bob来说,对方在闪电网络通道中签发给自己的所有凭证(包括签名,包括历史)都是保管好私钥非常重要的,等安全。如果您丢失任何证书,如果对方违约,您将无法惩罚对方,即您将面临资产损失。

此外,对于闪电网络通道中的任何一方,必须始终监控区块链上的数据。例如,通道更新为 C2 状态后,Bob 必须始终监控区块链上的数据。比特派钱包app,看Alice是否广播了C1a,因为他需要在Alice广播C1a后的一定时间内惩罚Alice,否则Alice违约成功,Bob将面临资产损失。这其实是一个需要解决的技术问题,需要你要么运行一个SPV轻节点来监控比特币区块链的数据,要么依靠别人提供的瞭望塔来监控。

闪电网络既然被称为网络,自然是有道理的。如果只是1:1的通道,显然不能称为网络。

在我们了解了闪电网络底层支付通道的基本原理之后,我们现在面临的一个问题是大家之间不可能建立通道。首先操作层面是不现实的,更何况通过上面的原理大家都明白了,通道双方都需要向通道中存入一定数量的比特币。如果你和所有比特币用户建立一个渠道,那显然是不可能的。

这需要一个网络结构。例如,Alice 和 Bob 之间、Bob 和 Carol 之间以及 Carol 和 Dave 之间有一个通道。相当于 Alice 和 Dave 之间有一个通道,Alice 可以通过闪电网络向 Dave 转账。

相关步骤见图6:

网络结构-闪电网络

当这些协议成立时,Dave 将 R 给 Carol,并获得 0.@ >1 BTC,Carol 将 R 给 Bob,获得 0.101 BTC,Bob 将 R 给 Alice,获得 0.@ >102 比特币。最后,Alice 支付了 0.102 BTC,Dave 得到了 0.1 BTC,Bob 和 Carol 得到了 0.001 BTC 的费用。

上述逻辑是在闪电网络中通过一种称为哈希时间锁合约(HTLC)的哈希时间锁合约实现的。编写比特币脚本是为了支持 HTLC 等合约。因为具体的脚本都是比较简单的条件判断,这里就不详细描述了。

通过以上逻辑描述,了解原理的用户应该可以理解为什么闪电网络的交易流程是这样的,即:

收款人先准备第二个二维码,然后付款人扫码付款。不管是不是二维码。最重要的是收款人需要先准备一条信息(准备一个R,然后计算它的哈希H,并提供H和公钥),付款人用这个信息进行支付,这个过程其实就是H的传输过程,然后大家拿R去收钱。

换句话说,闪电网络上的交易必须由“接收方”发起,这就是为什么习惯了比特币和以太坊钱包的用户往往会感到尴尬。给我一个地址,我给你转钱,以后可以重复往这个地址转钱。我现在不行了,我得先给你一个H(加上公钥),然后你可以通过闪电网络通道把币转给我。这个H只在一段时间内有效,而且只能用一次,要收费给别人我付钱的时候还要给另一个H',不能拿之前的H。现在大家都明白为什么了?

当我们将 HTLC 合约嵌入 RSMC 通道时,一个更完整的闪电网络(多节点模型)就建立起来了。其中闪电网络的白皮书用了很大篇幅描述了基于RSMC+HTLC的网络模型是如何实现去中心化+无信任的,最后来到了今天大家终于可以体验到的闪电网络。对于闪电网络基础设施的开发,通过我上面介绍的内容,可以在一定程度上理解基本原理,但是在具体的实现中还有很多方面需要考虑,比如,哪怕只是描述的通道建立以上流程和节点转移流程其实是一个非常复杂的工程。此外,对于闪电网络这样的“网络”系统,需要考虑类似于互联网的节点搜索和路由协议(手续费/通道大小等)。还会影响到路由的选择)等,这其实是一项非常复杂的工作,这也是为什么闪电网络基础设施在今天进入了用户可以广泛尝试的阶段。

在这里,我们应该感谢那些为闪电网络辛勤工作的程序员,谢谢!

以下澄清几个事实:

闪电网络本身的原理并不局限于比特币协议,任何区块链都可以实现自己的闪电网络

闪电网络的实现不需要对区块链本身做任何改变,只要具备实现上述原则的条件,就像隔离验证的实现可以大大降低在比特币上实现闪电网络的难度一样。所以,莱特币也可以有闪电网络,以太坊也可以,甚至EOS也可以有自己的闪电网络。

曾经有EOS大主问我比特币有没有闪电网络,EOS的价值会不会大打折扣,我这里不这么看,EOS也可以有自己的闪电网络,EOS高手没问题如果网络做主网,闪电网络做链下闪电网络,因为这是区块链从另一个维度扩展的能力。可以说,闪电网络对所有公链都有很大的价值。

那为什么闪电网络首先出现在比特币上?为什么不先在 Wright 上做实验,然后像隔离验证一样逐步更新到比特币网络?

闪电网络不是比特币协议的升级版,因此不涉及任何比特币核心开发工作;

Lightning Network 需要很多第三方团队或个人来开发基础框架,比如 lnd、C-lightning 等,也需要很多钱包团队以他们认为合适的方式支持。

此时,毫无疑问,比特币社区的开发者、企业和个人数量是最多的。从这个角度来看,闪电网络是一个明确的原则,但实施起来还是有难度的。非常复杂的技术首先出现在比特币上也是正常的。

闪电网络扩展区块链处理交易能力的能力来自另一个维度

既不需要增加区块大小,也不需要使用与TPS区块链一样牺牲去中心化程度的方法,提高区块链本身的交易处理能力。闪电网络上两个通道之间的多个小交易根本不需要占用任何区块链空间。

因此,从某种角度来说,它可以极大地扩展区块链的交易处理能力,甚至可以说比特币等区块链可以拥有和支付宝一样的交易处理能力。 .

例如,你可以准备很多像支付宝集群一样大的节点,以满足高处理能力的需求。

目前支持闪电网络(包括比特派)的钱包所实现的闪电网络方式,实际上是以“托管”方式提供的闪电网络服务

我在这里澄清一下,我们之前使用过一个叫做“伪闪电网络”的术语。这个词实际上是错误的。大家使用的闪电网络仍然是“真闪电网络”,但目前使用“真闪电网络”是基于一种“托管”的方式来做的。

当大家通过比特派闪电网络向Hoo钱包或bluewallet发送比特币时,实际上是在走完整的闪电网络路径,可能跨越多个闪电网络节点。从这个角度来说,它仍然是“真正的闪电网络”。

目前“非托管”闪电网络模式的实现其实需要付出更多的努力,对用户的门槛也会高很多(现阶段只有国外的Eclair在尝试,而且基本上还处于一个无法使用甚至几乎无法使用的状态)。

众所周知,从闪电网络热潮开始,很多用户就一直在呼吁比特派支持闪电网络(由于我们在比特币方面的绝对领先地位,这个呼吁可以说是非常热情),但是一开始我们有点犹豫。

主要原因是在目前的基础设施下,做一个“非托管”的闪电网络钱包将是一个漫长的过程,“托管”的发展速度非常快。 ,但这是用户真正想要的吗?

最后,我们还是觉得闪电网络技术本身的普及是第一要务。让用户获得闪电网络节点,自己维护一个SPV轻节点。对于普通用户来说,门槛太高了。极客可以做到。

我们还是应该先让用户使用闪电网络技术,让用户越来越享受它才是最重要的。

此外,在未来的版本中,我们还将为用户提供设置自己节点的功能。对于这些有能力和精力维护自己的闪电网络节点的用户来说,比特派提供的闪电网络服务实际上将是无托管的、完全去中心化的。届时,比特派的闪电网络服务将是混合模式,用户可以选择适合自己的方案。

闪电网络未来的发展方向

这里我可以做个预测,闪电网络未来的发展方向其实会由比特派等领先的钱包服务公司提供很多大节点(当时我和阿彪把这些大节点称为Big Hubs),以及然后钱包用户将与我们的节点建立通道。可信、去中心化的闪电网络架构,既易用又去中心化。

而且,用户无需担心平台风险,可以随时断开与 Big Hub 的连接,取回资产。最终的闪电网络拓扑图会和现在的互联网非常相似,有大集线器,小节点,还有很多自建节点供个人使用。这实际上将是一个美丽的场景。

还有一点,我们会在近期为用户提供更多基于闪电网络的第三方应用服务。有一个词叫LApp,对应之前的DApp。话费支付只是 LApp 的一个应用。未来很多人会做很多不同的LDapp,敬请期待。

基于闪电网络的跨链去中心化交易所其实是顺理成章建立起来的,实现原理无非是:

一方面有一个大节点提供比特币网络。闪电网络通道服务,另一方面,它为莱特币网络提供闪电网络通道服务。我们假设 Alice 和这个节点分别建立了 Bit 和 Lite 两个通道,而 Bob 也和这个节点建立了这两个通道,那么在 Alice 和 Bob 进行去信任的跨链去中心化交易实际上是可行的,但是双方和节点需要去信任并且不能作恶。

当然,从基础设施的角度来看,这将比闪电网络的大规模普及要困难得多。虽然很多创业团队已经在朝着这个方向努力,但我们其实可以估计,要想在这方面取得成功,需要付出十倍的努力。

闪电网络频道的币当然都是“热”的

这对大部分用户(节点)来说不是什么大问题,因为大家都不去闪电网络大额币通道,大额币应该使用像bithd.com这样的开源硬件钱包,一定资产数量应该使用像Bitpie.com这样的多链钱包,只有少量的、理想的使用闪电网络进行频繁和多次支付的币才需要放置在闪电网络通道中。即使这部分币火爆,安全风险也不大。

但是对于我前面提到的大节点/Hub来说,“热”是个问题,因为未来像比特派这样的Hub可能会为大量用户提供渠道服务,而这种情况下,虽然各个渠道存入的资金非常少,加起来可能是巨量的资产,这对 Hub 提供商的系统安全性要求非常高,甚至比目前交易所的存取款系统还要高。要求更高(因为 Hub 方还必须保存所有通道和所有状态的所有历史凭证),所以当未来逐渐演变到这个阶段时,大型闪电网络 Hub 服务商必须能够使用名义上的“ hot" "但实际上是"cold",类似于我们这几年为用户提供服务的ChainCloud.com全冷区块链云平台的安全架构。

在这里,我要补充一点,即使大Hub出现问题,用户的资产还是安全的,因为用户保存了自己的凭据,当出现问题时,通道断开,等待一段时间,把你的资产拿回来。从这里,你可以看到闪电网络的去中心化和去信任化。

总而言之,闪电网络是比特币等区块链在另一个维度上的扩展。可以大大提高区块链的小额支付处理能力,大大降低成本,使比特币正式进入市场。在近乎零成本的小额支付领域,可以预见闪电网络未来将进一步快速发展,引领区块链进入新时代。当然,在未来的某一天,闪电网络将颠覆的不仅仅是去中心化。支付,包括去中心化交易。

bitpie.com​​​​

原创微博@比特派钱包