系统解读Fiber:闪电网络嫁接到CKB

进阶9/10/2024, 1:19:17 PM
本文深入分析了基于 CKB 的光纤网络闪电网路方案,探讨了其在支付通道、WatchTower、多跳路由和跨域支付等方面的技术创新,文中详细讲解了光纤穿透技术优化来提升用户体验、隐私保护和安全性,同时展望了其与比特币闪电网络互联互通的潜力。

转发原文标题《系统解读Fiber:把闪电网络嫁接到CKB上的宏大实验》

8月23日,CKB官方发布了基于CKB的闪电网络方案——Fiber Network(光纤网络),这则新闻一经传播,很快便在社区里引发了热议,让CKB价格在一天内快速上涨了近30%。新闻之所以会引起强烈反响,主要在于闪电网络具有强大的叙事魅力,而CKB的Fiber对传统闪电网络进行了方案升级,针对后者做出了诸多改进。比如,Fiber可以原生支持多类型资产,如CKB、BTC、稳定币等,而且CKB的手续费远比BTC低、响应速度快,Fiber可以借此在UX方面取得突破。而在隐私和安全层面,Fiber也做出了不少优化。此外,Fiber和BTC闪电网络可以互联互通,形成更大的P2P网络,此前的线下活动中,CKB官方甚至表示,将在Fiber和闪电网络中设置10万个物理节点,以促进P2P支付网络的完善与进步。毫无疑问这是一个空前宏大的故事。

如果CKB官方的愿景得以在未来实现,无论对闪电网络还是对CKB乃至比特币生态而言,都将是巨大的利好。根据mempool的数据,当前BTC闪电网络中安置了3亿多美元的资金,节点数量约为1.2万个,彼此之间构建了近5万条支付通道。

而在spendmybtc.com上,我们还可以看到越来越多的商家在支持闪电网络收付款,只要BTC的被认可度越来越强,闪电网络和Fiber等链下支付方案的崛起势能必将与日俱增。本着对Fiber的技术方案进行系统性解读的目的,《极客Web3》写作了这篇关于Fiber整体方案的研报。作为基于CKB的闪电网络实现方案,Fiber的原理与比特币闪电网络大面上一致,但在很多细节上进行了优化。Fiber的总体架构包括以下四个核心部分:支付通道、WatchTower、多跳路由、跨域支付。下面我们先展开解释下最重要的“支付通道”。

闪电网络和Fiber的基石:支付通道

支付通道本质是将转账/交易都挪到链下处理,过段时间再将最终状态提交到链上进行“结算”。由于交易是在链下即时完成的,往往可以摆脱BTC等主链的性能限制。假设Alice和Bob共同开启了一个通道,他们先在链上构建多签账户,向里面存一些钱,比如Alice和Bob各存入100块,作为在链下通道中各自的余额。接下来双方可以在通道里进行多笔转账,等退出通道时,再把最终的余额同步到链上,由多签账户给双方打款,即“结算”。

比如说,双方开始时各有100块,之后Alice向Bob转账50,之后Alice又向Bob转了10块钱,而后Bob又给Alice转了30块,最终双方余额变为:Alice—70,Bob—130。大家不难发现,二人的余额总和不变,上图中算盘珠子来回推拉的案例可以很好解释这点。如果有一方退出通道,就把当前的余额Alice:70/Bob:130同步到链上,把多签账户中的200块钱按各自余额转给二人,完成结算。上述流程看起来简单,但在实操中要考虑很多复杂情况。首先,你其实并不知道对方想在何时退出通道,拿上面的例子来说,Bob可以在第二笔转账完成后就退出,亦或是第一笔转账后就退出,而支付通道不会对此强制要求,是允许参与方自由退出的。要实现这一点,要假设随时会有人退出,任意一方都可能向链上提交最终余额,进行结算。所以有一个“承诺交易”的设定,“承诺交易”用于声明通道内双方的最新余额,每笔转账发生时都会生成对应的“承诺交易”。你如果要退出通道,可以向链上提交最新的一笔“承诺交易”,把自己应得的钱从多签账户中抽出来。

我们可以记下这个结论:承诺交易用于对通道中双方的余额进行链上结算,任何一方随时可以把最新的承诺交易上链,然后退出通道。但这里有一个重要的作恶场景:Bob可以把过期的余额和承诺交易提交到链上,比如上图中的Commit Tx3生成后,Bob的余额为130,但Bob为了给自己牟利,把过期的Commit Tx2提交到链上,声明自己的余额是160,而这个余额状态不是实时的,这就是典型的“双重支付”。为了防止此类双花场景,要有相应的惩罚措施,关于惩罚措施的设计恰好是整个1对1支付通道的核心,理解了这部分才能真正理解支付通道。在通道的设计里,如果任何一方把过期的状态和Commit Tx提交到链上,不但不会如愿以偿,反而会被另一方把全部资金都抽走。这里用到了“不对称的承诺交易”和“撤销密钥”,这两个概念非常重要。我们先对“不对称的承诺交易”进行解释。以前面的Commit Tx3为例,下图是承诺交易的示意图:

这笔承诺交易由Bob构造,然后发给Alice让对方自行处理。如图所示,这就是一笔比特币转账,声明把多签账户中70块钱给Alice,130块钱给Bob,但钱的解锁条件“不对称”,Alice面对的限制更苛刻,对Bob更有利。Alice收到Bob构造的承诺交易后,可以附上自己的签名满足2/2多签,之后Alice可以主动把“承诺交易”提交上链,这样就可以退出通道,如果她不这么做就可以继续在通道中转账。这里我们要注意:这笔承诺交易是Bob主动构造的,其中条件对Alice不利,Alice只能接受/拒绝,我们要想办法留给Alice一些自主权。在支付通道的设计中,只有Alice自己能把“对自己不利”的承诺交易放到链上触发,这是因为承诺交易要凑足2/2多签,Bob在本地构造交易后只有自己的签名,没有Alice签名。而Alice可以“只接收Bob的签名,但不把自己的签名发给他”,这就好比一份对你不利的合同,需要你和别人双签,对方先签名后把文件给你,你可以不让对方拿到签名。你想让合同生效就签名然后公示,不想生效就不签名或不公示。显然在上面的案例中,Alice有办法限制Bob。

然后到了重点:通道中每次有转账发生后,会有一对承诺交易出现,有两个类似镜像的版本,就像下面这样。Alice和Bob可以分别构造对自己有利的承诺交易,在其中声明余额/退出时应得的金额,然后把交易内容发给对方处理。有趣的是,这两笔承诺交易声明的“退出时所得金额”相同,但取款条件不同,这正是前文“不对称的承诺交易”的来历。

前面我们解释过,每笔承诺交易都要2/2多签才能生效,Bob本地构造的、对自己有利的承诺交易不满足2/2多签,而满足2/2多签的承诺交易扣在Alice手上,Bob没法提交,只能由Alice提交,这就形成了制衡。反过来也是类似的道理。如此一来,Alice和Bob只能主动提交对自己不利的承诺交易,只要双方中有一人把Commit Tx提交上链且生效,通道就被关闭。而回到最开始说的“双重支付”场景,如果有人把过期的承诺交易提交上链,会发生什么呢?这里要提到一个叫“撤销密钥”的东西。假如Bob把过期的承诺交易提交上链,Alice可以通过撤销密钥把Bob应得的钱提走。

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

而对于最新的Tx3,Alice没有其撤销密钥,只有在未来Tx4出现后,Alice才能获取Tx3的撤销密钥。这是由公私钥密码学和UTXO的特性决定的,碍于篇幅本文不会深入解释撤销密钥的实现原理。我们可以记住结论:Bob只要敢把过期的承诺交易提交上链,Alice就可以用撤销密钥把Bob的钱拿走,作为惩罚。反过来如果Alice作恶了,Bob也可以如此惩罚她。这样一来,1对1的支付通道可以有效避免双重支付,只要参与方都是理性人,就都不敢作恶。关于支付通道这块,基于CKB的Fiber相比于比特币闪电网络有大幅优化,能够原生支持多类型资产的转账/交易,比如CKB、BTC和RGB++稳定币,而闪电网络只能原生支持比特币,Taproot Asset上线后比特币闪电网络还是无法原生支持非BTC资产,只能间接支持稳定币。

(图片来源:Dapangdun)此外,由于Fiber依赖的Layer1主链是CKB,打开和关闭通道的操作消耗的手续费低得多,不会像BTC闪电网络那样磨掉用户很多手续费,这是其在UX上的明显优势。

全天候的保安:WatchTower瞭望塔

上文中讲到的撤销密钥有个问题:通道参与方要时刻监视对方,防止对方偷摸把过期的承诺交易提交上链。但没人能保证24小时在线,如果你离线的时候对方作恶,该怎么办?对此,Fiber和比特币闪电网络都有WatchTower瞭望塔的设计,会帮用户全天候监视链上活动。一旦通道中有人提交了过期的承诺交易,WatchTower会及时处理,从而确保通道和资金的安全。具体的解释如下:对于每笔过期的承诺交易,Alice或Bob可以事先把对应的惩罚交易构造好(用撤销密钥处理过期的承诺交易,受益人声明为自己),然后把惩罚交易的明文发给WatchTower。一旦WatchTower监测到有人把过期的承诺交易提交上链,它就会把惩罚交易也提交上链,进行针对性的惩罚。

Fiber为了保护通道参与者的隐私,只让用户把“过期承诺交易的hash+惩罚交易明文”发给WatchTower,这样WatchTower一开始并不知道承诺交易的明文,只知道其hash。除非有人真的把过期承诺交易提交到链上,WatchTower才会看到明文,然后紧随其后把惩罚交易提交上链。这样一来,除非真的有人作恶,否则WatchTower不会看到通道参与者的交易记录(即便看到了也只能看到其中一笔)。这里我们要提一下Fiber相比于比特币闪电网络的优化。上述与撤销密钥相关的惩罚机制被称为“LN-Penalty”,而比特币闪电网络的LN-Penalty有明显缺点:WatchTower要保存所有的过期承诺交易Hash和对应的撤销密钥,这会造成不小的存储压力。早在2018年,比特币社区就提出了一种叫 “eltoo” 的方案来解决上述问题,但需要比特币分叉支持SIGHASH_ANYPREVOUT操作码。思路是当过期的承诺交易上链后,最新的承诺交易能对其进行惩罚,这样用户只保存最新的承诺交易即可。但是SIGHASH_ANYPREVOUT操作码至今还未激活,该方案迟迟不能落地。而Fiber实现了Daric协议,修改了撤销密钥的设计,让同一个撤销密钥适用于多笔过期的承诺交易。这样可以大幅减少WatchTower以及用户客户端的存储压力。网络中的交通系统:多跳路由和HTLC/PTLC前面讲的支付通道仅适用于1对1交易的场景,而闪电网络支持多跳支付,即通过中间节点来路由,让未直接建立通道的两方间能够转账,比如说Alice和Ken没有通道,但Ken和Bob间有通道,Bob和Alice间有通道,Bob就可以作为Alice和Ken之间的中间节点,让Alice和Ken之间可以发生转账互动。而“多跳路由”就是指通过多个中间人搭建转账路径。“多跳路由”能够增强网络的灵活性和覆盖范围。不过,发送方需要了解所有的公共节点和通道的状态。在Fiber中,所有公开通道即网络结构是完全公开的,任何一个节点都可以获知其它节点掌握的网络信息。由于闪电网络中整个网络的状态是不断变化的,Fiber会使用Dijkstra最短路径算法找到最短路由路径,让中间人数量尽可能的少,然后在两方之间架设转账路径。

不过这里面要解决中间节点的信用问题:你怎么保证他是诚实的,比如前面提到Alice和Ken之间有中间人Bob,Alice现在要给Ken转账100块,Bob随时可能扣住这笔钱。对此要有办法防止中间人作恶,HTLC和PTLC便用于解决此类问题。假设Alice要向Daniel付款100块,但他们之间没有建立通道。而Alice发现,可以通过Bob和Carol这两个中间人向Daniel付款。这里面要引入HTLC作为支付渠道,首先Alice向Daniel发起请求,然后Daniel发给Alice一个哈希r,但Alice不知道r对应的明文R。

之后,Alice在与Bob的通道中,通过HTLC构造支付条款:Alice愿意付给Bob 102块,但Bob要在30分钟内说出密钥R,否则Alice会把钱撤回。同理Bob再跟Carol创建HTLC:Bob会向Carol支付101块,但Carol要在25分钟内说出密钥R,否则Bob会把钱撤回。Carol如法炮制,在和Daniel的通道中创建HTLC:Carol愿意支付100块,但Daniel要在20分钟内告诉她R的明文,否则钱会被Carol收回。Daniel明白,Carol索要的密钥R其实是Alice想要的,因为除了Alice没人会在意R的内容是啥。所以Daniel会配合Carol,告诉她R的内容,并从Carol那拿到100块,这样子Alice就实现了目标:给Daniel 100块钱。之后的事情不难想象:Carol把密钥R告诉Bob,拿到101块钱;Bob再把密钥R告诉Alice,拿到102块钱。我们观测所有人的得失,可以看出Alice失去102块钱,Bob和Carol净赚1块钱,Daniel得到100块。这里面Bob和Carol赚的1块钱就是它们从Alice那抽的手续费。

即使上面的支付路径中某个人卡住,比如Carol没有把密钥R告知下游的Bob,也不会让Bob有损失:过时间后Bob可以把构建的HTLC撤回。对于Alice也是同理。但闪电网络也有问题:路径不宜过长,如果路径太长中间人太多,会降低付款的可靠性:某些中间人可能离线,亦或是余额不足以构建特定HTLC(比如前面案例中每个中间人至少要有100多块钱)。所以在路径中每增加一个中间节点,都会提高出错的可能性。此外,HTLC可能泄露隐私。虽然洋葱路由可以适当保护隐私,比如把每一跳的路由信息都加密,除了最初发起者Alice外,每个人只知道相邻的上下家,不知道完整的路径,但实际上HTLC还是容易被推断出关联性。我们以上帝视角看下面这个路径

假设Bob和Daniel是同一实体控制的两个节点,每天都会收到很多人发来的HTLC。它们发现,Alice和Carol每次发来HTLC后,要获知的密钥总是一致的,而与Daniel相连的下家Eve总是知道密钥R的内容。因此Daniel和Bob能猜到,Alice和Eve之间存在支付路径,因为它们总是和相同的密钥扯上关系,借此推断出Alice和Eve之间的关系并施加监视。对此,Fiber采用了PTLC,在HTLC基础上进行了隐私改良,支付路径中每道PTLC都用不同的密钥来解锁,单纯观测PTLC索要的密钥无法判断出彼此的关联性。通过将PTLC与洋葱路由结合,可以让Fiber成为隐私支付的理想方案。此外,传统的闪电网络存在“替代交易循环攻击”(replacement cycling attack)场景,可以让支付路径中间人的资产被盗。这一发现甚至让开发者Antoine Riard退出了闪电网络的开发工作。到目前为止比特币闪电网络尚未有根本措施解决这个问题,已然成为一个痛点。目前,CKB官方通过在交易池层面进行改良,可以让Fiber解决上述攻击场景。由于替代交易循环攻击及解决方案比较烧脑,本文不打算继续占用篇幅做出解释,感兴趣的可以阅读BTCStudy的下述文章以及阅读CKB官方的相关资料。

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

利用HTLC和PTLC,Fiber可以和比特币闪电网络实现跨域支付,且能够保证“跨域行为的原子性”,即跨域相关的全部步骤要么全成功,要么全失败,不会有部分成功部分失败的情况。跨域原子性有了保障后,可以保证跨域本身不会导致财产损失,这样可以让Fiber与比特币闪电网络互联起来,比如可以在Fiber和闪电网络组成的混合网络中搭建支付路径,直接在Fiber中向BTC闪电网络中的用户转账(接收端仅限BTC),还可以在Fiber中用CKB和RGB++资产在BTC闪电网络中换取等价比特币。我们简单说下原理:假设Alice在Fiber网络内运行了节点,而Bob在比特币闪电网络中运行节点,Alice想向Bob转账一些钱,它可以通过跨域中转商Ingrid实现这笔转账。Ingrid会分别在Fiber和BTC闪电网络内运行节点,充当转账路径中的中间人。

如果Bob想收到1个BTC,Alice可以与Ingrid协商兑换比率,用1个CKB换1个BTC。然后Alice在Fiber中向Ingrid发送1.1个CKB,而后Ingrid在BTC闪电网络中向Bob发1个BTC,而Ingrid会留下0.1个CKB作为手续费。这里面具体的操作方式,其实就是在Alice和Bob与Ingrid之间建立支付路径,即Alice—>Ingrid—>Bob,然后会用到HTLC。类似道理其实前面有讲过,Bob为了收到钱,必须告诉Ingrid密钥R的内容。一旦Ingrid获取了密钥R,就可以解锁Alice锁在HTLC里的钱。需要注意,这两笔分别发生于BTC闪电网络和Fiber中的跨域行为是原子性的,意味着要么两个HTLC都被解锁,跨域支付顺利执行。要么都不解锁,跨域支付失败,而不会出现Alice给了钱而Bob收不到钱的情况。(其实中间人Ingrid可以在知道密钥R后不去解锁Alice的HTLC,但这样受损的是Ingrid这个中间人,而不是用户Alice,所以Fiber的设计对于用户是安全的)这种方式不需要信任第三方,即可在不同的P2P网络间实现转账行为,几乎不需要任何修改。

Fiber相比于BTC闪电网络的其他优点

前面我们提到,Fiber支持CKB原生资产,以及RGB++资产(尤其是稳定币),这使得它在即时支付场景中有极大潜力,更适合日常小额支付需求。此外,比特币闪电网络有一个主要痛点,就是是流动性管理问题。大家可能记得我们最开始说的,支付通道中总体余额是固定的,若其中一方的余额耗尽,就没法向对方转账,除非对方先转钱给他,这个时候就要重新注入资金或打开新的通道。

此外,如果是在复杂的多跳网络中,某些中间节点余额不足无法向外转账,可能导致整个支付路径失败。这是闪电网络的痛点之一,对此的解决方案无外乎提供高效的流动性注入方案,确保大多数节点都能随时注入资金。但是,在BTC闪电网络中,注入流动性、打开或关闭通道的步骤都在BTC链上进行,若BTC网络手续费极高,会对支付通道的UX产生不良影响。假设你想开启一个容量为100美元的通道,但建立通道的操作花掉10美元手续费,那这个通道在初始化时就磨了你 10%的资金,这是让大多数人无法接受的;对于流动性注入等工作也是同理。对此Fiber拥有非常显著的优势。首先CKB的TPS远比BTC高得多,手续费可以达到美分级别;其次,为了应对流动性不足导致无法转账的问题,Fiber计划与Mercury layer合作推出新的解决方案,使得流动性注入的工作可以摆脱链上操作,解决UX和成本问题。

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

声明:

  1. 本文转载自[极客web3],原文标题《系统解读Fiber:把闪电网络嫁接到CKB上的宏大实验》著作权归属原作者[Faust & Nickqiao,极客web3],如对转载有异议,请联系Gate Learn团队,团队会根据相关流程尽速处理。
  2. 免责声明:本文所表达的观点和意见仅代表作者个人观点,不构成任何投资建议。
  3. 文章其他语言版本由Gate Learn团队翻译, 在未提及Gate.io的情况下不得复制、传播或抄袭经翻译文章。

系统解读Fiber:闪电网络嫁接到CKB

进阶9/10/2024, 1:19:17 PM
本文深入分析了基于 CKB 的光纤网络闪电网路方案,探讨了其在支付通道、WatchTower、多跳路由和跨域支付等方面的技术创新,文中详细讲解了光纤穿透技术优化来提升用户体验、隐私保护和安全性,同时展望了其与比特币闪电网络互联互通的潜力。

转发原文标题《系统解读Fiber:把闪电网络嫁接到CKB上的宏大实验》

8月23日,CKB官方发布了基于CKB的闪电网络方案——Fiber Network(光纤网络),这则新闻一经传播,很快便在社区里引发了热议,让CKB价格在一天内快速上涨了近30%。新闻之所以会引起强烈反响,主要在于闪电网络具有强大的叙事魅力,而CKB的Fiber对传统闪电网络进行了方案升级,针对后者做出了诸多改进。比如,Fiber可以原生支持多类型资产,如CKB、BTC、稳定币等,而且CKB的手续费远比BTC低、响应速度快,Fiber可以借此在UX方面取得突破。而在隐私和安全层面,Fiber也做出了不少优化。此外,Fiber和BTC闪电网络可以互联互通,形成更大的P2P网络,此前的线下活动中,CKB官方甚至表示,将在Fiber和闪电网络中设置10万个物理节点,以促进P2P支付网络的完善与进步。毫无疑问这是一个空前宏大的故事。

如果CKB官方的愿景得以在未来实现,无论对闪电网络还是对CKB乃至比特币生态而言,都将是巨大的利好。根据mempool的数据,当前BTC闪电网络中安置了3亿多美元的资金,节点数量约为1.2万个,彼此之间构建了近5万条支付通道。

而在spendmybtc.com上,我们还可以看到越来越多的商家在支持闪电网络收付款,只要BTC的被认可度越来越强,闪电网络和Fiber等链下支付方案的崛起势能必将与日俱增。本着对Fiber的技术方案进行系统性解读的目的,《极客Web3》写作了这篇关于Fiber整体方案的研报。作为基于CKB的闪电网络实现方案,Fiber的原理与比特币闪电网络大面上一致,但在很多细节上进行了优化。Fiber的总体架构包括以下四个核心部分:支付通道、WatchTower、多跳路由、跨域支付。下面我们先展开解释下最重要的“支付通道”。

闪电网络和Fiber的基石:支付通道

支付通道本质是将转账/交易都挪到链下处理,过段时间再将最终状态提交到链上进行“结算”。由于交易是在链下即时完成的,往往可以摆脱BTC等主链的性能限制。假设Alice和Bob共同开启了一个通道,他们先在链上构建多签账户,向里面存一些钱,比如Alice和Bob各存入100块,作为在链下通道中各自的余额。接下来双方可以在通道里进行多笔转账,等退出通道时,再把最终的余额同步到链上,由多签账户给双方打款,即“结算”。

比如说,双方开始时各有100块,之后Alice向Bob转账50,之后Alice又向Bob转了10块钱,而后Bob又给Alice转了30块,最终双方余额变为:Alice—70,Bob—130。大家不难发现,二人的余额总和不变,上图中算盘珠子来回推拉的案例可以很好解释这点。如果有一方退出通道,就把当前的余额Alice:70/Bob:130同步到链上,把多签账户中的200块钱按各自余额转给二人,完成结算。上述流程看起来简单,但在实操中要考虑很多复杂情况。首先,你其实并不知道对方想在何时退出通道,拿上面的例子来说,Bob可以在第二笔转账完成后就退出,亦或是第一笔转账后就退出,而支付通道不会对此强制要求,是允许参与方自由退出的。要实现这一点,要假设随时会有人退出,任意一方都可能向链上提交最终余额,进行结算。所以有一个“承诺交易”的设定,“承诺交易”用于声明通道内双方的最新余额,每笔转账发生时都会生成对应的“承诺交易”。你如果要退出通道,可以向链上提交最新的一笔“承诺交易”,把自己应得的钱从多签账户中抽出来。

我们可以记下这个结论:承诺交易用于对通道中双方的余额进行链上结算,任何一方随时可以把最新的承诺交易上链,然后退出通道。但这里有一个重要的作恶场景:Bob可以把过期的余额和承诺交易提交到链上,比如上图中的Commit Tx3生成后,Bob的余额为130,但Bob为了给自己牟利,把过期的Commit Tx2提交到链上,声明自己的余额是160,而这个余额状态不是实时的,这就是典型的“双重支付”。为了防止此类双花场景,要有相应的惩罚措施,关于惩罚措施的设计恰好是整个1对1支付通道的核心,理解了这部分才能真正理解支付通道。在通道的设计里,如果任何一方把过期的状态和Commit Tx提交到链上,不但不会如愿以偿,反而会被另一方把全部资金都抽走。这里用到了“不对称的承诺交易”和“撤销密钥”,这两个概念非常重要。我们先对“不对称的承诺交易”进行解释。以前面的Commit Tx3为例,下图是承诺交易的示意图:

这笔承诺交易由Bob构造,然后发给Alice让对方自行处理。如图所示,这就是一笔比特币转账,声明把多签账户中70块钱给Alice,130块钱给Bob,但钱的解锁条件“不对称”,Alice面对的限制更苛刻,对Bob更有利。Alice收到Bob构造的承诺交易后,可以附上自己的签名满足2/2多签,之后Alice可以主动把“承诺交易”提交上链,这样就可以退出通道,如果她不这么做就可以继续在通道中转账。这里我们要注意:这笔承诺交易是Bob主动构造的,其中条件对Alice不利,Alice只能接受/拒绝,我们要想办法留给Alice一些自主权。在支付通道的设计中,只有Alice自己能把“对自己不利”的承诺交易放到链上触发,这是因为承诺交易要凑足2/2多签,Bob在本地构造交易后只有自己的签名,没有Alice签名。而Alice可以“只接收Bob的签名,但不把自己的签名发给他”,这就好比一份对你不利的合同,需要你和别人双签,对方先签名后把文件给你,你可以不让对方拿到签名。你想让合同生效就签名然后公示,不想生效就不签名或不公示。显然在上面的案例中,Alice有办法限制Bob。

然后到了重点:通道中每次有转账发生后,会有一对承诺交易出现,有两个类似镜像的版本,就像下面这样。Alice和Bob可以分别构造对自己有利的承诺交易,在其中声明余额/退出时应得的金额,然后把交易内容发给对方处理。有趣的是,这两笔承诺交易声明的“退出时所得金额”相同,但取款条件不同,这正是前文“不对称的承诺交易”的来历。

前面我们解释过,每笔承诺交易都要2/2多签才能生效,Bob本地构造的、对自己有利的承诺交易不满足2/2多签,而满足2/2多签的承诺交易扣在Alice手上,Bob没法提交,只能由Alice提交,这就形成了制衡。反过来也是类似的道理。如此一来,Alice和Bob只能主动提交对自己不利的承诺交易,只要双方中有一人把Commit Tx提交上链且生效,通道就被关闭。而回到最开始说的“双重支付”场景,如果有人把过期的承诺交易提交上链,会发生什么呢?这里要提到一个叫“撤销密钥”的东西。假如Bob把过期的承诺交易提交上链,Alice可以通过撤销密钥把Bob应得的钱提走。

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

而对于最新的Tx3,Alice没有其撤销密钥,只有在未来Tx4出现后,Alice才能获取Tx3的撤销密钥。这是由公私钥密码学和UTXO的特性决定的,碍于篇幅本文不会深入解释撤销密钥的实现原理。我们可以记住结论:Bob只要敢把过期的承诺交易提交上链,Alice就可以用撤销密钥把Bob的钱拿走,作为惩罚。反过来如果Alice作恶了,Bob也可以如此惩罚她。这样一来,1对1的支付通道可以有效避免双重支付,只要参与方都是理性人,就都不敢作恶。关于支付通道这块,基于CKB的Fiber相比于比特币闪电网络有大幅优化,能够原生支持多类型资产的转账/交易,比如CKB、BTC和RGB++稳定币,而闪电网络只能原生支持比特币,Taproot Asset上线后比特币闪电网络还是无法原生支持非BTC资产,只能间接支持稳定币。

(图片来源:Dapangdun)此外,由于Fiber依赖的Layer1主链是CKB,打开和关闭通道的操作消耗的手续费低得多,不会像BTC闪电网络那样磨掉用户很多手续费,这是其在UX上的明显优势。

全天候的保安:WatchTower瞭望塔

上文中讲到的撤销密钥有个问题:通道参与方要时刻监视对方,防止对方偷摸把过期的承诺交易提交上链。但没人能保证24小时在线,如果你离线的时候对方作恶,该怎么办?对此,Fiber和比特币闪电网络都有WatchTower瞭望塔的设计,会帮用户全天候监视链上活动。一旦通道中有人提交了过期的承诺交易,WatchTower会及时处理,从而确保通道和资金的安全。具体的解释如下:对于每笔过期的承诺交易,Alice或Bob可以事先把对应的惩罚交易构造好(用撤销密钥处理过期的承诺交易,受益人声明为自己),然后把惩罚交易的明文发给WatchTower。一旦WatchTower监测到有人把过期的承诺交易提交上链,它就会把惩罚交易也提交上链,进行针对性的惩罚。

Fiber为了保护通道参与者的隐私,只让用户把“过期承诺交易的hash+惩罚交易明文”发给WatchTower,这样WatchTower一开始并不知道承诺交易的明文,只知道其hash。除非有人真的把过期承诺交易提交到链上,WatchTower才会看到明文,然后紧随其后把惩罚交易提交上链。这样一来,除非真的有人作恶,否则WatchTower不会看到通道参与者的交易记录(即便看到了也只能看到其中一笔)。这里我们要提一下Fiber相比于比特币闪电网络的优化。上述与撤销密钥相关的惩罚机制被称为“LN-Penalty”,而比特币闪电网络的LN-Penalty有明显缺点:WatchTower要保存所有的过期承诺交易Hash和对应的撤销密钥,这会造成不小的存储压力。早在2018年,比特币社区就提出了一种叫 “eltoo” 的方案来解决上述问题,但需要比特币分叉支持SIGHASH_ANYPREVOUT操作码。思路是当过期的承诺交易上链后,最新的承诺交易能对其进行惩罚,这样用户只保存最新的承诺交易即可。但是SIGHASH_ANYPREVOUT操作码至今还未激活,该方案迟迟不能落地。而Fiber实现了Daric协议,修改了撤销密钥的设计,让同一个撤销密钥适用于多笔过期的承诺交易。这样可以大幅减少WatchTower以及用户客户端的存储压力。网络中的交通系统:多跳路由和HTLC/PTLC前面讲的支付通道仅适用于1对1交易的场景,而闪电网络支持多跳支付,即通过中间节点来路由,让未直接建立通道的两方间能够转账,比如说Alice和Ken没有通道,但Ken和Bob间有通道,Bob和Alice间有通道,Bob就可以作为Alice和Ken之间的中间节点,让Alice和Ken之间可以发生转账互动。而“多跳路由”就是指通过多个中间人搭建转账路径。“多跳路由”能够增强网络的灵活性和覆盖范围。不过,发送方需要了解所有的公共节点和通道的状态。在Fiber中,所有公开通道即网络结构是完全公开的,任何一个节点都可以获知其它节点掌握的网络信息。由于闪电网络中整个网络的状态是不断变化的,Fiber会使用Dijkstra最短路径算法找到最短路由路径,让中间人数量尽可能的少,然后在两方之间架设转账路径。

不过这里面要解决中间节点的信用问题:你怎么保证他是诚实的,比如前面提到Alice和Ken之间有中间人Bob,Alice现在要给Ken转账100块,Bob随时可能扣住这笔钱。对此要有办法防止中间人作恶,HTLC和PTLC便用于解决此类问题。假设Alice要向Daniel付款100块,但他们之间没有建立通道。而Alice发现,可以通过Bob和Carol这两个中间人向Daniel付款。这里面要引入HTLC作为支付渠道,首先Alice向Daniel发起请求,然后Daniel发给Alice一个哈希r,但Alice不知道r对应的明文R。

之后,Alice在与Bob的通道中,通过HTLC构造支付条款:Alice愿意付给Bob 102块,但Bob要在30分钟内说出密钥R,否则Alice会把钱撤回。同理Bob再跟Carol创建HTLC:Bob会向Carol支付101块,但Carol要在25分钟内说出密钥R,否则Bob会把钱撤回。Carol如法炮制,在和Daniel的通道中创建HTLC:Carol愿意支付100块,但Daniel要在20分钟内告诉她R的明文,否则钱会被Carol收回。Daniel明白,Carol索要的密钥R其实是Alice想要的,因为除了Alice没人会在意R的内容是啥。所以Daniel会配合Carol,告诉她R的内容,并从Carol那拿到100块,这样子Alice就实现了目标:给Daniel 100块钱。之后的事情不难想象:Carol把密钥R告诉Bob,拿到101块钱;Bob再把密钥R告诉Alice,拿到102块钱。我们观测所有人的得失,可以看出Alice失去102块钱,Bob和Carol净赚1块钱,Daniel得到100块。这里面Bob和Carol赚的1块钱就是它们从Alice那抽的手续费。

即使上面的支付路径中某个人卡住,比如Carol没有把密钥R告知下游的Bob,也不会让Bob有损失:过时间后Bob可以把构建的HTLC撤回。对于Alice也是同理。但闪电网络也有问题:路径不宜过长,如果路径太长中间人太多,会降低付款的可靠性:某些中间人可能离线,亦或是余额不足以构建特定HTLC(比如前面案例中每个中间人至少要有100多块钱)。所以在路径中每增加一个中间节点,都会提高出错的可能性。此外,HTLC可能泄露隐私。虽然洋葱路由可以适当保护隐私,比如把每一跳的路由信息都加密,除了最初发起者Alice外,每个人只知道相邻的上下家,不知道完整的路径,但实际上HTLC还是容易被推断出关联性。我们以上帝视角看下面这个路径

假设Bob和Daniel是同一实体控制的两个节点,每天都会收到很多人发来的HTLC。它们发现,Alice和Carol每次发来HTLC后,要获知的密钥总是一致的,而与Daniel相连的下家Eve总是知道密钥R的内容。因此Daniel和Bob能猜到,Alice和Eve之间存在支付路径,因为它们总是和相同的密钥扯上关系,借此推断出Alice和Eve之间的关系并施加监视。对此,Fiber采用了PTLC,在HTLC基础上进行了隐私改良,支付路径中每道PTLC都用不同的密钥来解锁,单纯观测PTLC索要的密钥无法判断出彼此的关联性。通过将PTLC与洋葱路由结合,可以让Fiber成为隐私支付的理想方案。此外,传统的闪电网络存在“替代交易循环攻击”(replacement cycling attack)场景,可以让支付路径中间人的资产被盗。这一发现甚至让开发者Antoine Riard退出了闪电网络的开发工作。到目前为止比特币闪电网络尚未有根本措施解决这个问题,已然成为一个痛点。目前,CKB官方通过在交易池层面进行改良,可以让Fiber解决上述攻击场景。由于替代交易循环攻击及解决方案比较烧脑,本文不打算继续占用篇幅做出解释,感兴趣的可以阅读BTCStudy的下述文章以及阅读CKB官方的相关资料。

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

利用HTLC和PTLC,Fiber可以和比特币闪电网络实现跨域支付,且能够保证“跨域行为的原子性”,即跨域相关的全部步骤要么全成功,要么全失败,不会有部分成功部分失败的情况。跨域原子性有了保障后,可以保证跨域本身不会导致财产损失,这样可以让Fiber与比特币闪电网络互联起来,比如可以在Fiber和闪电网络组成的混合网络中搭建支付路径,直接在Fiber中向BTC闪电网络中的用户转账(接收端仅限BTC),还可以在Fiber中用CKB和RGB++资产在BTC闪电网络中换取等价比特币。我们简单说下原理:假设Alice在Fiber网络内运行了节点,而Bob在比特币闪电网络中运行节点,Alice想向Bob转账一些钱,它可以通过跨域中转商Ingrid实现这笔转账。Ingrid会分别在Fiber和BTC闪电网络内运行节点,充当转账路径中的中间人。

如果Bob想收到1个BTC,Alice可以与Ingrid协商兑换比率,用1个CKB换1个BTC。然后Alice在Fiber中向Ingrid发送1.1个CKB,而后Ingrid在BTC闪电网络中向Bob发1个BTC,而Ingrid会留下0.1个CKB作为手续费。这里面具体的操作方式,其实就是在Alice和Bob与Ingrid之间建立支付路径,即Alice—>Ingrid—>Bob,然后会用到HTLC。类似道理其实前面有讲过,Bob为了收到钱,必须告诉Ingrid密钥R的内容。一旦Ingrid获取了密钥R,就可以解锁Alice锁在HTLC里的钱。需要注意,这两笔分别发生于BTC闪电网络和Fiber中的跨域行为是原子性的,意味着要么两个HTLC都被解锁,跨域支付顺利执行。要么都不解锁,跨域支付失败,而不会出现Alice给了钱而Bob收不到钱的情况。(其实中间人Ingrid可以在知道密钥R后不去解锁Alice的HTLC,但这样受损的是Ingrid这个中间人,而不是用户Alice,所以Fiber的设计对于用户是安全的)这种方式不需要信任第三方,即可在不同的P2P网络间实现转账行为,几乎不需要任何修改。

Fiber相比于BTC闪电网络的其他优点

前面我们提到,Fiber支持CKB原生资产,以及RGB++资产(尤其是稳定币),这使得它在即时支付场景中有极大潜力,更适合日常小额支付需求。此外,比特币闪电网络有一个主要痛点,就是是流动性管理问题。大家可能记得我们最开始说的,支付通道中总体余额是固定的,若其中一方的余额耗尽,就没法向对方转账,除非对方先转钱给他,这个时候就要重新注入资金或打开新的通道。

此外,如果是在复杂的多跳网络中,某些中间节点余额不足无法向外转账,可能导致整个支付路径失败。这是闪电网络的痛点之一,对此的解决方案无外乎提供高效的流动性注入方案,确保大多数节点都能随时注入资金。但是,在BTC闪电网络中,注入流动性、打开或关闭通道的步骤都在BTC链上进行,若BTC网络手续费极高,会对支付通道的UX产生不良影响。假设你想开启一个容量为100美元的通道,但建立通道的操作花掉10美元手续费,那这个通道在初始化时就磨了你 10%的资金,这是让大多数人无法接受的;对于流动性注入等工作也是同理。对此Fiber拥有非常显著的优势。首先CKB的TPS远比BTC高得多,手续费可以达到美分级别;其次,为了应对流动性不足导致无法转账的问题,Fiber计划与Mercury layer合作推出新的解决方案,使得流动性注入的工作可以摆脱链上操作,解决UX和成本问题。

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

声明:

  1. 本文转载自[极客web3],原文标题《系统解读Fiber:把闪电网络嫁接到CKB上的宏大实验》著作权归属原作者[Faust & Nickqiao,极客web3],如对转载有异议,请联系Gate Learn团队,团队会根据相关流程尽速处理。
  2. 免责声明:本文所表达的观点和意见仅代表作者个人观点,不构成任何投资建议。
  3. 文章其他语言版本由Gate Learn团队翻译, 在未提及Gate.io的情况下不得复制、传播或抄袭经翻译文章。
Bắt đầu giao dịch
Đăng ký và giao dịch để nhận phần thưởng USDTEST trị giá
$100
$5500
It seems that you are attempting to access our services from a Restricted Location where Gate.io is unable to provide services. We apologize for any inconvenience this may cause. Currently, the Restricted Locations include but not limited to: the United States of America, Canada, Cambodia, Thailand, Cuba, Iran, North Korea and so on. For more information regarding the Restricted Locations, please refer to the User Agreement. Should you have any other questions, please contact our Customer Support Team.