区块链/等级 IV · 深入协议/4.3 托管与隐私/课程 6
隐私:链上泄露、CoinJoin 与 PayJoin
曾经承诺的匿名性、打破它的启发式分析,以及反击的工具
材料区块浏览器界面(例如 mempool.space 或 blockchain.com)一份已知 coinjoin 交易的参考列表用于记录输入/输出数量和金额的笔记本区块浏览器
好奇
- 为什么一个被重复使用的地址会永久地将两笔不同的交易关联起来?
- 多个陌生人如何将各自的输入合并为一笔交易,同时又不暴露谁拥有哪部分输出?
- 2024年最著名的隐私工具的开发者们遭遇了什么?
探索
- 比特币的账本是公开且不可篡改的。从创世区块开始,每一笔输入和输出对任何运行节点的人都可见。白皮书第10节承认,多输入交易“必然会暴露其输入属于同一所有者”。分析人士称之为“共同输入所有权启发式”,并通过观察哪些币被一起花费,将地址聚类为不同实体。
- 地址复用会加剧这种暴露。当收款方用同一地址接收多笔付款时,与该地址相关的所有 UTXO 都会被确定性地关联起来。链上分析公司基于这些启发式方法出售服务,通过描绘地址之间的资金流向来识别实体。找零输出也可以通过金额或时间模式识别出来,从而进一步聚类。其结果是一张图谱,使资金历史可以跨越多年、跨越不同交易对手被追踪。
- 钱包实践中存在相应的对策。每次付款使用新地址,可以防止因地址复用而被直接关联。币控制(Coin Control)功能让用户避免将来源无关的币放在一起花费,从而不会把自己历史中相互独立的部分合并起来。这些做法要求钱包支持精细控制每个输出所用的 UTXO,从简单的“全部花费”逻辑转向更复杂的选币算法。
- 2013年由格雷戈里·麦克斯韦提出的 Coinjoin 技术将这一理念进一步发展。多个用户将自己的输入合并成一笔交易,该交易的输出值全部相同。由于这些输出彼此无法区分,观察者便无法判断哪个输出对应哪个输入。这样一来,无需依赖可信的第三方,就能切断发送方与接收方之间的关联,其原理在于利用共享交易中具有相同价值的输出所带来的数学上的模糊性。
- JoinMarket(2015年)、Wasabi Wallet(2018年)和 Samourai 的 Whirlpool 等实现将 coinjoin 带给了用户。然而,法律压力随之加剧。2024年4月,美国当局逮捕了 Samourai Wallet 的创始人,指控其合谋洗钱以及合谋经营无牌货币传输业务;2025年,他们就无牌货币传输指控认罪,并被判处监禁。2024年6月,Wasabi 协调器服务的运营方 zkSNACKs 停止了运营。这些事件表明,尽管 coinjoin 是一项协议层面的功能,其实现却面临严格的监管审查。
- 在区块浏览器上找一笔已知的 coinjoin 交易(有些浏览器会对其加以标记)。留意其众多输入、一组金额完全相同的输出,以及金额较小的“找零”输出,这些找零输出仍可能被关联到其所有者。隐私正存在于这些等额输出之中;任何让某位参与者的币显得与众不同的因素都会削弱隐私。
- 中本聪在白皮书第10节中提出通过匿名性来实现隐私。公钥并不与任何姓名绑定,只是一串字符而已。通过为每笔交易使用新的密钥对,用户可以限制地址之间的关联,不过第10节本身也承认,多输入交易会暴露共同所有权。这一设计类似于股票市场的成交记录:所有人都能看到交易规模和时间,但没人知道是谁执行了交易。
- 链上分析通过启发式方法瓦解了这一模型。其中最强大的是共同输入所有权启发式:如果一笔交易花费了多个输入,这些输入就被假定属于同一个所有者。钱包软件经常将多个 UTXO 合并到新地址中,从而形成多输入交易,把原本相互独立的地址聚类到一起。一次合并操作就能把钱包的大部分地址关联起来。
- 找零识别让问题更加严重。当发送方支付的金额少于其总余额时,会生成一个返回给自己的找零输出。分析人员通过脚本类型或金额来识别它:整数金额的输出通常是付款,因此另一个输出会被标记为找零。一旦某个地址被认定为某个用户的“找零”地址,此后从该地址发出的每一笔花费都会关联回该用户。地址复用(即钱包重复使用同一地址)会让这些关联变得永久且一目了然。
- 网络层面的观察又增加了一层风险。如果某个节点广播了一笔其他节点都未曾见过的交易,它的 IP 地址就会与发送方关联起来。另外,Meiklejohn 等人在2013年的研究《A Fistful of Bitcoins》中展示了如何利用聚类启发式方法加上少量已知地址,识别出大型服务并追踪它们之间的资金流动。交易所的 KYC 记录提供了最后一环:一旦交易所确认了某个用户的身份,该用户的充值和提现就会被归属到其名下。
- Chainalysis 成立于2014年,将这种分析工业化。其软件为政府和交易所追踪资金流向,梳理了数十亿美元的交易。隐私不仅关乎保密,还关乎免遭勒索的安全、对供应商价格等商业数据的保护,以及币的可替代性。如果某枚币可以被标记为“脏币”或与犯罪分子关联,其价值相对于“干净”的币就会下降。
- 良好的钱包使用习惯可以缓解这些泄露,但无法将其消除。每次付款都使用新地址、避免在多输入交易中合并资金,能够减少交易图谱的聚类。然而,根本矛盾依然存在:比特币的透明性让任何人都能验证账本,也让任何人都能分析账本。白皮书所承诺的匿名性,只有在用户保持严格自律时才能成立,而这是许多商业钱包都难以做到的。
- 2013年,Gregory Maxwell 在 bitcointalk 上提出了 CoinJoin。该机制将多个用户的输入合并到一笔交易中,并生成多个等额输出。这打破了链上分析公司用来关联地址的共同输入所有权启发式。如果有五个人参与,在没有外部证据的情况下,任何输入都无法被确定地关联到某个具体输出。
- Wasabi(zkSNACKs)和 Samourai(Whirlpool)等钱包实现了协调式 CoinJoin。这类方案需要一台中心化服务器,为交易金额相匹配的参与者进行撮合。zkSNACKs 于2024年6月1日关闭了其协调器,不过社区运营的服务器仍在继续运行。中心化架构为运营者带来了单点故障和法律风险。
- Samourai 的创始人于2024年4月被捕:Rodriguez 在美国被捕,Hill 则应美国要求在葡萄牙被捕。2025年7月,他们就合谋经营未经许可的货币转移业务认罪。2025年11月,二人分别被判处五年和四年有期徒刑。检方将混币服务视为需要牌照的货币转移机构,这一法律解释对同类工具的开发产生了寒蝉效应。
- PayJoin(BIP-78)提供了一种无需协调者的替代方案。当接收方接受付款时,其钱包会加入一个自己的 UTXO 作为输入,并将自己的输出增加相同的金额。这样既向观察者隐藏了确切的付款金额,也在仅有两方参与的情况下打破了共同输入启发式。它比 CoinJoin 更简单,但对于基本隐私保护仍然有效。
- 其异步版本 BIP-77(v2)让发送方和接收方无需同时在线即可完成 payjoin,双方通过使用 Oblivious HTTP 的加密中继交换消息。Payjoin Dev Kit 于2026年8月发布1.0版本。这一设计将协商过程与最终广播解耦,使其更能抵御网络中断,也更容易集成到现有的钱包基础设施中,而无需复杂的状态管理。
- 打开区块浏览器,对比一笔普通交易与一个已知的 CoinJoin 或 Payjoin 输出。协调式 CoinJoin 很容易识别,因为它有许多金额相同的输出。PayJoin 则被设计成看起来像一笔普通付款,因此那些假定所有输入都属于同一所有者的分析人员会在不知不觉中出错;这正是它的优势所在。
部分 I隐私:地址复用与 Coinjoin
部分 II比特币的隐私机制及其漏洞
部分 IIICoinJoin、PayJoin与法律
关键事实
- 共同输入所有权启发式假定,被一起花费的输入属于同一所有者。
- 地址复用会在多个 UTXO 之间建立确定的关联,从而实现持续的链上资金追踪。
- Coinjoin 将多个用户的输入合并为一笔交易,并生成等值的输出,以此隐藏资金的所有者。
- Gregory Maxwell 于2013年提出 coinjoin 协议;JoinMarket 于2015年推出,Wasabi Wallet 于2018年推出。
- 2024年4月,美国当局逮捕了 Samourai Wallet 的创始人;2025年,他们承认无牌经营货币传输业务。
- Wasabi Wallet 的协调器运营方 zkSNACKs 于2024年6月关闭了服务。
- 比特币白皮书(第10节)提出通过保持公钥的匿名性以及为每笔交易使用新的密钥对来实现隐私保护。
- 共同输入所有权启发式将一笔交易的所有输入关联到同一个所有者,从而打破地址之间的隔离。
- Chris Belcher 记录了主要的区块链隐私攻击,包括找零识别和地址聚类启发式方法。
- Meiklejohn 等人(2013年)表明,聚类启发式方法加上少量已知地址,就能识别出主要的比特币服务。
- Chainalysis 成立于2014年,为交易所和政府提供资金流追踪软件,用于对链上活动进行身份归属。
- 地址复用和多输入合并是用户自身造成的主要泄露,会导致身份被长期关联。
- CoinJoin 由 Gregory Maxwell 于2013年提出。
- 2024年6月1日,zkSNACKs关闭了其中央协调器。
- 2025年11月,Samourai 的创始人分别被判处五年和四年有期徒刑。
- PayJoin(BIP-78)允许接收方为交易添加输入项。
- Payjoin Dev Kit 于2026年8月发布1.0版本。
- CoinJoin 打破了链上分析所使用的共同输入所有权启发式。
练习 九、六、三、一
9收集在区块浏览器上找出9笔多输入交易,其中至少包括两笔被标记为 coinjoin 的交易;记录输入和输出的数量以及各输出金额。
6归类按输出金额的一致程度,将这9笔交易分为6类:全部相等、大部分相等、含一个较大的找零输出、金额不一、单一输出或其他模式。
3提炼将这6类归纳为3个结论:分析师能够、以及不能从这些交易中可靠地得出什么。
1凝结用一句话解释:coinjoin 交易中的等额输出如何制造模糊性,从而切断输入与输出之间的关联。
事实核查
日期、数字及数据均依据下方列出的已发表资料进行核实。
- S. Nakamoto, 'Bitcoin: A Peer-to-Peer Electronic Cash System' (2008), Section 10
- G. Maxwell, 'CoinJoin: Bitcoin privacy for the real world', BitcoinTalk forum post (2013)
- US Department of Justice, Press Release on Samourai Wallet arrests (April 2024)
- S. Nakamoto, Bitcoin white paper §10 (2008)
- S. Meiklejohn et al., 'A Fistful of Bitcoins: Characterizing Payments Among Men with No Names' (IMC 2013)
- C. Belcher, 'Blockchain attacks on privacy' (Bitcoin Wiki)
- Chainalysis, 'The Chainalysis 2024 Crypto Crime Report'
- G. Maxwell, 'CoinJoin' (bitcointalk, 2013)
- US DOJ SDNY press release (November 2025)
- payjoin.org documentation (2026)
- BIP-78: A Simple Payjoin Proposal
- zkSNACKs shutdown announcement (June 2024)