比特币经常被视为数字现金,但这种说法有待商榷。如果Alice以现金支付给Bob 10美元,后者无法了解这笔现金的来源。Bob将这10美元转给Carol时,Carol更是无法得知这10美元最初来自Alice。
然而,比特币的固有公共属性决定了情况有所不同。给定代币(准确来说是未花费的交易输出或UTXO)的历史可供所有人查看。这很像在账单中写入交易金额与参与者姓名。
不过,公共地址可以匿名,用户也因此可以轻易隐匿身份。然而,比特币并不能完全隐匿踪迹。针对区块链的分析技术日趋成熟,已经可以有效将地址与身份相匹配。除了其他监视技术,专用实体也可以对加密货币用户去匿名化。为了解决这道难题,市场中相继出现多种解绑交易的技术。
从广义上讲,代币混合是指所有通过置换来混淆资金的操作。然而,在加密货币领域,代币混合由第三方提供服务。服务供应商通常会收取用户的代币(以及少量手续费),之后返还一些与发送的代币毫无关联的代币。此类服务也被称为不倒翁或混币器。
当然,这种中心化服务的安全性与匿名性值得怀疑。用户无法保证混币器会归还资金,或者返还的代币未在某种程度受到污染。另外,使用混币器时,IP和比特币地址也可能被第三方记录。代币混合的结果是用户放弃资金控制权,希望获得毫无关联的代币。
目前有一种名为“CoinJoin交易”的新方案,给用户很大程度的否认空间。也就是说,使用CoinJoin之后,用户与以往交易之间的确切关联证据就被抹去了。许多CoinJoin解决方案成为混币器的去中心化替代方案。虽然协调员有可能介入,但用户不需要放弃资金管理权。
CoinJion交易问世于2013年,由比特币开发人员Gregory Maxwell首次提出。在帖子中,他简单介绍了此类交易的结构,以及如何在不修改协议的情况下获得高额私密收益。
从本质上讲,CoinJoin交易融合了多位用户的输入。在解释这项技术的原理前,我们先来了解基础交易的结构。
比特币交易由输入和输出组成。当用户希望交易时,他们将UTXO作为输入,指定输出并对输入签名。请注意,每路输入均独立签名,但用户可设置多路输出(目标为不同地址)。
我们以一笔由四路输入(每路输入0.2 BTC)和两路输出(0.7 BTC与0.09 BTC)组成的给定交易为例,可以对其进行一系列假设。首先观察支付的发生——发送方将其中一路输出发送给某人,随后收到找零。这笔交易使用四路输入,因此较大的输出应该指向接收方。请注意,我们需要为矿工支付手续费,输出会损失0.01 BTC。
发送方也可能想创建大额UTXO,因此合并小额输入来获得0.7 BTC的目标输出。
我们还可以假设每路输入均为独立签名。这笔交易最多有四方对输入签名。这正是CoinJoin生效的原理。
其核心思想是多方协作创建交易,各方提供输入与预期输出。所有输入相融后,他人便无法识别输出与用户的对应关系。我们来看以下图解:
如图所示,四位参与者希望打破交易之间的关联。他们相互协调(或通过专属协调员),宣布希望计入的输入和输出。
协调员将掌握所有这些信息并绘制成交易,在向网络中广播前,让每位参与者签名。用户签名后,交易在变为无效前无法更改。因此,协调员无法盗取资金。
这笔交易充当了代币混合的黑匣子。别忘了,我们是将初始UTXO销毁来新建UTXO。新旧UTXO的唯一联系正是交易本身,当然我们也无法区分参与者。最理想的情况也只是知道有参与者提供输入,并且可能是输出结果的所有者。
即便如此,我们也无法百分百确定。看到上文所述的交易,谁又能确定是有四位参与者?或者是只有一个人在向他的四个地址发送资金?还是两个人分别买入两次,各自的地址分别收到0.2 BTC?也有可能是四个人向新参与者发送资金,或者资金回流至本人。我们无法确定具体情况。
CoinJoin实施方案的问世足以让人们对交易分析方法产生怀疑。在许多情况下,您可能会推断出发生了CoinJoin,但无法确定输出拥有者。随着这种技术日渐普及,所有输入由同一用户所有的假设逐渐削弱。在广泛全面的生态系统中,隐私性完成飞跃式提升。
在上文的示例中,我们假设交易的匿名集合拥有4位输入者,而输出所有者可以是这4位中的任意一位。匿名集合越大,找到交易与原始拥有者对应关系的概率越低。幸运的是,最近的CoinJoin方案可以让数十位用户以去信任的方式融合输入,“可否认性”显著提升。最近,CoinJoin成功执行了百人交易。
对于非常注重隐私的用户,混币是一种非常有效的补充手段。与提议的隐私升级(如保密交易)不同,这项技术与现行协议兼容。
对于信赖第三方诚信度与有效方法的用户来说,混币服务简单便捷。对于青睐可验证或非托管方案的用户,CoinJoin才是绝佳之选。精通技术的用户可以手动,或者使用软件工具将更复杂机制抽离出去。如今,随着隐私性需求日益提升,市场中的此类工具也将愈加受到青睐。