Payjoin 让付款人和收款人一起准备一笔比特币支付。双方都向同一笔交易投入自己的资金,但各自保管私钥,并自行授权花费自己的钱。这样,只观察公开链上记录的人就更难推断这些币原来归谁所有。它既不会产生另一种货币,也不保证匿名。
爱丽丝要向鲍勃付款。钱包是接收和发送比特币的应用程序或设备。她的钱包并不是从一个银行账户总余额中扣款,而是选择以前交易中尚未花费的输出,也就是 UTXO。每个输出都有金额以及花费它的条件。新交易通过输入引用要花费的 UTXO,再创建新的输出,把钱分配给鲍勃,并在需要时把找零留给爱丽丝。普通支付只使用爱丽丝的资金;Payjoin 则让鲍勃也加入自己的 UTXO。鲍勃仍然收到约定的付款,同时移动一部分原本就属于他的钱。两个钱包都必须核对结果。然后,各方用数字签名授权花费自己的输入,不把私钥交给对方。私钥是用于生成这种签名的秘密数值。 [1] [3] [8] [6]
分析者常常假设,一起花费的输入来自同一个钱包,这被称为 common-input-ownership heuristic。这不是比特币规则,也不是身份证明,而是依据常见行为作出的推断。Payjoin 创建的有效交易可以使这个推断失效。观察者不能再自动把所有输入归给爱丽丝,不过其他信息仍可能帮助其分析。 [1] [3]
下面用 sats 表示金额,这是比特币的最小单位。 为便于理解,先暂时忽略手续费。爱丽丝有一个 100,000 sats 的输入,向鲍勃支付 20,000 sats,另有 80,000 sats 找零。鲍勃加入自己的 50,000 sats 输入后,他的输出增至 70,000 sats。输入总额和输出总额仍各为 150,000 sats。鲍勃没有额外收到礼物:其中 50,000 sats 原本就是他的,新增的只是约定的 20,000 sats。当然,实际交易还必须支付手续费。 [1] [6]
钱包要合作,就需要共同的流程和消息格式。Nicolas Dorier 编写的技术文档 BIP78 于 2019 年获得编号,它使用 PSBT — Partially Signed Bitcoin Transaction。这是一种数据包,包含交易以及检查、签署交易所需的信息,并不等于已经发到网络上的支付。支付请求中的 pj 参数给出钱包应联系的服务地址。付款人先把原始支付交易放进一份已完全签名并完成最终处理的 PSBT 中发给对方。虽然格式名称里有“partially”,这份交易已经可以广播。收款人返回修改后的提案,其中加入了自己的输入及其签名。付款人核对后重新签署自己的输入,再向比特币网络广播最终交易。连接必须加密,并验证远端服务的身份。PSBT 不是钱包备份:用于派生密钥的 seed、私钥,以及不必要的密钥派生信息,都不应发送。 [1] [5]
付款人钱包必须检查自己的输入及受保护输出是否保留,找零是否被任意减少,以及手续费出资是否超过允许的上限。它只签署自己原有的输入。协议允许在明确条件下修改收款人的某些输出,并不意味着可以随意改变整笔支付的去向。在签名设备上,应看懂显示的金额,而不是机械地确认下一个画面。 [1] [5]
增加输入会占用空间,可能提高这笔支付的绝对手续费。由谁承担、上限多少,需要钱包协商。不过,收款人也可以同时合并自己的 UTXO,或加入本来要单独发送的其他支付。因此,总体节省多少,应比较相同的一组操作,而不能宣称每笔 Payjoin 都更便宜。交易更大而手续费的 satoshi 数量相同,意味着费率更低。 [1] [2]
BIP78 要求收款人提供可从互联网访问的服务,双方也必须同时通信。手机一旦断线,就会很不方便。因此,BIP77,也就是 Payjoin v2,把服务器用作临时信箱:一个钱包留下消息,另一个在约定的会话到期前,稍后取走消息。这就是异步通信。支付提案本身采用端到端加密,参与方的钱包能读取,信箱运营者不能读取。OHTTP,即 Oblivious HTTP,提供另一层保护:请求经过独立的中继转发,因此信箱服务器通常看不到钱包的网络 IP 地址。IP 地址是设备通过互联网通信时使用的网络地址。隐藏这层关联的前提是中继与服务器不共享记录。控制比特币的私钥不会交给其中任何一方。不过,服务器仍可延迟或丢弃消息;加密本身并不保证送达。 [2] [4] [7]
Payjoin 不会自动让支付匿名。金额、输入、输出和确认时间仍然公开可见。对方还知道协商过程,商家可能有写着你姓名的订单。公开交易不必带有 Payjoin 标签,但地址复用或钱包特征可能留下其他线索。自动收款方还必须防止有人不断提交却不完成请求,以探查其 UTXO。 [1] [2]
原始的已签名交易可以作为普通支付的后备方案。在正确协议中,它与 Payjoin 提案花费相同的原始输入,因此最多只能确认其中一笔。但这不意味着报错后可以不检查就另建一笔独立支付。已经交出的签名可能使收款人能够广播原始交易。钱包应清楚显示实际完成的是 Payjoin、普通后备支付,还是暂时都没有,并与链上状态核对。 [1] [2]
发送和接收 Payjoin 是两种能力,具体的钱包及其版本需要兼容。如果只是处理请求,却没有加入收款人的输入,就不会产生这里描述的输入所有权隐私优势。2026 年 10 月 17 日核查时,BIP78 状态为 Deployed,而 Dan Gould 与 Yuval Kogman 编写的 BIP77 状态为 Draft。Payjoin 由应用协商,使用普通比特币交易;不需要等待 Soft Fork,也不改变发行规则。 [1] [2] [3]
要获得更完整的理解,请将本词条与以下词条结合阅读: CoinJoin, Bitcoin 隐私, PSBT, 假名性, UTXO, Satoshi. 反向关联还来自: Change Address, Bitcoin 隐私, 假名性, Chain Surveillance.