Systematic Interpretation of Fiber: A Grand Experiment of Grafting Lightning Network onto CKB

All articles2个月前更新 wyatt
20 0 0
这可能是关于 Fiber 的研报中最系统的一篇。

撰文:Faust & Nickqiao,极客 web3

8 月 23 日,CKB 官方发布了基于 CKB 的闪电网络方案——Fiber Network(光纤网络),这则新闻一经传播,很快便在Community里引发了热议,让 CKB 价格在一天内快速上涨了近 30%。新闻之所以会引起强烈反响,主要在于闪电网络具有强大的叙事魅力,而CKB 的 Fiber 对传统闪电网络进行了方案升级,针对后者做出了诸多改进。

比如,Fiber 可以原生支持多类型资产,如 CKB、BTC、稳定币等,而且 CKB 的手续费远比 BTC 低、响应速度快,Fiber 可以借此在 UX 方面取得突破。而在隐私和Safety层面,Fiber 也做出了不少优化。

此外,Fiber 和 BTC 闪电网络可以互联互通,形成更大的 P2P 网络,此前的线下活动中,CKB 官方甚至表示,将在 Fiber 和闪电网络中设置 10 万个物理节点,以促进 P2P 支付网络的完善与进步。毫无疑问这是一个空前宏大的故事。

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

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

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

而在 spendmybtc.com 上,我们还可以看到越来越多的商家在支持闪电网络收付款,只要 BTC 的被认可度越来越强,闪电网络和 Fiber 等链下支付方案的崛起势能必将与日俱增。

本着对 Fiber 的技术方案进行系统性解读的目的,《极客 Web3》写作了这篇关于 Fiber 整体方案的研报。作为基于 CKB 的闪电网络实现方案,Fiber 的原理与比特币闪电网络大面上一致,但在很多细节上进行了优化。

Fiber 的总体架构包括以下四个核心部分:支付通道、WatchTower、多跳路由、跨域支付。下面我们先展开解释下最重要的「支付通道」。

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

支付通道本质是将转账 / 交易都挪到链下处理,过段时间再将最终状态提交到链上进行「结算」。由于交易是在链下即时完成的,往往可以摆脱 BTC 等主链的性能限制。

假设 Alice 和 Bob 共同开启了一个通道,他们先在链上构建多签账户,向里面存一些钱,比如 Alice 和 Bob 各存入 100 块,作为在链下通道中各自的余额。接下来双方可以在通道里进行多笔转账,等退出通道时,再把最终的余额同步到链上,由多签账户给双方打款,即「结算」。

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

比如说,双方开始时各有 100 块,之后 Alice 向 Bob 转账 50,之后 Alice 又向 Bob 转了 10 块钱,而后 Bob 又给 Alice 转了 30 块,最终双方余额变为:Alice—70,Bob—130。大家不难发现,二人的余额总和不变,上图中算盘珠子来回推拉的案例可以很好解释这点。

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

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

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

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

我们可以记下这个结论:承诺交易用于对通道中双方的余额进行链上结算,任何一方随时可以把最新的承诺交易上链,然后退出通道。

但这里有一个重要的作恶场景:Bob 可以把过期的余额和承诺交易提交到链上,比如上图中的 Commit Tx3 生成后,Bob 的余额为 130,但 Bob 为了给自己牟利,把过期的 Commit Tx2 提交到链上,声明自己的余额是 160,而这个余额状态不是实时的,这就是典型的「双重支付」。

为了防止此类双花场景,要有相应的惩罚措施,关于惩罚措施的设计恰好是整个 1 对 1 支付通道的核心,理解了这部分才能真正理解支付通道。在通道的设计里,如果任何一方把过期的状态和 Commit Tx 提交到链上,不但不会如愿以偿,反而会被另一方把全部资金都抽走。

这里用到了「不对称的承诺交易」和「撤销密钥」,这两个概念非常重要。我们先对「不对称的承诺交易」进行解释。以前面的 Commit Tx3 为例,下图是承诺交易的示意图:

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

这笔承诺交易由 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。

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

然后到了重点:通道中每次有转账发生后,会有一对承诺交易出现,有两个类似镜像的版本,就像下面这样。Alice 和 Bob 可以分别构造对自己有利的承诺交易,在其中声明余额 / 退出时应得的金额,然后把交易内容发给对方处理。

有趣的是,这两笔承诺交易声明的「退出时所得金额」相同,但取款条件不同,这正是前文「不对称的承诺交易」的来历。

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

前面我们解释过,每笔承诺交易都要 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 要赶在时间锁范围内行动)。

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

而对于最新的 Tx3,Alice 没有其撤销密钥,只有在未来 Tx4 出现后,Alice 才能获取 Tx3 的撤销密钥。这是由公私钥密码学和 UTXO 的特性决定的,碍于篇幅本文不会深入解释撤销密钥的实现原理。

我们可以记住结论:Bob 只要敢把过期的承诺交易提交上链,Alice 就可以用撤销密钥把 Bob 的钱拿走,作为惩罚。反过来如果 Alice 作恶了,Bob 也可以如此惩罚她。这样一来,1 对 1 的支付通道可以有效避免双重支付,只要参与方都是理性人,就都不敢作恶。

关于支付通道这块,基于 CKB 的 Fiber 相比于比特币闪电网络有大幅优化,能够原生支持多类型资产的转账 / 交易,比如 CKB、BTC 和 RGB++ 稳定币,而闪电网络只能原生支持比特币,Taproot Asset 上线后比特币闪电网络还是无法原生支持非 BTC 资产,只能间接支持稳定币。

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

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

图片来源:Dapangdun

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

全天候的保安:WatchTower 瞭望塔

上文中讲到的撤销密钥有个问题:通道参与方要时刻监视对方,防止对方偷摸把过期的承诺交易提交上链。但没人能保证 24 小时在线,如果你离线的时候对方作恶,该怎么办?

对此,Fiber 和比特币闪电网络都有 WatchTower 瞭望塔的设计,会帮用户全天候监视链上活动。一旦通道中有人提交了过期的承诺交易,WatchTower 会及时处理,从而确保通道和资金的Safety.

具体的解释如下:对于每笔过期的承诺交易,Alice 或 Bob 可以事先把对应的惩罚交易构造好(用撤销密钥处理过期的承诺交易,受益人声明为自己),然后把惩罚交易的明文发给 WatchTower。一旦 WatchTower 监测到有人把过期的承诺交易提交上链,它就会把惩罚交易也提交上链,进行针对性的惩罚。

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

Fiber 为了保护通道参与者的隐私,只让用户把「过期承诺交易的 hash+ 惩罚交易明文」发给 WatchTower,这样 WatchTower 一开始并不知道承诺交易的明文,只知道其 hash。除非有人真的把过期承诺交易提交到链上,WatchTower 才会看到明文,然后紧随其后把惩罚交易提交上链。这样一来,除非真的有人作恶,否则 WatchTower 不会看到通道参与者的交易记录(即便看到了也只能看到其中一笔)。

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

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

andFiber 实现了 Daric 协议,修改了撤销密钥的设计,让同一个撤销密钥适用于多笔过期的承诺交易。这样可以大幅减少 WatchTower 以及用户客户端的存储压力。

网络中的交通系统:多跳路由和 HTLC/PTLC

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

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

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

不过这里面要解决中间节点的信用问题:你怎么保证他是诚实的,比如前面提到 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。

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

之后,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 那抽的手续费。

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

即使上面的支付路径中某个人卡住,比如 Carol 没有把密钥 R 告知下游的 Bob,也不会让 Bob 有损失:过时间后 Bob 可以把构建的 HTLC 撤回。对于 Alice 也是同理。

但闪电网络也有问题:路径不宜过长,如果路径太长中间人太多,会降低付款的可靠性:某些中间人可能离线,亦或是余额不足以构建特定 HTLC( 比如前面案例中每个中间人至少要有 100 多块钱 )。所以在路径中每增加一个中间节点,都会提高出错的可能性。

also,HTLC 可能泄露隐私。虽然洋葱路由可以适当保护隐私,比如把每一跳的路由信息都加密,除了最初发起者 Alice 外,每个人只知道相邻的上下家,不知道完整的路径,但实际上 HTLC 还是容易被推断出关联性。我们以上帝视角看下面这个路径

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

假设 Bob 和 Daniel 是同一实体控制的两个节点,每天都会收到很多人发来的 HTLC。它们发现,Alice 和 Carol 每次发来 HTLC 后,要获知的密钥总是一致的,而与 Daniel 相连的下家 Eve 总是知道密钥 R 的内容。因此 Daniel 和 Bob 能猜到,Alice 和 Eve 之间存在支付路径,因为它们总是和相同的密钥扯上关系,借此推断出 Alice 和 Eve 之间的关系并施加监视。

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

also,传统的闪电网络存在「替代交易循环攻击」(replacement cycling attack)场景,可以让支付路径中间人的资产被steal.这一发现甚至让开发者 Antoine Riard 退出了闪电网络的开发工作。到目前为止比特币闪电网络尚未有根本措施解决这个问题,已然成为一个痛点。

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

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

总体而言,无论是在隐私还是在Safety层面,Fiber 都比传统的闪电网络进行了大幅改良。

Fiber 与比特币闪电网络间的跨域原子支付

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

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

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

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

如果 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++ 资产(尤其是稳定币),这使得它在即时支付场景中有极大潜力,更适合日常小额支付需求。

also,比特币闪电网络有一个主要痛点,就是是流动性管理问题。大家可能记得我们最开始说的,支付通道中总体余额是固定的,若其中一方的余额耗尽,就没法向对方转账,除非对方先转钱给他,这个时候就要重新注入资金或打开新的通道。

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

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

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

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

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

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

The article comes from the Internet:Systematic Interpretation of Fiber: A Grand Experiment of Grafting Lightning Network onto CKB

相关推荐: 黑悟空让 Web3 人扎心了

Web2 的神猴在嘲笑 Web3 的土狗。 作者:Biteye 核心贡献者 Viee 编辑:Biteye 核心贡献者 Crush 《黑神话:悟空》一夜之间成为顶流,上线首日霸榜 Steam 在线人数第一,创单机游戏在线人数纪录。 TON生态Meme币DOGS,…

share to
© 版权声明

相关文章