实用指南:闪电网络隐藏了什么,又暴露了什么?路由、发票、钱包选择和网络分析如何影响支付隐私?

要点
- 链下结算: 日常闪电网络支付不会广播到公共账本,只有通道的开启和关闭会记录在比特币上。
- 有限的路由可见性: 洋葱路由对多跳路径加密,因此中间节点只能看到相邻的两个节点、支付金额和支付哈希。
- 隐私不等于匿名: 闪电网络能隐藏支付细节,但不会自动隐藏现实世界中的身份,也无法阻止有针对性的网络分析。
- 公开的网络元数据: 通道图、节点 ID、通道容量和通道注资交易仍然公开可见,或可由观察者推断出来。
- 有针对性的追踪: 追踪依赖推断,需要资金、基础设施或处于支付路径上的位置,得出的结果也只是概率判断。
- 配置很重要: 钱包和托管方式的选择,对最终隐私效果的影响比协议本身更大。
比特币在设计上就是透明的。
每笔链上交易都会成为公共账本的一部分,任何人都能在多年后查看。地址具有假名性,并不天然与姓名绑定,但交易输入、输出和输出金额始终可见,可以通过区块链启发式分析方法进行研究。
闪电网络改变了信息的可见方式。
普通的闪电网络支付不会广播到比特币网络,也不会存入全局交易历史。它会经过一系列支付通道,分层加密则限制每个中间节点能获知的路径信息。因此,相比普通的比特币链上交易,闪电网络能提供明显更好的支付隐私。
不过,这并不意味着支付会变得匿名(anonymous)或无法追踪(untraceable)。
闪电网络的网络拓扑仍有一部分是公开的。路由节点能看到所转发支付的信息,标准发票可以在节点层面标识收款方,通道注资交易也仍会留在比特币上。钱包提供商和闪电网络服务提供商可能掌握普通观察者看不到的用户活动信息。研究人员也已展示了多种通过网络分析推断支付流向的方法。
因此,更值得问的不是闪电网络支付是否是隐私的(private),而是它对谁保密,又在什么条件下保密。
理解这一区别,是理解闪电网络隐私模型的关键。
闪电网络与比特币链上交易的隐私对比
在讨论闪电网络本身之前,先看看外部观察者在比特币基础层能获得哪些信息,会更容易理解。
对于比特币链上交易,网络会接收并永久记录交易输入、输出和输出金额。任何人都可以下载区块链,随后分析这笔交易。
闪电网络通道的工作方式不同。
两名参与者将比特币锁定在一个链上注资输出中,随后可以反复调整双方对这些资金的分配,而无须把每笔支付都发布到比特币上。区块链主要用于建立通道,以及在必要时强制执行或结算通道状态。
两者有明显区别:
| 观察者能获知什么 | 比特币链上交易 | 闪电网络 |
|---|---|---|
| 支付记录 | 永久记录在公共区块链上。 | 普通支付没有全局公开的交易记录。 |
| 支付金额 | 交易输出金额永久公开,不过,区分实际支付与找零可能需要推断。 | 不向全网公开。付款方和收款方知道支付情况,路由节点只能看到与自己这一跳有关的金额。 |
| 谁向谁付款 | 输入和输出可见,但地址具有假名性,双方关系可能需要通过区块链启发式分析来推断。 | 没有全局的付款方到收款方记录。中间节点通常只能看到相邻节点,不过有时可以推断出支付两端。 |
| 收款方信息 | 接收或观察到交易的人都能看到收款比特币地址。 | 标准 BOLT 11 发票会向发票持有者标识收款方闪电网络节点的公钥;较新的机制可以更好地保护收款方隐私。 |
| 网络结构 | 没有对应的支付通道图。 | 已公布的节点、公开通道及其容量共同构成公开共享的路由图。 |
| 通道开启与关闭 | 不适用 | 通道的注资和结算交易最终都发生在比特币上。公开宣布的通道可以直接关联到其注资输出;未公布的通道则不那么容易识别。 |
| 监控成本 | 主要是被动观察:收集一次区块链数据,就能持续分析。 | 追踪支付通常需要掌握局部网络信息、主动探测、进行推断,或控制处于关键位置的节点。 |
闪电网络如何保护支付隐私?
闪电网络的隐私主要来自两项架构选择:让单笔支付留在公共区块链之外,以及限制路由节点能获知的转发路径信息。
链下支付通道
支付通道(payment channel) 是两名参与者之间已注入资金的连接,让双方能够在链下互相付款,无须将每笔支付记录到底层区块链上。只有开启和关闭通道的交易会接触区块链,因此每笔支付都不会留下永久的公开记录。
不可能与所有人都建立直连通道,因此闪电网络通过中间节点进行支付路由(payment routing)。多跳支付(multi-hop payments)是指付款方和收款方没有直连通道时,通过一个或多个中间节点转发的支付。资金要经过陌生人,就必须保证其中任何人都无法窃取资金,HTLC 提供的正是这种保证。
哈希时间锁合约(Hash Time-Locked Contracts,HTLC) 是一种有条件的支付合约:只有在截止时间之前公开某个秘密值,才会释放资金,否则就退还给付款方。
HTLC 以这种方式让多跳支付具有原子性,却也带来一个隐私弱点。在标准的 HTLC 路由中,整条路径使用相同的支付哈希。如果两个串通的路由节点都看到了这个哈希,就能确定两次转发属于同一笔支付,并将各自在局部路径上掌握的信息拼接起来。
因此,闪电网络还需要另一种机制,防止每个路由节点直接看到完整的支付路径。
洋葱路由
洋葱路由(onion routing) 是一种对路由指令逐层加密的技术,让每个中间节点只能解密自己的一层,只获知转发支付所需的信息。
发送闪电网络支付之前,付款方会构建一个加密数据包,其中包含所选路径上每一跳所需的指令。这些指令被逐层封装,每一层都专门为一个路由节点加密。
每个中间节点只剥开属于自己的一层。
假设支付经过以下路径:
Alice → Bob → Carol → Dave
Bob 收到支付时,能获得将其转发给 Carol 所需的信息。他不会收到一份清单,告诉他 Alice 是付款方、Dave 是收款方,以及 Carol 是剩余三跳中的下一跳。
同样,Carol 知道支付来自 Bob,下一步应该发给 Dave,但洋葱数据包不会告诉 Carol,Bob 是否是最初的付款方,或 Dave 是否是最终收款方。
根据闪电网络规范,中间节点无法直接从洋葱数据包获知完整路径、路径总长度,或自己在路径中的位置。
这一区别很重要:闪电网络并不是让所有参与者一无所知来隐藏支付,而是将信息分散,让每个参与者只获知履行自身角色所需的信息。
这种信息分散构成了闪电网络路由隐私的重要基础。
隐私与匿名
链下结算和分层加密提供了很强的密码学保护,因此人们很容易认为闪电网络支付无法追踪,但这里必须区分两个重要概念。
支付隐私(privacy)是指防止未经授权的观察者获知付款方、收款方、金额或路径等支付敏感细节的能力。匿名性(anonymity)则意味着观察者无法将某个行为与现实世界中的身份联系起来。
闪电网络提供了有实际意义的支付隐私,但不提供匿名性。例如,公开的闪电网络节点通常长期使用同一个节点公钥。公开的节点公告可以将该公钥与别名和网络地址关联起来。商家可能公开宣传自己的闪电网络节点;钱包基础设施可以将支付活动与用户账户关联;标准闪电网络发票则可能向接收发票的任何人暴露收款节点的公钥。
BOLT 11 发票要么直接包含收款方公钥,要么允许从发票签名中恢复出该公钥。
仅仅知道节点公钥,并不能揭示一个人的法定身份。但一旦这个公钥与商家、网站、交易所账户、IP 地址、社交账号或其他外部标识关联起来,原本彼此孤立的支付元数据就可能更容易被串联起来。
这也是隐私研究人员经常讨论匿名集(anonymity sets)的原因:匿名集指的是所有可能实施某个行为的参与者组成的群体。观察者可以利用泄露的细节缩小匿名集,进而识别用户身份。
闪电网络会暴露哪些信息?
尽管有链下支付和洋葱加密的保护,闪电网络也无法完全秘密地运行。为了正常工作,它必须暴露某些信息。
这种信息暴露有两种形式:向全网广播的数据,以及只有路由节点能看到的数据。
向公众暴露的数据
为了让钱包找到支付路径,网络必须发布一张地图。
通道图: 通道图是覆盖整个网络的已公布节点和支付通道地图,付款钱包会参考它来构建路径。每个已公布的通道都有一个指向链上注资输出的标识,因此任何人都能读取该通道的总容量(channel capacity)。
节点身份: 节点处理每笔支付时,使用的公钥和别名都保持不变。未通过 Tor 运行的节点会在 gossip 消息中公布 IP 地址,从而将该身份与物理位置关联起来。
支付元数据: 金额、时间戳和路由费单独看都平平无奇,但随着时间推移,它们会呈现出单笔支付无法揭示的行为模式。通道对手方尤其容易观察到这些模式,因为它能看到经过共享通道的每笔支付。
发票会暴露收款方。 标准的 BOLT 11 发票包含收款方节点公钥、金额,有时还会包含路由提示,暴露原本未公布的通道。任何持有发票的人都知道谁在收款。
通道开启与关闭: 每条通道都以普通的比特币交易开始和结束,这些交易会永久可见。如果注资所用的币来自遵守 KYC 要求的交易所,沿着资金轨迹就可能找到现实中的个人。
向中间路由节点暴露的数据
节点(如前例中的 Bob)在路由支付时,会短暂经手资金,因此必须访问特定的交易数据。这一边界决定了中间节点能观察到什么、不能观察到什么:
| 路由节点能看到 | 路由节点无法直接通过洋葱路由获知 |
|---|---|
| 向它发送 HTLC 的对等节点 | 完整的支付路径 |
| 它必须向其转发的对等节点或通道 | 路径总长度 |
| 自己这一跳的流入和流出金额 | 自己在路径中的确切位置 |
| 与自身有关的 CLTV 时间锁 | 上一节点是否一定是最初的付款方 |
| HTLC 使用的支付哈希 | 下一节点是否一定是最终收款方 |
| 所转发支付的时间信息 | 支付两端在现实世界中的身份,除非能通过外部信息建立关联 |
闪电网络支付能被追踪吗?
由于单笔转账没有公共账本记录,闪电网络支付无法像比特币链上交易那样被追踪。不过,上述被动暴露的数据可以成为主动攻击的起点。
资源充足的攻击者可以利用网络元数据和路由节点可见的信息追踪支付。研究人员已展示了几种有效的方法:
固定的支付哈希(HTLC 的弱点): HTLC 在提供安全性的同时,也是一个主要的隐私薄弱点。标准 HTLC 在一条路径的每一跳都使用相同的支付哈希。如果攻击者控制了同一路径上的两个或更多不同路由节点,就能匹配相同的支付哈希、确切金额和精确时间,确认它们处理的是同一笔交易,并串联起各段子路径,从而削弱洋葱路由的隐私保护。
路径推断: 闪电网络的寻路(pathfinding)机制天然倾向于选择费用低、跳数少的路径,因此路径本身就带有信息。攻击者可以根据这种以成本为依据的路径选择,反推出可能的支付两端(Kumble、Epema 和 Roos,ARES 2021)。
通道探测(Channel probing):攻击者发送刻意设计为失败的支付,再从返回的错误中读取通道隐藏的余额(Tikhomirov 等,2020)。
时间分析:每一跳都会增加可测量的延迟,因此处于路径上的攻击者可以根据结算延迟估计某个端点的距离(Elias Rohrer 等,2020)。
跨层聚类(Cross-layer clustering):仅利用公开数据,就能通过通道注资交易将闪电网络节点 ID 与比特币地址关联起来。研究人员曾用这种方法,将 45.97% 的闪电网络节点关联到比特币地址(Romiti 等,2021)。
这些攻击需要资金、基础设施或特定的网络位置,得出的只是可能性,而非确凿证据。但其成本比从网络规模推测的要低,因为路由集中在少数大型节点上。一项于 2025 年 12 月发表、覆盖五年时间的研究(Valko 和 Marx Gómez)指出,“路由正变得越来越集中”。攻击者只需运营少数几个连接广泛的节点,就能观察到相当一部分网络活动。
实际使用中的闪电网络隐私:配置比协议更重要
协议层面的隐私是规范所保证的隐私;应用层面的隐私则是用户实际得到的隐私。两者的差距,取决于协议之上的选择:钱包、节点配置,以及交易对手的行为。
- 托管与非托管钱包。 托管服务商持有私钥,代表用户处理交易,因此在任何加密发生之前,就已知道付款方、收款方和金额。洋葱路由能向转发节点隐藏支付信息,却无法对持有密钥的实体提供任何保护。
- 闪电网络服务提供商。 移动钱包通常与一家闪电网络服务提供商(Lightning Service Provider,LSP)保持一条通道,因此用户的交易总会以该 LSP 为第一跳或最后一跳。
- 运行自己的节点。 这样可以免去托管方,但除非通过 Tor 路由,否则会公布持久的节点 ID 和物理 IP 地址。
- 重复的行为模式。 经常向同一家商户付款,或在不同场景重复使用发票或节点身份,都会产生洋葱路由无法消除的可关联模式。
- 公开与私有通道。 私有(未公布)通道不会出现在公开通道图上,但发票中的路由提示可能将其暴露,因此最好把任何未公布的通道都视为可能已被他人知晓。
支付通道隐私的未来
当前实现中的隐私弱点,推动着链下架构不断改进:
点时间锁合约(Point Time-Locked Contracts,PTLC):用 PTLC 取代传统 HTLC 后,每一跳将使用数学上不同的值,而不再沿整条路径共享同一个哈希,从而消除这一关联弱点。
盲化路径与 BOLT 12:较新的发票标准允许收款方公布一条通往引入节点的路径,而不必暴露自己的公钥,使收款方的隐私更接近付款方已有的保护水平。
归根结底,尽管目前还没有支付系统能提供绝对匿名性,理解这些网络机制仍有助于用户和开发者作出明智选择、保护自己的数字足迹,并安全地使用不断发展的链下金融服务。