说到比特币,大家会想到比特币是一个匿名的去中心化的虚拟货币。那么比特币真的是如大家所想的那样匿名吗?
在比特币中,所有账户都是由地址来标示的。用户可以拥有多个地址,然后每次使用其中的一部分地址来进行交易。每次交易时,用户需要使用地址对应的私钥来对交易进行签名。每次交易都会涉及到之前的一些交易(即在发送比特币时必须指定比特币的来源),因此所有的交易构成链状(如下图),这就是我们常说的区块链这个名词的渊源。
在比特币交易中,比特币是由一个地址转移到另一个地址。而地址所对应的真实身份是不可知的,也就是匿名的,所以这就是比特币的匿名性。没有人能够对所有比特币用户都进行去匿名化,但是为了防止“双花”问题,所有比特币的交易都是透明的。任何查看比特币区块链的人都能看到如下形式的交易“地址1N12…向地址1M23…发送了0.123 BTC”,但是我们只能看到发送方和接收方的地址,并不知道到底是谁向谁发送了0.123个比特币。不过光从这些交易中,我们就能获取到很多信息。
根据这些交易信息,我们首先想知道哪些地址是属于同一个用户的。你可能会问:“我们又不知道每个地址的真实身份,我们怎么知道哪些地址是同一个用户的?”诚然,我们没有办法精确地推断出哪些地址是同一个用户的,但是我们可以另辟蹊径根据比特币交易的特点来推断出哪些地址很大概率是同一个用户的。在比特币交易中,发出的比特币可以有多个地址的来源。如果一个交易中有多个提供比特币的地址,那么原因几乎就是用户想向某个地方发送一些比特币但是一个地址无法提供这个数量,所以用户会选择多个不同的地址作为比特币的输入。因此,我们认为同一个交易中的多个输入地址属于同一个用户。
我们可以使用地址的闭包来得到所有与这个地址同属于一个用户的所有地址,其中一个地址的闭包递归定义如下:1) 这个地址在这个闭包中;2) 如果地址A在闭包中,并且存在一个交易使用了从地址A和地址B的比特币作为来源,那么地址B也在闭包中。当然,这只是一种最简单地利用交易信息来推断的方式。学术界还有很多不同的启发式方法来判断哪些地址同属于一个用户,这里就不过多赘述了。
那么你不禁想问:“听上去真的能将一部分地址归于同一个用户耶,好厉害呀!但是这又有什么用呢,我们还是不知道地址的真实身份呀?”如果我们能获取到一小部分地址的真实身份,然后使用上文所描述的推断方式,那么是不是就能得到这些真实身份的更多地址,不就相当于间接地推测出很多地址的真实身份了吗?
根据这个想法,我们可以想办法搜集一些数据。网上许多用户都会公开声称他们自己的地址,比如blockchain.com/btc/tags中有大量的用户提交的地址和相应的标签。不过这些数据并不是那么可靠,需要进行筛选。除此之外,如果你自己有比特币,你可以通过跟在线钱包、交易所等服务进行交易来获取这些服务的地址。总结来说,通过这一小部分带标注的地址,我们可以推断出远多于这一小部分的大量地址。而这些地址则构成了比特币网络中的一个重要且活跃的部分。
如果你认真地看到了这里,那么你应该明白了比特币并不是绝对匿名的。有一些研究人员就尝试去分析比特币网络中的盗窃问题。盗窃问题在比特币网络中是经常发生的,比如黑客攻击了比特币的交易所或者黑客给个人用户的电脑安装了木马来索取比特币。
假设一个黑客窃取了成百上千个比特币,但是非常不幸的是他不能简单地将比特币转移到已知的交易所,因为他的地址是公开的。所以黑客会将大额的比特币不断地分拆,直至每个地址都仅包含非常小额度的比特币。虽然黑客采取了这种或者更加复杂的策略来试图掩盖比特币的流动,但是我们仍然能够追踪被盗的比特币的流向,因为黑客最终还是需要使用交易所来兑现。
总结来说,由于比特币用户们的某些习惯导致了比特币目前的匿名性并没有达到比特币协议设计的那样。不过对于普通用户来说,比特币的匿名性基本不会受到影响。但是对于那些窃取比特币的黑客来说,比特币已经无法给他们提供绝对的匿名保证了。
领取专属 10元无门槛券
私享最新 技术干货