• 元宇宙:本站分享元宇宙相关资讯,资讯仅代表作者观点与平台立场无关,仅供参考.

系统解读Fiber:把闪电网络嫁接到CKB上的宏大实验

  • 2024年9月02日 12:32

根据mempool的数据,当前BTC闪电网络中安置了3亿多美元的资金,Node数量约为1.2万个,彼此之间构建了近5万条支付通道。

如果有一方退出通道,就把当前的余额Alice:70/Bob:130同步到链上,把多签账户中的200块钱按各自余额转给二人,完成结算。上述流程看起来简单,但在实操中要考虑很多复杂情况。

首先,你其实并不知道对方想在何时退出通道,拿上面的例子来说,Bob可以在第二笔转账完成后就退出,亦或是第一笔转账后就退出,而支付通道不会对此强制要求,是允许参与方自由退出的。要实现这一点,要假设随时会有人退出,任意一方都可能向链上提交最终余额,进行结算。

所以有一个“承诺交易”的设定,“承诺交易”用于声明通道内双方的最新余额,每笔转账发生时都会生成对应的“承诺交易”。你如果要退出通道,可以向链上提交最新的一笔“承诺交易”,把自己应得的钱从多签账户中抽出来。

这笔承诺交易由Bob构造,然后发给Alice让对方自行处理。如图所示,这就是一笔Bitcoin转账,声明把多签账户中70块钱给Alice,130块钱给Bob,但钱的解锁条件“不对称”,Alice面对的限制更苛刻,对Bob更有利。

Alice收到Bob构造的承诺交易后,可以附上自己的签名满足2/2多签,之后Alice可以主动把“承诺交易”提交上链,这样就可以退出通道,如果她不这么做就可以继续在通道中转账。

这里我们要注意:这笔承诺交易是Bob主动构造的,其中条件对Alice不利,Alice只能接受/拒绝,我们要想办法留给Alice一些自主权。在支付通道的设计中,只有Alice自己能把“对自己不利”的承诺交易放到链上触发,这是因为承诺交易要凑足2/2多签,Bob在本地构造交易后只有自己的签名,没有Alice签名。

而Alice可以“只接收Bob的签名,但不把自己的签名发给他”,这就好比一份对你不利的合同,需要你和别人双签,对方先签名后把文件给你,你可以不让对方拿到签名。你想让合同生效就签名然后公示,不想生效就不签名或不公示。显然在上面的案例中,Alice有办法限制Bob。

每笔承诺交易都要2/2多签才能生效,Bob本地构造的、对自己有利的承诺交易不满足2/2多签,而满足2/2多签的承诺交易扣在Alice手上,Bob没法提交,只能由Alice提交,这就形成了制衡。反过来也是类似的道理。

如此一来,Alice和Bob只能主动提交对自己不利的承诺交易,只要双方中有一人把CommitTx提交上链且生效,通道就被关闭。而回到最开始说的“双重支付”场景,如果有人把过期的承诺交易提交上链,会发生什么呢?

这里要提到一个叫“撤销密钥”的东西。假如Bob把过期的承诺交易提交上链,Alice可以通过撤销密钥把Bob应得的钱提走。

我们看下面这张图,假设最新的承诺交易是CommitTx3,CommitTx2过期,如果Bob把过期的Tx2提交到链上,Alice可以通过Tx2的撤销密钥把Bob的钱抽走(Alice要赶在时间锁范围内行动)。

除非真的有人作恶,否则WatchTower不会看到通道参与者的交易记录(即便看到了也只能看到其中一笔)。

这里我们要提一下Fiber相比于Bitcoin闪电网络的优化。上述与撤销密钥相关的惩罚机制被称为“LN-Penalty”,而Bitcoin闪电网络的LN-Penalty有明显缺点:WatchTower要保存所有的过期承诺交易Hash和对应的撤销密钥,这会造成不小的存储压力。

早在2018年,Bitcoin社区就提出了一种叫“eltoo”的方案来解决上述问题,但需要Bitcoin分叉支持SIGHASH_ANYPREVOUT操作码。思路是当过期的承诺交易上链后,最新的承诺交易能对其进行惩罚,这样用户只保存最新的承诺交易即可。但是SIGHASH_ANYPREVOUT操作码至今还未激活,该方案迟迟不能落地。

而Fiber实现了Daric协议,修改了撤销密钥的设计,让同一个撤销密钥适用于多笔过期的承诺交易。这样可以大幅减少WatchTower以及用户客户端的存储压力。网络中的交通系统:多跳路由和HTLC/PTLC

前面讲的支付通道仅适用于1对1交易的场景,而闪电网络支持多跳支付,即通过中间Node来路由,让未直接建立通道的两方间能够转账,比如说Alice和Ken没有通道,但Ken和Bob间有通道,Bob和Alice间有通道,Bob就可以作为Alice和Ken之间的中间Node,让Alice和Ken之间可以发生转账互动。而“多跳路由”就是指通过多个中间人搭建转账路径。

“多跳路由”能够增强网络的灵活性和覆盖范围。不过,发送方需要了解所有的公共Node和通道的状态。在Fiber中,所有公开通道即网络结构是完全公开的,任何一个Node都可以获知其它Node掌握的网络信息。由于闪电网络中整个网络的状态是不断变化的,Fiber会使用Dijkstra最短路径算法找到最短路由路径,让中间人数量尽可能的少,然后在两方之间架设转账路径。

Carol如法炮制,在和Daniel的通道中创建HTLC:Carol愿意支付100块,但Daniel要在20分钟内告诉她R的明文,否则钱会被Carol收回。

Daniel明白,Carol索要的密钥R其实是Alice想要的,因为除了Alice没人会在意R的内容是啥。所以Daniel会配合Carol,告诉她R的内容,并从Carol那拿到100块,这样子Alice就实现了目标:给Carol100块钱。

之后的事情不难想象:Carol把密钥R告诉Bob,拿到101块钱;Bob再把密钥R告诉Alice,拿到102块钱。我们观测所有人的得失,可以看出Alice失去102块钱,Bob和Carol净赚1块钱,Daniel得到100块。这里面Bob和Carol赚的1块钱就是它们从Alice那抽的手续费。

因此Daniel和Bob能猜到,Alice和Eve之间存在支付路径,因为它们总是和相同的密钥扯上关系,借此推断出Alice和Eve之间的关系并施加监视。

对此,Fiber采用了PTLC,在HTLC基础上进行了隐私改良,支付路径中每道PTLC都用不同的密钥来解锁,单纯观测PTLC索要的密钥无法判断出彼此的关联性。通过将PTLC与洋葱路由结合,可以让Fiber成为隐私支付的理想方案。

此外,传统的闪电网络存在“替代交易循环攻击”(replacementcyclingattack)场景,可以让支付路径中间人的资产被盗。这一发现甚至让开发者AntoineRiard退出了闪电网络的开发工作。到目前为止Bitcoin闪电网络尚未有根本措施解决这个问题,已然成为一个痛点。

目前,CKB官方通过在交易池层面进行改良,可以让Fiber解决上述攻击场景。由于替代交易循环攻击及解决方案比较烧脑,本文不打算继续占用篇幅做出解释,感兴趣的可以阅读BTCStudy的下述文章以及阅读CKB官方的相关资料。

总体而言,无论是在隐私还是在安全层面,Fiber都比传统的闪电网络进行了大幅改良。Fiber与Bitcoin闪电网络间的跨域原子支付

利用HTLC和PTLC,Fiber可以和Bitcoin闪电网络实现跨域支付,且能够保证“跨域行为的原子性”,即跨域相关的全部步骤要么全成功,要么全失败,不会有部分成功部分失败的情况。

跨域原子性有了保障后,可以保证跨域本身不会导致财产损失,这样可以让Fiber与Bitcoin闪电网络可以互联起来,比如可以在Fiber和闪电网络组成的混合网络中搭建支付路径,直接在Fiber中向BTC闪电网络中的用户转账(接收端仅限BTC),还可以在Fiber中用CKB和RGB++资产在BTC闪电网络中换取等价Bitcoin。

我们简单说下原理:假设Alice在Fiber网络内运行了Node,而Bob在Bitcoin闪电网络中运行Node,Alice想向Bob转账一些钱,它可以通过跨域中转商Ingrid实现这笔转账。具体而言,Ingrid会分别在Fiber和BTC闪电网络内运行Node,充当转账路径中的中间人。

如果是在复杂的多跳网络中,某些中间Node余额不足无法向外转账,可能导致整个支付路径失败。这是闪电网络的痛点之一,对此的解决方案无外乎提供高效的流动性注入方案,确保大多数Node都能随时注入资金。

但是,在BTC闪电网络中,注入流动性、打开或关闭通道的步骤都在BTC链上进行,若BTC网络手续费极高,会对支付通道的UX产生不良影响。假设你想开启一个容量为100美元的通道,但建立通道的操作花掉10美元手续费,那这个通道在初始化时就磨了你10%的资金,这是让大多数人无法接受的;对于流动性注入等工作也是同理。

对此Fiber拥有非常显著的优势。首先CKB的TPS远比BTC高得多,手续费可以达到美分级别;其次,为了应对流动性不足导致无法转账的问题,Fiber计划与Mercurylayer合作推出新的解决方案,使得流动性注入的工作可以摆脱链上操作,解决UX和成本问题。

至此,我们系统的梳理了Fiber的总体技术架构,其和Bitcoin闪电网络的大致对比总结如上图所示。由于Fiber和闪电网络本身涉及的知识点太多太杂,单纯一篇文章可能无法覆盖到方方面面,未来我们将针对闪电网络和Fiber的话题推出系列文章,大家敬请期待。

Copyright © 2021.Company 元宇宙YITB.COM All rights reserved.元宇宙YITB.COM