虽然中本聪 白皮书 暗示隐私是比特币协议的设计目标,区块链分析通常会破坏用户的隐私。这是个问题。比特币用户可能不一定希望全世界知道他们的钱花在哪里,他们的收入或拥有的数量,而企业可能不想将交易详细信息泄露给竞争对手—仅举一些例子.

但是,有一些解决方案可以重新获得隐私。一个新的解决方案是 建议的 在本周的bitcoin-dev邮件列表中,由化名“ ZmnSCPxj”的比特币和闪电开发商开发。提出的解决方案称为Payswap,它通过反转付款人和受款人之间的关系,提供了一种简单有效的技巧,使区块链分析变得混乱.

这是这样的.

比特币支付的可追溯性

典型的比特币交易是从一个人(付款人)到另一个人(收款人)的付款。举例来说,例如,爱丽丝(Alice)想向鲍勃(Bob)3比特币付款。如果爱丽丝拥有一大块价值恰好为3个硬币的硬币(一个UTXO),而为了简单起见,我们忽略了费用,那么她可以创建一个交易,其中一个输入(指她的地址持有3个硬币)和一个输出(指Bob的比特币地址) 。这3枚硬币实际上是从爱丽丝的地址移到鲍勃的地址。简单的.

但是,通常情况下,爱丽丝将没有足够的零钱来支付给鲍勃。例如,爱丽丝可能只有2个硬币的大块。在这种情况下,她仍然可以创建交易。该交易将有两个输入(两个大块的2个硬币,大概是来自两个不同的地址),还有两个输出:一个输出值3硬币归因于鲍勃的地址,一个输出值1硬币归她发送给她的一个改变自己的地址.

不幸的是,正因为这样的交易是如此典型,它会向区块链分析师透露信息。他们将假设3枚硬币的大块构成了付款(发给Bob),并且假设1枚硬币是零钱(返回给Alice)。毕竟,如果付款只包含1个硬币,那么Alice就不需要包含两个输入。这使区块链分析师能够跟踪区块链上的付款,并最终实现地址集群和更多侵犯隐私的策略.

输入Payswap

Payswap基本上用两笔付款代替了从Alice到Bob的付款:一笔从Alice到Bob的付款,另一笔从Bob到Alice的付款。安全地进行此操作需要一定的技术复杂性-下文中将进一步介绍-但现在让我们忽略它.

在这种情况下,Alice仍将使用两个输入创建事务:两个大块的2个硬币。但是这次,交易将仅包含一个输出:她会将所有4个硬币发送给Bob。这已经可能使区块链分析师感到困惑。由于大多数典型的付款交易都包含更改地址,而该交易却不包含,因此他们可能(错误地)认为这是某笔交易,例如有人将自己的资金转移到新的钱包中.

同时,鲍勃还将与爱丽丝进行交易。假设鲍勃有0.6硬币大块。他将创建一个包含两个输入(0.6个硬币的块)和两个输出的事务:1个硬币用于Alice,而0.2个硬币作为找零。这看起来像是常规交易(从鲍勃到爱丽丝1枚硬币).

如果使用了不同的比特币地址,则区块链分析师将无法判断此处所述的两项交易是在同一个人(爱丽丝和鲍勃)之间发生的。相反,除了他们对Alice交易给Bob的错误假设之外,现在他们对Bob交易给Alice的假设也有错误的假设。总体而言,他们可能认为Bob付给Alice 1比特币,而实际上Alice付给Bob 3比特币.

区块链分析师,由于他们的错误假设,会被误导,从而使爱丽丝(Alice)和鲍勃(Bob)的隐私都受益。通过扩展,如果区块链分析师的假设经常被这些技巧所打破,那么他们的假设将变得毫无用处.

添加CoinSwap

实际上,Payswap技巧会稍微复杂一些.

在上面的示例中,还有一个问题需要解决。由于爱丽丝(Alice)和鲍勃(Bob)不互相信任,因此双方都不愿意先付款,因为这会使对方消失而无需退还款项.

这可以通过一个比较老的技巧来解决,即 换币. 基于原子交换(一个更老的技巧),可以使两个彼此独立的事务相互依赖。任何一方都不能拒绝退还款项.

如果您知道CoinSwap和/或原子交换的工作方式,那么Payswap背后的想法实际上非常简单。 Payswap使用不相等的金额,而不是在原子链接的交易中使用(接近)等额的金额;差额构成付款。 (如果您对此很清楚,则无需阅读本文的其余部分。)

更详细一点,Payswap将两个额外的事务引入等式.

首先,Alice创建了一个将硬币发送到非常基本的智能合约的交易,而不是创建将4个硬币直接发送到Bob的交易。可以通过两种方式从此智能合约中索要硬币。如果鲍勃还包括鲍勃本人生成的秘密号码,则鲍勃可以要求保护它。或者,如果鲍勃未领取硬币,则可以在一段时间后由爱丽丝取回硬币.

其次,鲍勃没有创建将硬币直接发送到爱丽丝的交易,而是创建了将硬币发送到基本智能合约的交易。 (然后将0.2枚硬币作为找零返回给自己。)同样,可以用两种方式要求使用该硬币。如果爱丽丝包括与鲍勃产生的相同的秘密号码,那么爱丽丝可以要求保护。或者,可以在一段时间后由Bob声明。 (比第一个智能合约多一些的时间。)

两项交易都被广播到比特币网络以包含在一个区块中.

现在,当鲍勃想要收取款项(4个硬币)时,他将根据爱丽丝创建的智能合约进行交易,从而包括他生成的秘密代码,以索取这笔钱。重要的是,这样做后,他在比特币区块链上透露了他的秘密代码,供爱丽丝看。有了它,爱丽丝就可以根据鲍勃创建的智能合约创建交易,要求将1个硬币退回她的地址.

换句话说:Bob只能让Alice领取1个硬币,因此只能领取4个硬币。两种交易都通过,或者都不通过.

如果出于任何原因Bob都没有要求付款,那么Alice创建的基本智能合约的时间锁定将到期,并且她可以要求她收回4个硬币。稍等一会儿,鲍勃也可以收回他的1个硬币。没有伤害.

值得指出的是,可以通过一些奇妙的数学技巧来创建这些智能合约,以隐藏密码签名中的秘密代码,以防止区块链分析师通过代码链接这两项交易。但是,有关如何执行此操作的详细信息不在本文的讨论范围之内。如果您想了解更多信息,请参阅无脚本脚本中的这篇文章。.

最后,虽然使用原子交换会增加一些复杂性,但区块链分析师会困惑于相同.

Payswap的缺点

Payswap确实需要权衡取舍.

最明显的缺点是,付款将需要四笔交易,而不仅仅是一笔交易。需要两次交易才能将资金从爱丽丝转移到鲍勃,并且需要两次交易才能将“零钱”从鲍勃转移回爱丽丝。这需要更多的块空间,因此需要更多费用.

此外,付款需要Alice和Bob进行交互。爱丽丝不能简单地向鲍勃的地址汇款;取而代之的是,这两个必须在比特币协议之外进行通信,才能同时确定鲍勃(Bob)的秘密号码的标识符(哈希).

因此,该解决方案实际上在Lightning上下文中可能更有用。 Lightning Network上的付款路由完全基于秘密号码的交换,就像上面示例中的Bob生成的一样,因此不难发现相同的窍门将如何应用。但是,在闪电网络上,额外的交易不会打到区块链上,而无论如何付款都需要交互.

实际上,ZmnSCPxj主要专注于比特币的第2层网络以进行快速和廉价的支付,最初是在Lightning Network的背景下提出Payswap的想法的,他简单地将其称为“自付”。但是在以后的文章中会更多地讨论这个建议…