Fiber Network: 基于 CKB 实现的闪电网络
最近一年我在做 Fiber Network 这个新的开源项目,上个月底刚好主网第一个版本发布:

这个项目的挑战还是挺大的,上主网只是一个新的开始。我在开发过程中学到了很多东西,这是我前段时间写的一篇关于 Fiber 的大致介绍。
Fiber 简介
Fiber 是基于 CKB 构建的闪电网络协议,旨在实现快速、安全且高效的链下支付解决方案。借鉴了比特币闪电网络的核心理念,Fiber 针对 CKB 的独特架构进行了深度优化,提供低延迟、高吞吐量的支付通道,适用于微支付和高频交易等场景。与传统的闪电网络不同,Fiber 拥有多项关键特性:
- 多资产支持:不再局限于单一币种,能够处理多种资产交易,为复杂的跨链金融应用铺平道路。
- 可编程性:基于 CKB 的图灵完备智能合约,支持更复杂的条件执行和业务逻辑,拓展了支付通道的应用边界。
- 跨链互操作性:原生设计支持与其他 UTXO 链(如比特币)的闪电网络交互,提升了链间资产流动性和网络兼容性。
- 更灵活的状态管理:得益于 CKB 的 Cell 模型,Fiber 可以更高效地管理通道状态,降低链下交互的复杂度。
在这篇文章中,我们将从源码层面介绍 Fiber 的整体架构和主要模块,以及项目的后续展望和规划。
前提知识
- Rust, and actor framework,Fiber 是一个完全由 Rust 编程语言所实现的项目,另外我们在实现中采用了 actor model 的模式,依赖社区的项目 ractor 框架。
- Lightning network,Fiber 的基本思想沿用了 Bitcoin 的闪电网络,基本原理是一致的,所以 Mastering lightning network 和 Bolts: lightning/bolts 是非常有用的参考资料。
- CKB transaction and contract,Fiber 会通过 RPC 与 CKB node 进行交互,比如 funding transaction 或者 shutdown commitment transaction 可能需要通过 RPC 提交给 CKB 的节点,所以掌握 Fiber 需要了解一些 CKB 合约开发方面的知识。
重要模块
我们从最高纬度去看一个 Fiber Node,主要包含下面几个主要模块:

其中:
- Network Actor 是 Fiber Node 中负责节点内外的消息通信
- Network graph 包含一个节点对于整个网络里其他节点和 channel 的信息,当一个 Fiber Node 收到一个支付请求的时候,我们首先会尝试从 network graph 中找到一条路径能够触达收款节点,这个 network graph 结构是跟着网络上的 gossip 信息不断更新的
- PaymentSession 负责管理一个支付的生命周期
- fiber-sphinx 是我们自己实现的 onion packet 加解密 Rust 库
- Gossip 是 Fiber 节点之间的交换网络消息的协议,用于 Node 和 Channe 的发现和更新。
- Watchtower,这里负责监听 Fiber node 所关心的 channel 里面的重要事件,另外如果某个 Node 提交一个老的 commitment transaction,watch tower 负责发出 revocation transaction 来进行惩罚
- Cross hub,这个模块负责跨链的互操作,比如付款者通过 Bitcoin 的闪电网络发出 Bitcoin,而接收者收到的是 CKB,cross hub 这里会进行一个转换,将 Bitcoin 的 payment 和 invoice 和 Fiber 这边的 payment 和 invoice 进行映射管理
- Fiber-script 在一个单独的代码仓库,这里面包含了两个主要的合约,funding-lock 是一个资金锁定合约,使用 ckb-auth 库来实现一个 2-of-2 多重签名,commitment-lock 实现了 daric 协议来作为 Fiber 的惩罚机制
Actor Model 和 Channel 管理
Channel 的管理是闪电网络中非常重要、也是异常复杂的部分。其中的复杂性主要来自于 Channel 内部数据和状态的改变来自于网络上 peer 之间的交互,事件的处理可能存在并发上的问题,一个 Channel 的双边可能同时都有 TLC 的操作。
闪电网络本质上是一个 P2P...
剩余内容已隐藏