使用自动转账的找零合约
匿名币面临的最大挑战之一就是处理找零问题。
Darksend 完成多个会话的混合后,用户就有了匿名的资金。但是,用户购物后获得的找零可能跟用户的资金合并在一起。这种关联称为“向前关联”
在真实世界中,你可能给商家 100 美元购买物品,商家找给你 4 美元零钱。在虚拟币世界中,这 100 美元分成两部分,96 美元和 4 美元。你可以看出它们就是曾经的 100 美元。
问题就来了: 你如何让虚拟币可以像现实世界中一样找零钱呢?
找零合约
用户 A 想从商家 B 那里购买笔记本,价格是 96 美元。
1: 用户 (A) 给商家(B) 发送一条消息,声明如果找给 4 美元,就支付 100 美元。
2: (B) 对这个消息签名同意,将签名返回给 (A)。这就生成了一个合约。
3: A 进行了交易 1 (支付100 美元,但是只有 A 找回 4 美元才成立). A 将交易1 提供给 B
4. B 进行了交易 2 (支付4 美元,但是只有 A 支付 100 美元时才成立). B 将交易2 提供给 A
5. A 和 B 进行了交易3 (A 支付给 B 96 美元) 和交易 4 (B 付给 A 4 美元)
6. A 和 B 公布了 TX3 和 TX4
如果交易3 和交易 4 都发布,找零就会通过。
如果其中有一个没有发布, A 或 B 可以发布交易 1 或 2 确保他们收到钱。
交易1 和交易 2 会从CScript 中关联到支付,所以这不是最理想的。但是可以确保系统仍是不信任的。
通过找零合约,你会收到零钱,且跟你要支付的钱没有关系。因为找零会分成没有关联的两个交易进行。由于在网络中找零会经常发生,会进行高质量的资金混合,使其更像传统现金找零。
该功能将在协议水平实现,几乎自动进行。商家可以收到找零合约并批准。但是,签署并发布了交易1 和交易2 后,没有办法毁约。所以商家必须确保付款数额正确。
以上所说的步骤完成后,类似于商家从他们的抽屉里找钱给你,这无疑会是暗黑币匿名性的一大改进
感谢 UdjinM6 帮助提出此理论!
论坛:https://darkcointalk.org/threads/change-contracts-using-atomic-transfers.3067/
比特儿_Lily 翻译