Scroll #5:CoinJoin的诸多形态

  • spiralbtc
  • 发布于 2025-10-30 18:37
  • 阅读 13

本文深入探讨了CoinJoin的不同形式及其在比特币隐私保护中的作用。文章分析了Equal Amount CoinJoins、Multiparty Batching、PayJoin和闪电网络等不同方案的隐私特性,并讨论了如何通过打破子交易不变性来提高隐私。此外,文章还提到了考虑交易关联性的各种理论,包括理论和非理性理论,以及它们对隐私的影响。

Spiral 的时事通讯分为五个系列,涵盖从毛绒玩具到深度极客内容的所有内容。不喜欢其中一个?跳过它,老兄。直接滚出那里。

The Scroll #5: CoinJoin 的多张面孔

现在是晚上 10 点,你知道 “CoinJoin” 的含义吗?

由 Spiral 的比特币巫师 @not_nothingmuch 撰写。

“CoinJoin” 指的是什么?

“CoinJoin” 究竟是什么?长答案是:“视情况而定”。tl;dr 是:它指的是任何类型的多方交易,从技术上讲,这使得闪电网络成为一种 CoinJoin。;-)

等额 CoinJoin

2013 年,Greg Maxwell 在比特币论坛上发布了以下内容:“CoinJoin:现实世界的比特币隐私”。虽然这并不是第一个使用防盗多方交易打破常用输入所有权启发式的案例 1,但据我所知,这是对输出值相同的多方交易的第一个具体描述 2

为了使用它来提高隐私,N 个用户将就一个统一的输出大小达成一致,并提供至少达到该大小的输入。该交易将具有 N 个该大小的输出,并且如果某些用户提供的输入超过目标值,则可能还会有 N 个更多的找零输出。所有人都将签署交易,然后该交易就可以被传输。在任何时候都没有被盗的风险。

还包括一个图表,虽然原始 URL 现在已失效,但在相关的 Bitcoin wiki 文章中仍然存在副本:相关比特币维基文章:

说明...

请注意,地址 1A1 被使用了两次,强烈暗示同一实体拥有交易 2 的第一个和最后一个输入。该帖子继续:

在图示中,“交易 2” 具有来自 1A1 和 1C3 的输入。假设我们相信 [原文如此] 1A1 是 Alice 使用的地址,1C3 是 Charlie 使用的地址。Alice 和 Charlie 中谁拥有 1D 和 1E 输出中的哪一个?

这种交易结构的对称性使得相同值的输出的每种排列都同样合理,至少在仅查看交易时是这样。如果将单个交易视为 k-匿名文献中的“数据发布”,那么假设 k 个输出的所有属性(金额和脚本类型)都相同,那么这就满足了 k-匿名的定义。不幸的是,正如 前一篇文章 中所讨论的那样,这并没有充分解释来自多个交易的隐私泄露以及它们之间的关系。

原则上,如果将整个区块链视为不断追加的数据发布,那么 k-匿名可能是一个合理的 CoinJoin 隐私模型。不幸的是,由于交易以图结构连接,因此属性集还必须描述此图中每个币与每个其他币的关系,例如,一个是另一个的祖先吗?这是属性数量上潜在的二次增长,但更糟糕的是,可能的准标识符的数量随着属性数量呈指数增长。如果不考虑创建币的上下文以及已经或将要花费币的上下文,就无法对特定币满足某个阈值的 k-匿名性做出严格的声明。在某些特定的交易图结构中,即使在相关准标识符激增的情况下,证明 k 大于某个阈值也是可能的。尽管如此,一般来说,对于任何有意义的阈值,这种理论都是难以处理的。

多方批处理和子交易模型

Maxwell 的帖子明确地比这种高度对称的方法更通用。帖子中的另一个例子是通过聚合几个独立的支付或子交易来协作进行批量交易:

这种想法也可以更随意地使用。当你想进行支付时,找到另一个也想进行支付的人,并一起进行联合支付。这样做并不能大大提高隐私,但实际上会使你的交易更小,从而更容易在网络上进行(并降低费用);额外的隐私是一种好处。

这或多或少地在 SharedCoin 中得到了字面上的实现,正如 Kristov Atlas 所证明的那样,它确实 并没有大大提高隐私。这种分析背后的基本思想是,即使交易的输入和输出被打乱,相关的输入和输出通常仍然可以唯一地 分区,只需假设每个子交易中的输入和输出值必须或多或少地平衡。常见的输入所有权启发式可以被看作是这种理论的一种退化特殊情况,其中分区只包含一个子交易,这意味着所有内容都与所有其他内容相关联。

LaurentMT 在 Boltzmann 中使用了一种概率方法,该方法考虑了存在多个满足平衡要求的唯一分区的情况。通过枚举和计算不同的可能性,然后将这些计数归一化为概率,这可以估计输入或输出可能相互关联的概率。子交易允许仅近似平衡,考虑到诸如 JoinMarket 的 maker 费用之类的因素。

Maurer 等人 后来的工作引入了双重计数校正,区分了所谓的派生和非派生子交易映射(他们对整个分区的术语),并且只计算后者。这项工作完全忽略了费用,在更理想化的环境中工作。

虽然大小为 n 的集合的 分区 的总数(由第 n 个 贝尔数 给出)增长非常迅速,但满足金额平衡的条件的分区子集可能非常稀疏。从空间的快速增长得出结论,在这种巨大的搜索空间中找到一些稀疏的解集的复杂性足以保护隐私是很诱人的,但也是不正确的。

这种误解之所以诱人,是因为密切相关的子集和问题是 NP 完全的,这意味着可以构建一个特定的子集和实例,其中找到解不仅与找到特定哈希的 SHA256 原像一样困难,而且 等价,举个例子。然而,NP 完全性不能保证所有甚至大多数子集和问题实例都很困难。这就是 Merkle-Hellman 背包密码系统 被破解的原因,而其他 背包密码系统 依赖于子集和的困难特殊情况。线性规划通常适用于枚举比特币交易的子交易映射,即使是那些相当大的交易。

可以提供有意义保证的是,知道求解 子交易 映射是不确定的,即存在超过某个阈值的看似有效、非派生的子交易映射,或者更准确地说,每个输入或输出都与许多其他输入和输出一起出现在整个子交易映射范围内的各种同样合理但不同的子交易中。

PayJoin

PayJoin 交易中,比特币维基将其 描述 为“一种特殊类型的 CoinJoin”,支付的发送者和接收者都提供输入。

虽然以下摘自 Maxwell 的帖子的内容对于多方批处理来说过于乐观,但 PayJoin 试图实现所描述的无法区分的属性:

这种交易在外部与通过传统使用创建的交易 无法区分。因此,如果这些交易变得广泛,它们甚至可以提高不使用它们的人的隐私,因为输入联合不再是共同控制的有力证据。

为了使这一点成立,所谓的“不必要的输入启发式”[ 1, 2] 也必须在交易中成立。例如,一笔交易花费了两个币,比如 10 和 4,创建了两个价值 8 和 6 的输出,这就提出了一个问题,为什么不应该只使用 10 来创建 8 和 2,或者 6 和 4,假设 8 或 6 是预期的支付金额。虽然存在例外情况,但考虑到大多数钱包构建的交易的分布情况,这样的交易有些不寻常,因为通常会避免不必要地使用第二个输入,因为这会导致更高的费用。

这种类型的分析可以扩展到仅仅是值之外。正如在 前一篇文章 中简要提到的那样,在钱包聚类的上下文中,钱包指纹识别的研究还不够深入。虽然这仍然是一个悬而未决的问题,但它似乎可以用于攻击 PayJoin 的隐私,但也可能缓解这种担忧。这是我们作为 PayJoin Dev Kit 的一部分正在研究的内容,所以如果你对此类事情感兴趣,请 加入我们的 Discord

描述 PayJoin 的这种隐写属性的另一种方式是,使用子交易模型解释这些交易几乎肯定会将发送者和接收者的输入和输出分配给同一个子交易。这是因为他们之间显着的净转移会扰乱平衡不变性,子交易映射案例的定义排除了实际发生的情况。

即使我们假设一种假设的 PayJoin 聚合机制,允许多个发送者和接收者协作构建单个交易,即使这种交易肯定不会像“传统使用”那样分发,打破子交易不变性也有助于隐私。虽然这种多方 PayJoin 交易不再能被描述为隐写的,因为它们很突出,但有关参与者之间支付的缺失信息使聚类变得更加困难。这种活动越互连,对子交易理论的越天真的应用将导致集群崩溃。

说真的,闪电网络是一种 CoinJoin

在开篇段落中,我把它当成一个玩笑,虽然我 之前 提到过它,但让我们更认真、更全面地考虑这个角度,因为它确实强调了闪电网络的某些方面,这些方面没有得到广泛讨论,并且在使用更合理的心理模型来思考闪电网络的工作方式时并不那么明显。

闪电网络通道是一个由两个共享通道的参与者拥有的多重签名 UTXO。创建它的交易是其资金交易。有些通道仅由一方提供资金,但有些通道是双重资金的,这意味着双方都为通道的初始余额做出了贡献。闪电网络协议确保在任何时间点,通道的任何一方都可以单方面关闭它(无需依赖对方的合作)。关闭意味着 UTXO 被花费到一个交易中,该交易根据他们都同意的余额,在他们之间公平地分配通道资金。支付通道很有价值,因为如果双方都同意,就可以安全地更新此余额,并且此更新发生在链下,而无需花费共享的 UTXO,这意味着这是一种廉价且即时的方式来转移比特币。特别是闪电网络通道更有价值,因为它们还允许路由支付:通道是图的边,将节点对连接在一起,并且支付可以沿着边的路径流动,在未通过共享通道直接连接的节点之间流动。

如果一切顺利,通道将以合作方式关闭。在这种情况下,通道 UTXO 只是花费到一个交易中,该交易通过创建两个输出来结算余额。单方面关闭也会这样做,但会透露更多信息并具有不同的链上足迹。我们在这里忽略这一点。我们还假设我们关心的对手无法看到链下发生的事情,所有路由支付都对该对手具有完美的隐私。如果这个对手只能看到最终在链上确认的交易,那么它会看到一个资金交易,该交易花费一个或多个币来创建一个多重签名币(以及可能的一些找零输出)。然后,这个多重签名币将被花费,创建两个输出,可能与进入资金交易的金额不同,每个输出都属于不同的钱包。如果不是中间的多重签名币,那么这一切听起来有点像一个“传统”的支付交易,或者如果通道是双重资金的,则是一个 PayJoin。

实际上,任何对手都能够收集闪电网络 gossip 数据。为了路由支付,节点必须能够查看通道图,而 gossip 数据使这成为可能。公开宣布的通道会公开地将一对节点连接起来。虽然多重签名聚类比我们之前讨论的更为细致,但你可以说,闪电网络节点的 ID 与其通道 (U)TXO 相关联是一种地址重用形式,并且这样做并没有过度夸大事实。对于通道关闭的两个输出,有两个集群与节点 ID 相关。决定将两个集群中的哪个分配给每个输出相对容易,因为其他通道打开和关闭将链接到每个节点,以及每个集群可能扩展到的任何先前或后续交易。

换句话说,如果我们坚持将闪电网络视为一种奇怪的 CoinJoin 或 PayJoin 形式,那么从钱包聚类的角度来看,它的隐私保证并不是很强。请不要误解前一句,它没有说明闪电网络支付的隐私,根据所有说法,这比链上支付更好。最后一句话也不应暗示闪电网络隐私是完美的。无论如何,将闪电网络通道视为一个奇怪的 2 方 CoinJoin 所强调的特定担忧仅与与节点打开和关闭公共通道相关的链上足迹有关,以及由于非通道 TXO 导致这些资金可以聚类的程度。这也是一个很好的例子,说明了聚类与区块链中未直接记录的相关信息仍然是公开可用的。

考虑任何相关性理论

更进一步,在每个交易中,我们可能会考虑输入和输出以加权的 完全二分图 连接,甚至是以完全图连接(即,也允许表示输入-输入链接和输出-输出链接)。边上的权重表示币的相关程度。事实上,没有理由停留在单个交易的边界:原则上,所有币都可能与所有其他币相关,这是钱包聚类和交易间相关性的概率泛化,而不仅仅是子交易模型和交易内相关性的概率泛化。

分配为这些权重的特定值可以基于任何其他理论,例如 在上一篇文章中讨论的 交集攻击,外部数据源(如 泄露的 xpub3,KYC 信息或专有聚类标签,甚至像地址重用一样微不足道的东西。

而且它也可以反过来。例如,如果人们普遍认为正在创建使用 CoinSwap 4 的交易,即使它实际上不是真的,那么任何知道这一点的人都会普遍相信并诚实地尝试在链接图中分配权重,他们将被迫考虑该意外事件并承认一定程度的不确定性,或者在承担举证责任的同时提出相反的论点。Malte Möser 和 Rainer Böhme 在 2017 年的一篇论文 中对更有限的设计的潜在 Coinswap 使用量的上限进行了估计。Chris Belcher 的 CoinSwap 设计 迫使分析人员撒下更大的网。也就是说,它尚未完全实现。希望会在某个时候添加对 P2TR MuSig2 和多方 ECDSA 的支持,因为即使这些脚本类型没有得到太多使用,所有类型币的同质性也会因此而提高。对于所有接收币的人来说,它潜在地可能来自 CoinSwap(即使这种可能性不大)的情况越真实,链分析理论就越弱。考虑这样一种情况:网站泄露泄露了家庭住址和比特币支付,并且一个大型 UTXO 被用于其中一项支付。对于这位不幸的客户来说,UTXO 属于 CoinSwap maker 是可能的,即使他们从未自己做过 CoinSwap,那么世界也会更安全。更安全多少取决于这种信念的普及程度。

这甚至延伸到所提出的输入和输出相关性的无意义的,我敢说是宗教的理论,例如 FIFO 5 或序数理论。Meme 魔法的不幸后果是,这种理论在某种意义上可以通过 占据人们的思想 而成为好的理论,因此它们最终会塑造人们的行为,因此事后可以使用该理论正确解释将要留下的交易踪迹。就像你不应该认真对待任何告诉你比特币是私有的,而不加限定的人一样,你也不应该相信任何人告诉你比特币不能是私有的。结果主要取决于将比特币用于商业的人是否也以保护隐私的方式使用比特币。不幸的是,这并非易事,至少在大多数钱包的当前状态下是这样,尤其是在没有刻意努力的情况下,但我认为破坏比特币隐私最令人尴尬的方式是,每个人都因为一些愚蠢的迷信而“知道”这是一个毫无希望的事情。

下一集...

在这篇文章中,我们从更多理论的角度考察了 CoinJoin 隐私,因为它与该术语的不同概念有关,然后稍微偏离了 CoinJoin 三明治对齐图表,以了解这些想法如何帮助更广泛地理解比特币隐私。该理论倾向于强调攻击者的视角,因为它通常通过了解攻击者的能力并找到弱点来推断破坏隐私的难度是有用的。虽然在理论上还有很多可以说的,但下一篇文章将更多地关注防御者的方面,并讨论设计一个保持隐私的 CoinJoin 交易结构的一些实际挑战。

  • 原文链接: spiralbtc.substack.com/p...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
spiralbtc
spiralbtc
江湖只有他的大名,没有他的介绍。