『学概念找员外』分布式混币

「力场 lichang.io」公链挖矿第一社区!

分布式混币不同于一般的混币交易,指的是用一种用户之间的点对点模式实现混币交易的协议。正如你可以想象的,这种方式在理念上与比特币更加契合。

分布式模式具有更高的可操作性。首先,分布式没有自举的问题,用户不需要等待一个有公信力的集中式混币提供商出现。其次,盗币行为在分布式混币模式下几乎不太可能发生,这种协议可以保证你可以收回你在进行混币交易时等值的比特币,正是因为这一点,即便是要进行一些对分布式混币有用的中心化的协作,由于无须说服别人自己是值得信任的,任何人都可以更加容易地设置并提供这样的服务。最后,在某些方式中,分布式混币模式可以提供更好的匿名性。

合币

分布式混币模式的主要方案被称为合币 (Coinjoin)。在这个协议中,不同的用户共同创建一个单一的比特币交易,该交易包含所有的用户输入。让合币得以有效运作的核心技术原理为:当一个交易拥有多个来自不同地址的输入时,来自每一个输入的签名都是分离并且相互独立的,所以这些不同的地址可以被不同的人所控制,而不需要任何一方来提取所有的私钥。

这样就可以让一组用户通过使用单一交易来进行混币交易。每一个用户提供一个输入和输出地址,然后组合起来就形成一个交易。由于输入和输出地址的顺序是随机的,因此攻击者无法建立输入和输出的匹配关系。参与者可以查询他们的输出地址已经包含在交易里,并且会接收到和他们输入时数量相同的比特币(减去所有的交易手续费)。一旦他们确认了这些,就可以对这个交易进行确认签名。

当其他人在区块链网络上查询这笔交易的时候,即使他们知道这是一笔合币交易,也不能确定输入地址和输出地址的匹配。从一个外来者来看,这些比特币已经被充分混币了,这就是合币的精髓。

目前为止,我们已经描述了一轮混币交易,如果你想要和不同组的用户重复这样的流程,你也想保证这些交易比特币块大小是标准的,这样就避免了无意中引入会造成信息泄露的旁路。

现在让我们来探究一下合币的细节,我们可以把该流程分为5个步骤:

  1. 找到想要混币的交易对手,作为节点;

  2. 交换输入/输出地址;

  3. 建立交易;

  4. 发送这个交易给其他人,每一个节点在确认他们的输出地址之后,进行签名;

  5. 广播这个交易。

一组想要进行混币的节点,首先需要发现彼此。这个动作需要由一个服务器来完成,其角色有点像一个“饮水坑”,允许这一组用户互相连接并组合在一起。不像中心化的混币服务,这些服务器既不可能有机会盗取用户的资金,也不可能危及用户的匿名性。

一旦一组节点形成,这些节点必须要互相交换它们的输入和输出地址。地址交换中要保证即便是组中其他节点也不能知道这些输入和输出地址之间的匹配关系。这一点非常重要,否则即使你与一组看上去随机的节点进行了合币交易,攻击者还是有可能伪装自己进入这个节点组,并由此获取输入和输出的对应匹配。要做到无关联的地址交换,我们就需要一种匿名通信协议。我们可以使用之前探讨过的Tor网络,或者一种被称为加密混币网络(mix-net)的特殊目的匿名路由协议。

输入和输出地址信息一经传达,其中一个用户——不管是谁——将会基于这些相对应的输入和输出地址构建一个交易,这个未被签名过的交易将会被转发传递,每一个节点都会验证这个输入和输出地址是否正确,并且签名确认。

如果所有的节点都遵循这个协议,那么这个系统就会正常工作。任何一个节点都可以组装交易,并且任何一个节点都可以将这个交易广播到网络中,甚至这些节点中的两个可以独立广播,当然,这个交易只会在区块链网络中被公布一次。但是,如果一个或多个节点想要进行破坏,那么启动一个拒绝服务攻击并阻止这个协议完成,是很简单的事情。

特别地,一个节点可以参与协议的第一阶段,提供输入和输出地址,但拒绝在第二阶段进行签名。或者,也可能是,在对交易进行签名确认之后,一个想要破坏交易的节点可以尝试使用它所提供给其他节点的输入地址到其他的交易中去,如果另一交易在网络中被抢先确认,那么合币交易就会被当作双重支付交易而被拒绝。

在合币交易中,有多种方案可以防止拒绝服务式攻击。其中一个就是对协议中参与交易的节点施加成本,不管是通过一种工作证明机制(类似于挖矿),或者是通过一种销毁证明机制(一种可证实能销毁你所拥有的微量比特币的技术)。另外的办法包括,使用一些密码学手段鉴别不符合规定的参与者,并且可以把它们从节点组里剔除。在本章结尾处,我们会看到一些相关细节。

你可能感兴趣的:(『学概念找员外』分布式混币)