本章目标: 闪电网络常被叫作「二层」或「扩容方案」。都对,但都没说到点子上:它是一张由通道构成的图,支付以多跳的方式穿行其间,用洋葱加密让每一跳对完整路径视而不见。读完你会明白节点怎么找路、支付为什么会失败、你实际得到哪些隐私保证,以及为什么这一切和主链长得完全不一样。
1. 问题的形状
比特币主链是一条链:每笔交易顺序追加、全球广播、人人验证、永久存储。
闪电网络不是链。它是一张图:节点与节点之间有通道,通道可以路由支付。爱丽丝付钱给卡罗尔,如果爱丽丝和鲍勃共享一条通道、鲍勃和卡罗尔共享另一条,支付就可以走 爱丽丝 → 鲍勃 → 卡罗尔。
这就是全部前提:在链外、在另一个网络里,让支付经由互不需要信任的中介路由。
难题有四个:
- 爱丽丝怎么找到通往卡罗尔的路?
- 每个中介节点各知道什么?
- 路走不通时会发生什么?
- 为这份「通行权」爱丽丝付多少?
本篇逐一走完。
2. 通道是图上的边
一条闪电通道是主链上一个 2-of-2 多签输出,两方(通道伙伴)共持密钥。通道有固定的容量(多签里锁定的比特币总量)和动态的余额(任一时刻两侧各有多少)。
爱丽丝和鲍勃开通道、爱丽丝注入 0.1 BTC 后:通道初始为爱丽丝侧 0.1、鲍勃侧 0。爱丽丝可以经鲍勃向外路由最多 0.1 BTC;而鲍勃在从爱丽丝那里收到钱之前,向外路由能力为零。
容量是对称的(通道总锁定量 0.1),余额是不对称的(随支付流动而移动)。这种不对称几乎是一切闪电路由失败的根源。越接近平衡通道——两侧大致 50/50——这条通道双向路由就越可靠。
3. Gossip:节点怎么认识这张图
BOLT 7 定义了闪电节点如何广播自己和通道的信息。协议主要有两类消息:
channel_announcement—— 「我和节点 X 有一条容量 Y 的通道。」在资金交易确认时广播。channel_update—— 「我的当前路由费率是 Z、最小 HTLC 是 M、CLTV 到期差是 D。」节点更新策略时广播。
每个节点收到这些消息,构建对全网公开图的本地视图。所谓「通道图」,就是它对「谁和谁有通道、费率多少」的理解。
两个重要例外:
容量公开,余额私密。 你看得到爱丽丝和鲍勃有一条 0.1 BTC 的通道;你看不到余额是 0.1/0、0.05/0.05 还是 0/0.1。这就是为什么找路会反复失败:图上说「这条通道存在」,但当下的实际余额可能根本付不过去。
不是所有通道都公开。 节点可以开私有通道(unannounced channel),不向 gossip 层广播。不想替别人路由的普通用户用它正合适;这类通道仍可通过 BOLT 11 发票里的路由提示(route hint)收款。
4. 洋葱路由(Sphinx)
闪电使用洋葱路由——一种叫 Sphinx 的构造——让路由中的每一跳只学到「转发这笔支付所需的最少信息」。
爱丽丝要经鲍勃付给卡罗尔,她的节点:
- 构造路由:爱丽丝 → 鲍勃 → 卡罗尔。
- 层层加密,造一颗「洋葱」:最外层给鲍勃,内层给卡罗尔。
- 把洋葱发给鲍勃。
- 鲍勃解自己那层。他看到:「把洋葱转给卡罗尔,金额如此、费率如此、到期如此。」
- 鲍勃转发。卡罗尔解最内层。她看到:「这笔是付给你的,这是领取用的原像。」
关键在于:
- 鲍勃不知道卡罗尔是终点。 他只知道下一跳。
- 鲍勃不知道爱丽丝是源头。 他只知道上一跳(把洋葱递给他的那个)。
- 鲍勃不知道总路径长度。 洋葱加了填充,不管几跳,大小恒定。
这与 Tor 是同一种构造。隐私保证真实但有边界:如果攻击者观察到路径上足够多的跳,时序关联分析有时仍能命中。
5. 源路由 vs 蹦床路由
标准闪电协议里,发送方计算整条路由。爱丽丝的节点查阅 gossip 图、跑寻路算法(通常是带权边的 Dijkstra 类算法),在发送前拼出完整的洋葱。
这叫源路由(source routing)。它把「维护一张准确完整的图」的负担压在发送方身上。对手机上的移动钱包,这可能很贵:公开的闪电图有几十万条通道。
蹦床路由(trampoline)把寻路决策委托给一个受信任的中介。爱丽丝把一个「部分路由」的洋葱发给蹦床节点,由它算完剩下的路并转发。爱丽丝的节点不需要全图。
代价:蹦床简化了发送方,却引入了对蹦床节点的信任——它比标准中间跳知道得更多,如果结构泄露,甚至可能知道终点。截至 2026 年,部分实现(主要是 Eclair)支持蹦床,采用参差不齐。
6. 支付为什么会失败
闪电支付比主链支付更容易失败,而且失败原因常让新手意外。常见模式:
流动性不足。 路由中某跳的出向余额不够。图上写着那条通道容量 0.5 BTC;实际上正确的方向上只有 0.001。
节点离线。 路径上有个节点掉线,HTLC 无法转发,支付失败,发送方换路重试。
费率太低。 某跳的定价策略高于发送方报价,重试。
HTLC 上限。 节点为自保设置了单笔 HTLC 上限,大额付款可能穿不过窄通道。
超时。 HTLC 有 CLTV 到期差。支付未能在时限内完成就失败,资金退回。
用户看到的效果是:钱包提示「试路由 1……试路由 2……试路由 3……成功」。现代钱包透明地尝试几十条路由,多数失败用户根本看不到。
这与主链本质不同——主链上一笔交易要么进区块、要么不进。闪电上,支付成功与否是网络状态的属性,而不只是交易本身的属性。
7. 多路径支付(MPP)
单条路由流动性不够时,发送方可以把一笔支付拆成多路同时走。这就是多路径支付(MPP),及其更灵活的变体原子多路径支付(AMP)。
一笔 1 BTC 的支付可以拆成十个 0.1 BTC,各走不同路径。收款方集齐十份、揭示原像、领取全额。任何一份失败,全部退回。
MPP 极大扩展了闪电的路由能力。2018 年一笔 1 BTC 的闪电支付近乎不可能(没有单条通道装得下);2026 年,有 MPP,这只是常规操作。
取舍:
- 开销更多。 每份各付各的手续费,总额可能高于单路径。
- 失败面更大。 任何一份失败,整体重试。
- 隐私两面。 发送方节点要看到更多图;中介看到的是支付的碎片而非全貌——这本身也是一种泄露形态。
8. 每一跳知道什么(隐私)
闪电的隐私故事是「远好于主链,但有例外」。路径上的各位置对支付事实的知情情况,可以排成一张表:
| 知情项 | 发送方 | 第一跳 | 中间跳 | 最后一跳 | 接收方 |
|---|---|---|---|---|---|
| 谁是原始发送方 | ✓ | ◐ | ✗ | ✗ | ◐ |
| 谁是最终接收方 | ◐ | ✗ | ✗ | ✓ | ✓ |
| 自己在路径中的位置 | ✓ | ✗ | ✗ | ✗ | ✓ |
| 上一跳是谁 | — | ✓ | ✓ | ✓ | ✓ |
| 下一跳是谁 | ✓ | ✓ | ✓ | ✓ | — |
| 转发金额 | ✓ | ✓ | ✓ | ✓ | ✓ |
上半部分是隐私;下半部分是转发所必需的运行事实。
两个重要的不对称:
- 中间跳对两端全盲。 它只知道紧邻的邻居和转发的金额。它分不清自己是第二跳还是第五跳、在路由开头还是接近终点。
- 端点会漏。 第一跳经由与发送方的直连通道收到洋葱,若发送方自己不跑路由节点,第一跳往往能推断出发送方是谁。最后一跳必须经直连通道把款交给接收方,所以它确切知道收币人。Sphinx 藏得住路径,藏不住「谁坐在你旁边」。
下半部分是底线:每一跳必须知道邻居和金额,否则什么都转发不了。Sphinx 的隐私,就是协议在这个底线之上拒绝透露的一切。
串联观察多个跳的人可以按时序和金额做关联,追踪出大额或异常的支付。若对手运营大量节点,这是真实风险。
对比主链——每笔交易完全公开、假名地址极易聚类(见 UTXO 专题)——闪电是实打实的隐私跃升。对比理想隐私,它有缺口。
9. 路由的手续费市场
闪电路由不免费。每一跳对转发收费,公式为 base_fee_msat + rate_fee_msat/百万 × 金额。
一个典型的路由节点可能收「1000 msat 底价 + 100 ppm」。路由 0.01 BTC(100 万聪 = 10 亿 msat)的费用:1000 + 100 × 1,000,000/1,000,000 × 1000 = 约 101,000 msat,即总共约 101 聪。
多跳支付,各跳费用累加。
这个市场的生态:
- 连通性好的节点可以收高价。 枢纽处的流动性更值钱。
- 新节点压价抢单。 想吸引流量的节点报价更低。
- 竞争极其激烈。 多数支付的路由费与主链费相比可以忽略。
这里没有内存池式的费率竞拍。每跳自己定价,发送方在流动性与可靠性的约束下挑总成本最低的路。
10. 这套设计买来了什么
闪电路由解决了一个主链做不到的问题:微费、低延迟、高吞吐的比特币支付。
用主链的保证(全球验证、永久记录)换闪电的属性(即时结算、千分之一聪级的费用、链下容量)。在对的场景——打赏、线下收款、微支付、机器对机器支付——这笔交换价值巨大。
路由让这一切成立。没有它,闪电只是一堆互不相通的支付通道,只在直接对手方之间有用;有了它,闪电才是一张真正的网络:价值在其中流动的图,没有中央运营者,没有许可账本,没有支付处理商。
隐私真实但不完全;可靠性自 2018 年以来突飞猛进;费用对典型支付而言近乎为零;容量随更多节点开出更多通道持续增长。
它和比特币本身一样,理论上不完美;也和比特币本身一样,是同类事物中在生产环境里存在过的最好的东西。
划重点: 想比这篇专题更深地理解闪电?跑一个月自己的路由节点。光是那些仪表盘——流入流出、通道利用率、费用收入、失败日志——就比任何文档更能教你看清这张网络的真实形状。