CoinJoin 将不同人的资金组合进同一笔比特币交易。每个人仍掌握自己的密钥,并检查自己签署的内容。交易为参与者或他们的收款人创建新输出,旁观者可能更难判断哪个原持有人收到了哪个输出。实际效果取决于交易结构、协议,以及旁观者掌握的其他信息。
安娜支付一项服务时,不希望收款人轻易追踪她的其他资金。但比特币没有私密的银行账单,交易历史是公开的。一笔交易会花费之前尚未花费的输出,也就是 UTXO,再创建新输出。输出记录了一笔金额,以及花费它所需满足的条件。如果普通付款使用了多个这样的输出,分析者常会推测它们由同一个人控制。这是一种经验判断,即启发式规则,不是证明。CoinJoin 让不同持有人出现在同一笔交易中,打破了这个前提。它改变的是人们从公开记录推断关联时的把握,并没有改写过去。 [1]
看一个简化例子:安娜和帕维尔各有一个价值 100 500 sat 的输出。sat 是 satoshi(聪)的缩写,表示比特币的最小单位。他们共同安排一笔交易,各自获得一个 100 000 sat 的新输出,剩下的 1 000 sat 是两人合计支付的网络手续费。例子暂不计算额外的服务费。协调者或相互通信的钱包提出交易方案。数字签名是用私钥生成、可供验证的授权凭证。私钥是让持有者能够签名的秘密数据,签名时并不需要公开它。每个人在签署自己的输入前,核对自己的输出地址、金额、费用及完整条件。协调者本身既没有别人的密钥,也没有花费别人资金的权限。只要缺少必要的签名,这笔交易就无法有效完成。但这种保护依赖正确的软件和对方案的核验:如果签下了把钱转给骗子的方案,保护就失去了作用。 [1] [5]
在这个例子里,只查看区块链的人会看到两个金额相同的新输出。仅凭金额,无法分清哪个属于安娜、哪个属于帕维尔。但这不等于归属概率必然各占一半,更不保证匿名,因为观察者可能已经认识其中一个地址,或有其他线索。真实交易中的明显找零、不同金额、输出类型和时间关系,都可能帮助判断关联。匿名集指观察者无法区分的一组候选,并不只是某轮登记了多少人。钱包显示的分数也只是特定模型下的估计,不能保证每个观察者都只知道这么多。 [1] [4]
能不能偷走资金,与能不能获知信息,是两回事。简单的协调者可能知道输入与输出的对应关系;其他协议则利用密码学方法隐藏这些关系。IP 地址、连接时间等网络信息同样重要。另一个问题是 Sybil Attack:同一攻击者装作多个参与者,知道自己的输出后,便能缩小其余输出的归属范围。参与者还可能拒绝签名,使整轮无法完成。因此,需要关注具体的参与规则,以及抵御大量干扰请求或蓄意破坏的 DoS 防护。输入数量很多,并不能直接回答这些问题。 [1] [4]
之后,安娜把新输出与一笔从交易所提取的资金一起花费,而交易所知道她的身份。她原本想模糊的关系,就可能由此重新出现。重复使用地址,或把多个输出合并成一个,也可能产生类似效果。Coin Control 允许用户选择钱包要花费哪些 UTXO,有助于分开不同用途的资金,却不是实现绝对隐私的开关。收款人可能认识付款人,服务商也可能保留自己的记录。因此,一轮成功结束后仍要考虑隐私,不能只看某笔交易的外形。 [5]
先想清楚,你希望向谁隐藏哪些信息。好奇的收款人、协调者和网络观察者,能力并不相同。再检查谁掌握密钥、应用签署什么、收取哪些费用,以及如何处理产生的输出。先把钱交给服务商保管,与非托管 CoinJoin 的信任模式不同。CoinJoin 没有给比特币增加特殊规则:节点仍按普通交易的条件进行验证。节点是运行比特币验证软件的计算机,负责检查交易和区块。CoinJoin 不会删除交易所或收款人的记录,也不能承诺某项服务会如何对待付款。对新手而言,理解这些边界比看到应用写着“匿名”更有用。 [1] [5]
Gregory Maxwell 在 2013 年 8 月公开解释了 CoinJoin。这个构想不需要修改网络规则,但人们仍需要找到彼此并合作。JoinMarket 展示了市场化的做法:组织共同交易的人付费,请其他人提供资金参与。采用协调者的协议又有不同的安排。例如,WabiSabi 支持不同金额,并使用匿名凭证,让参与者证明自己有权获得输出,而不直接揭示与输入的联系。因此,CoinJoin 不能等同于某一个应用,也不能认为所有变体都只允许等额输出。 [1] [2] [4]
Maxwell 的帖子解释基本构想,具体钱包的文档介绍操作流程,WabiSabi 论文研究协议性质。这些资料处在不同层次。本次审校时,原始 JoinMarket 客户端与服务器仓库已经归档;这里把它作为历史和技术资料,而非安装建议。BIP 78 定义的 PayJoin 是另一种相关合作:付款人和收款人都提供输入,通常并不以构成大量等额输出为目标。比较方案时,应关注谁在合作、各方能知道什么,以及用户及其钱包在签名前到底核验哪些内容,而不是只看它们都使用了“隐私”这个词。 [1] [2] [3] [4] [5] [6]
共同交易不证明只有一个所有者
Alice 和 Bob 各自控制共同交易中的不同输入,并各自获得输出。这里,所有输入属于同一个人的假设是错误的。仅合并输入并不保证隐藏输出归属;金额、其他信息及后续花费都可能暴露关联。
要获得更完整的理解,请将本词条与以下词条结合阅读: Bitcoin, Bitcoin 隐私, 假名性, 钱包, UTXO, 交易. 反向关联还来自: Change Address, Bitcoin 隐私, 假名性, KYC.
01CoinJoin 协调器能窃取输入中的资金吗?+
在设计正确的非托管 CoinJoin 中,参与者始终自己保管密钥。签名前,他们会检查整笔交易,尤其是自己的输出、金额和手续费。没有必要签名,协调器无法创建有效支出,但可以干扰一轮交易或拒绝参与。但如果参与者签署了一笔把自己的钱转给骗子的交易,就是自己批准了这笔付款。
02CoinJoin 后的输出永远匿名吗?+
不是。历史仍然公开。地址重用、合并、向已知交易对手付款、可识别的钱包行为及网络元数据都可能减少或消除归属的不确定性。结果取决于协议和后续如何处理输出。