SNICKER:Alice和Bob如何在没有交互的情况下混合比特币

SNICKER可能是比特币日益增长的隐私工具箱中的下一个工具。

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

幸运的是,比特币开发人员和研究人员正在提出越来越多的解决方案,供用户收回其隐私。比特币隐私方面的拥护者之一是亚当·“太平鸟”吉布森,他可能以其对JoinMarket的贡献而闻名,JoinMarket是一种允许用户混合硬币的协议,并为参与这种混合提供经济奖励。

最近,吉布森(Gibson)提出了一个新想法:SNICKER(具有重用加密货币密钥的简单非交互式Coinjoin)。现在已作为比特币改进提案(BIP)草案提交,SNICKER将允许硬币混合而无需任何同步或互动:无需用户同时进行协调或在线。

投币

到目前为止,SNICKER基于完善的比特币混合技术CoinJoin。当今可用的一些最受欢迎的混合解决方案已经使用了这种技巧,包括Wasabi钱包(ZeroLink),Samorai钱包(Whirlpool)和JoinMarket。

进一步阅读:什么是比特币混合器?

CoinJoin本质上是将多个交易合并为一个的工具。假设爱丽丝(Alice)想向卡罗尔(Carol)支付一枚比特币,而鲍勃(Bob)要向戴夫(Dave)支付一枚比特币。在此示例中,爱丽丝和鲍勃可以合作创建一笔大交易,在这笔交易中,他们都花费一个比特币(总共两个),而卡罗尔和戴夫则各自获得一个比特币。区块链间谍将无法辨别哪个发件人向哪个收件人付款,从而使所有人的隐私受益。

然而,实际上,交易的比特币数量经常是隐私泄漏。如果爱丽丝想向卡罗尔支付一枚比特币,而鲍勃想向戴夫支付两枚比特币,则很明显,谁通过匹配发送和接收金额来支付了谁。

这就是为什么CoinJoin更常用于混合的原因。爱丽丝和鲍勃没有给别人付钱,而是向自己发送了一个比特币。通过将其合并为一笔交易,区块链间谍无法分辨是谁退回了哪枚硬币:这些硬币混合在一起,从而保护了爱丽丝和鲍勃的隐私。

CoinJoin混币器如今可以工作,但是它们有一个缺点:它们需要交互性。仅当所有参与用户都签署了整个交易时,CoinJoin交易才有效-但是要签署整个交易,参与用户必须首先向其添加所有硬币和新的接收地址。这通常意味着他们需要大约几次传递交易,并且通常都要求他们同时在线。

对于许多用户来说,这样的要求有点困难,这就是CoinJoin交易不是很常见的原因之一。这些要求是SNICKER可以解决的。

SNICKER版本1

本节中描述的协议是SNICKER的第一个建议版本。这个版本比其他版本更容易理解,但必须注意,它实际上不是协议的最佳版本,也不是最有可能实现的版本。 (稍后会提供更多有关替代版本的信息。)

如此说来,SNICKER版本1的工作方式如下:

假设爱丽丝想混合一个比特币,以区块链上未花费的交易输出(UTXO)为代表。她要做的第一件事是将比特币重新发送到她的同一个地址。没错,在此版本的SNICKER中,她正在重复使用地址,这违反了比特币的最佳做法。但这很方便:它公开标记了UTXO为(可能)可用于混合。

顺便说一句,这并不意味着爱丽丝不能使用硬币。它仍然坐在她的钱包里,随时可以使用。如果有人在乎,它会被标记。

鲍勃还有一枚硬币要混合。 (实际上,数量不必事先相等,Bob至少需要拥有Alice的数量。)Bob不认识Alice,但他确实知道像Alice这样的用户在那里,标记了他们的UTXO作为可混合的。因此,鲍勃(Bob)在区块链上扫描了潜在的匹配项。他找到了爱丽丝的UTXO,可能还找到了更多匹配的UTXO,包括误报(并非所有重复使用的地址都真正可用于混合)。但是,为了简单起见,现在让我们假设鲍勃只找到一个匹配:爱丽丝的UTXO。 (稍后,我们将返回其他可能的匹配和误报。)

通过匹配,Bob现在获取与重用地址相对应的公钥。这完全有可能是因为地址被重用了:通过第一次使用它,爱丽丝在区块链上发布了该公钥。 (一旦花费了硬币,公钥就会在区块链上可见,而地址始终可见。)

此时,Bob拥有了Alice的UTXO(因为她标记了它)和她的公共密钥(因为她从地址中花费了一次)。

现在,鲍勃使用爱丽丝的公钥并将其与自己的私钥(用于他要混合的硬币)结合起来,以创建“共享秘密”。从字面上看,这是密码学书籍中最古老的窍门,因为只有爱丽丝和鲍勃可以生成它:鲍勃用他的私钥和爱丽丝的公钥,爱丽丝用她的私钥和鲍勃的公钥(对应于他要混合的硬币)。

因此,现在Bob有了Alice的UTXO和她的公共密钥,以及一个共享的秘密(因为他是用Alice的公共密钥和他的私人密钥生成的)。

鲍勃以新颖的方式使用共享的秘密。他用它来数学上“调整”爱丽丝的公钥。这种调整实际上会创建一个新的公共密钥。除了……没有人拥有私钥。然而。

有趣的是,由于有了另一种加密货币魔术,爱丽丝也可以发现经过调整的公共密钥作为经过调整的公共密钥如果她使用相同的共享密钥调整原始私钥,则调整后的私钥将对应于调整后的公钥。

换句话说,鲍勃可以为爱丽丝生成一个新的公共密钥,从而为爱丽丝生成一个新的比特币地址,只有她可以从中使用。即使她现在不知道

因此,鲍勃现在有了爱丽丝的UTXO和她的公共密钥,一个共享密钥以及一个新的爱丽丝比特币地址(使用她的公共密钥和共享密钥生成)。

这几乎足以创建有效的CoinJoin交易。具体来说,鲍勃(Bob)接受了爱丽丝(Alice)的UTXO,并为自己的硬币添加了UTXO,因此有两个输入。然后,他添加了爱丽丝的新地址和自己的地址作为输出(以及费用和其他一些详细信息,例如需要时提供自己的更改地址)。然后他签署了交易。

现在唯一缺少的是爱丽丝的签名。

到达爱丽丝

最后一步-到达爱丽丝-实际上比听起来容易,但需要最后一招。

Bob可以简单地将几乎完成的CoinJoin交易发布到某个地方,以供Alice查找。例如,在专用于SNICKER用户的公告板上;最好是使用Tor隐藏服务,或者以其他方式保证为发布者提供匿名。

但是,如果使用纯文本格式,这仍然不是理想的选择。如果间谍监视公告板,他们可以轻松查看哪些输入属于提议者(在此例中为Bob),以及哪个输入属于接受者(在此例中为Alice):签名者是提议者。这本身可能是隐私泄漏。但是,如果鲍勃提出更多提案来混合不同的硬币,那就更糟了。在那种情况下,例如,间谍可能能够将所有不同的UTXO连接到Bob,因为他的那批建议同时发布在公告板上。

因此,鲍勃改为用爱丽丝的公钥加密货币CoinJoin交易这样,只有爱丽丝可以解密交易,而间谍则无法学习任何东西。

在将加密货币交易发布到公告板上之后,Bob完成了他需要做的所有事情。如果他愿意的话,他可以在网上消失。

爱丽丝轮到

由于现在对CoinJoin事务进行了加密货币,因此确实引入了最后一个轻微的复杂性。虽然Alice知道要在哪里寻找软件包(在SNICKER公告板上),但她不知道要寻找什么:公告板上的所有CoinJoin交易看起来像加密的Blob。

只有一种出路。爱丽丝需要尝试使用她的私钥来解密所有软件包,希望其中一个可以变成有用的东西。

但是当Bob的加密货币Blob变成CoinJoin交易时,Alice拥有了完成混音所需的一切。她使用她的私钥和Bob的公钥(包含在他的输入中)来生成共享密钥,然后她可以用来创建新的,经过调整的私钥。在检查新密钥对应于她在输出中的新接收地址之后,她签署了交易并将其广播到比特币网络。

爱丽丝和鲍勃混在一起,即使他们从未互动过,也不需要同时在线。

尽管该过程在文本上听起来有些费力,但是请记住,所有过程都可以通过软件进行抽象,翻译成笔记本电脑或手机屏幕上的几个按钮,甚至完全自动化。

SNICKER版本2

到目前为止说明的SNICKER是该提案的第一个版本。吉布森(Gibson)已经提出了第二个版本,其他变种也在讨论中。

第二个SNICKER版本与此类似,但是避免了地址重用的需要-只是稍微复杂了一点。

在第二个版本中,Bob不会从重用地址获得Alice的公钥。相反,鲍勃从创建爱丽丝的UTXO的同一笔交易的输入中获取公钥。 Bob假定该事务中的至少一个输入是由Alice自己创建的,并且她仍然拥有这些输入的私钥。

鲍勃做出这个假设是因为这次,爱丽丝的UTXO甚至被更清楚地标记为可以混合使用,并且只有当爱丽丝控制与输入相对应的私钥时,才可以被如此清晰地标记。 SNICKER BIP没有指定如何进行初始标记,但是建议某些钱包(如JoinMarket钱包)可以正确地透露此类信息。另外,爱丽丝可以在公告板上简单地发布一条消息,宣传她的UTXO。

但更好的是:一旦开始使用SNICKER,查找新的匹配项将变得更加容易。这是因为识别SNICKER交易本身并不容易,并且现有的SNICKER用户可能希望再次混合其硬币。换句话说,在初始引导阶段之后,未混合的硬币将与先前混合的硬币混合,从而产生更多的混合硬币,而这些混合硬币又可以用于更多混合。

挑战与机遇

如上所述,SNICKER BIP仍只是草案,尚有待审核和可能的改进。 (自从Gibson在博客文章中首次公开提出该想法以来,它已经在某些方面发展了。)现在已经提交了该提议以使其成为BIP,因此可以对其进行标准化,并且可以使不同的提议相互兼容。钱包。

SNICKER还面临一些未解决的问题和挑战,尽管这些似乎都不是无法克服的。例如,其中包括应选择哪些UTXO作为匹配项,尤其是如何限制误报的数量。除了重复使用的地址外,还可以例如过滤潜在的匹配项,以获取金额,UTXO的使用期限或所用钱包的特定类型。

但是,正如本文前面提到的,即使存在多个匹配项(包括误报),这也可能只是一个小问题。要约人(“鲍勃”)可以简单地为所有要约人创建候选交易。即使这些提议发生冲突(因为Bob所有人都使用同一个UTXO),这仅意味着第一个做出回应的参与者(第一个“ Alice”)会做出回应-其他潜在的接受者会发现它们为时已晚,但没有危害将完成。对于误报,也不会造成任何实际伤害,Bob的要约只会放在公告板上,被永久忽略(或直到被删除)。

但是,垃圾邮件可能是一个特别重要的问题。因为公告板将托管加密的数据块,所以不可能过滤掉“伪造”建议:攻击者发布的乱码来破坏SNICKER协议。吉布森(Gibson)在他的BIP草案中提出了一些解决此问题的方法,但是这些方法会带来新的权衡,例如发布建议的成本。

另一方面,SNICKER还提供了一些迄今为止为简单起见而遗漏的优点。这样的好处之一是,要约人可以在要约人的产出中增加一些资金,从而增加接受该组合的经济动机。也可以同时与两个以上的用户进行SNICKER混合-尽管这样做会使技巧更加复杂。

正是由于该协议是非交互性的,Gibson认为,与其他一些隐私技术(例如JoinMarket)相比,SNICKER在钱包中的实现相对容易。到目前为止,Electrum钱包已经对采用该提案表现出了兴趣-尽管实际实施可能还有很长的路要走。

有关SNICKER的更多信息和背景,请参阅BIP草案,关注bitcoin-dev邮件列表讨论或阅读Gibson的提案(略过时)的博客文章。

资讯来源:由0x资讯编译自BITCOINMAGAZINE。版权归作者所有,未经许可,不得转载
提示:投资有风险,入市需谨慎,本资讯不作为投资理财建议。请理性投资,切实提高风险防范意识;如有发现的违法犯罪线索,可积极向有关部门举报反映。
你可能还喜欢