8月23日,CKB官方发布了基于CKB的闪电网络改进方案——Fiber Network(光纤网络),引起了强烈反响,CKB价格在一天内上涨了近30% 关于Fiber的讨论目前是热点,《极客web3》写了专题研报,本推文是对研报的总结性概括(略去了很多细节)
先说结论:Fiber对传统闪电网络进行了升级,做出了诸多改进 比如,Fiber原生支持多类型资产,如CKB、BTC、稳定币等,而且CKB的手续费远比BTC低、响应速度快,依赖于CKB的Fiber可以在UX方面取得突破 在隐私和安全层面,Fiber也有优化 此外,Fiber和BTC闪电网络可以互联互通形成更大的P2P网络
此前的线下活动中,CKB官方甚至表示,将在Fiber和闪电网络中设置10万个物理节点,以促进P2P支付网络的完善与进步 毫无疑问这是空前宏大的故事
如果Fiber的愿景在未来实现,对CKB乃至比特币生态都是巨大利好 根据mempool数据,当前BTC闪电网络中安置了3亿多美元资金,节点数量约1.2万个,构建了近5万条支付通道 而在spendmybtc网站上可以看到,越来越多的商家在支持闪电网络收付款 闪电网络和Fiber等链下支付方案的崛起势能必将与日俱增
接下来我们开始说Fiber的技术架构 Fiber实质是把闪电网络嫁接到CKB上,原理与闪电网络大面一致,但在很多细节上有优化 Fiber的总体架构包括以下四个核心部分:支付通道、WatchTower、多跳路由、跨域支付 下面先解释下最重要的“支付通道”
支付通道是将交易挪到链下处理,过段时间将最终状态提交到链上进行结算 假设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,这个余额状态不是实时的,这就是典型的“双重支付”
为了防止双花,要有相应的惩罚措施 在支付通道的设计里,如果任何一方把过期的状态和Commit Tx提交到链上,另一方可以通过“撤销密钥”让过期的承诺交易无效,同时抽走作恶者的资金 所以作恶者会被另一方把全部资金都抽走(这里面的细节比较复杂,感兴趣的可以去公号看原文)
我们可以记住结论:Bob只要敢把过期的承诺交易提交上链,Alice就可以用撤销密钥把Bob的钱拿走,作为惩罚。反过来如果Alice作恶了,Bob也可以如此惩罚她 这样一来,1对1的支付通道可以有效避免双重支付,只要参与方都是理性人,就都不敢作恶
关于支付通道的功能性,基于CKB的Fiber相比于比特币闪电网络有大幅优化,原生支持多类型资产的转账/交易,比如CKB、BTC和RGB++稳定币 而闪电网络只能原生支持比特币 Taproot Asset上线后比特币闪电网络还是无法原生支持非BTC资产,只能间接支持稳定币
此外,Fiber依赖的Layer1主链是CKB,打开和关闭通道的操作消耗的手续费低得多,不会像BTC闪电网络那样磨掉用户很多手续费 这是其在UX上的明显优势
全天候的保安:WatchTower瞭望塔 上文中讲到的撤销密钥有个问题: 通道参与方要时刻监视对方,防止对方把过期的承诺交易上链。但没人能24小时在线,你离线了怎么办? 对此,Fiber和比特币闪电网络有WatchTower的设计,帮用户全天候监视链上活动,及时处理掉过期的承诺交易
比特币闪电网络在惩罚措施上有明显缺陷: WatchTower/客户端要保存所有的过期承诺交易Hash和撤销密钥,造成不小的存储压力 比特币社区的优化方案至今没有激活 而Fiber修改了撤销密钥的设计,让同一个撤销密钥适用于多笔过期的承诺交易,这样可以大幅减少WatchTower以及客户端的存储压力
多跳路由和HTLC/PTLC 支付通道仅适用于1对1交易,而闪电网络支持多跳支付,让未直接建立通道的两方间能够转账 比如说Alice和Ken没有通道,但Ken和Bob有通道,Bob和Alice间有通道,Bob就可以作为Alice和Ken之间的中间节点,让Alice和Ken之间可以转账互动 “多跳路由”就是通过多个中间人搭建转账路径
这里要解决中间节点的信用问题:你怎么保证中间人不会拿钱就跑路,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的明文,否则钱会被收回 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还是容易被推断出关联性 这是因为路径中所有的HTLC都关联着相同的密钥R,容易被推断出相关性 Fiber通过PTLC解决HTLC的这个问题,让路径中不同的PTLC用不同的密钥
此外,传统闪电网络存在“替代交易循环攻击”(replacement cycling attack),可以让支付路径中间人的资产被盗 这一发现让开发者Antoine Riard退出了闪电网络的开发工作。到目前为止比特币闪电网络尚未有根本措施解决这个问题,已然成为一个痛点 而CKB通过对交易池进行改良,可以让解决上述攻击场景
Fiber与闪电网络的跨域支付 利用HTLC/PTLC,Fiber可以和闪电网络实现跨域支付,且能保证“原子性”:相关步骤要么全成功要么全失败,不会部分成功部分失败 原子性有保障,可以让Fiber与闪电网络互联组成混合网络,直接在Fiber中向闪电网络用户转账 还可以在Fiber中用RGB++资产在闪电网络中换取比特币
Fiber相比于闪电网络的其他优点 前面提到,Fiber支持CKB和RGB++资产(尤其是稳定币),在功能性上强于比特币 此外,比特币闪电网络有一个痛点,就是流动性管理问题 支付通道中总体余额是固定的,若一方余额耗尽,没法向对方转账,除非对方先转钱给他,这时就要重新注入资金或打开新通道
此外,如果在复杂的多跳网络中,中间节点余额不足无法向外转账,可能导致支付路径失败 对此的解决方案无外乎提供高效的流动性注入方案,确保大多数节点都能随时注入资金 但在BTC闪电网络中,注入流动性、打开或关闭通道都在链上进行,若BTC网络手续费极高,会对支付通道的UX产生不良影响
对此Fiber拥有非常显著的优势。首先CKB的TPS远比BTC高得多,手续费可以达到美分级别 其次,为了应对流动性不足导致无法转账的问题,Fiber计划与Mercury layer合作推出新的解决方案,使得流动性注入的工作可以摆脱链上操作,解决UX和成本问题
至此,我们系统的梳理了Fiber的总体技术架构,其和比特币闪电网络的大致对比总结如下图所示 由于Fiber和闪电网络本身涉及的知识点太多太杂,单纯一篇文章可能无法覆盖到方方面面,未来我们将针对闪电网络和Fiber的话题推出系列文章,大家敬请期待
在此艾特本研报的两位作者 @Nickqiaoo @faustliu1997
+ There are no comments
Add yours