当前比特币交易并非完全匿名。 尽管比特币地址并未与真实世界身份相关联,但不代表不能关联。 监控未加密的点对点网络、分析公共区块链、了解客户(KYC)政策或反洗钱(AML)管制都能查出谁、出于什么目的使用了比特币。
隐私角度来看,这样不妥。 比方说:比特币个人用户的收支、资产总额这种,没必要昭告天下;再或者,企业用户肯定是无意将交易细节‘披露’给竞争对手。
此外,由于比特币天生可追踪,因此‘来路可疑’的比特币,价值有可能不及‘正经’比特币,从而影响可互换性/互通性。 长此以往,不免殃及比特币整体的价值主张。
当然了, 社区一直坚信办法总比问题多。那么,有一些可能的解决方案来增强隐私、提高互通性。
其中一个方法叫‘机密交易’。
背景
一般比特币交易都会记录在公共区块链上,所有人可见,这一点跟常见的数字金融基础设施是不一样的,但为了实现不依赖任何中央权威进行验证,就必须这么干。公链也因此充斥各种大大小小的数额、转账地址交易信息。
为增强隐私,可以将比特币交易金额隐藏。 这个概念最早在2013年由Hashcash创始人Adam Back提出,当时是叫 “有同态价值的比特币”。 后来被比特币核心开发者Gregory Maxwell、Pieter Wuille和Blockstream数学家Andrew Poelstra选中认真研究了一番后,才有了后来的Blockstream测试网Alpha侧链机密及交易这一说。
工作原理
机密交易结合了好几种加密手段, 值得一提的是Borromean环签名、Pedersen承诺机制。
这里就不深入探讨具体的加密细节了,反正结果就是,只有交易的发送人和接收人才知道交易金额, 其他人还能看到有这笔交易,再具体的就不知道了。
有点酷的地方是,尽管交易金额被部分或全部隐去,‘旁观者(onlookers)’这厮,也还能用隐藏金额算出来点什么东西。 比方说,将交易全部输相加,再将交易全部输出相加,最后比较两个‘和’是不是相等的。[注意,这里说的是种加密形式的算数,不披露任何具体金额或者‘和’。] 那么,节点即便不知道交易数额,也能够判断交易合规。
(注:矿工费的金额始终可见,确保矿工不会坐地起价,且不存在影响隐私这一说。披露或隐藏多少信息根据交易双方意愿)。
软分叉
机密交易或许能与当前比特币协议兼容,但是细节还不够丰满。方案可以通过软分叉实施,略微有点‘黑科技’的意思。
是这样的。
为确保新(更新)旧(未更新)节点同步,一撮比特币首先要过一道‘任何人可花费地址(anyone-can-spend address)’,才能用作加密交易。
任何人可花费地址,意思是不用地址私钥或签名也能花掉里边的比特币。
反正旧节点是这么想的。
新节点的话,首先要识别出这个地址,而且新节点只认可来自该地址且包含正确签名的交易。多数算力采用这个规则的情形下,‘任何人可花费地址’中的比特币就不会被没有私钥的人(也就是任何人的有意思)盗用。 旧节点可能会惊奇为何没人掏空地址中的比特币,但只要未打破协议规则,旧节点其实是不care那么多的。
接下来,就有趣了。
假设机密交易由‘任何人可花费地址’发出, 新旧节点都能看到这笔交易。 但各自的观察体验是不一样的: 新节点直接识别出这是机密交易,可能需要检查交易是否合规;旧节点这厮属于被‘骗’,然后将交易识别成‘空交易(zero-bitcoin transaction)’,意思是说旧节点认为‘任何人可花费地址’中转出了‘0’枚比特币。
新旧节点各自后续交易也是这个逻辑。新节点继续观察到新交易,知道有数量大大小小的比特币被转来转去,具体多少就不知道了。 这期间,旧节点继续观察各种‘空交易’,坚信‘任何人可花费地址’里的比特币一直趴着没动。 虽然旧节点们也会狐疑怎么有那么多空交易,但是,只要协议规则未打破,他们ok的。
有人会觉得这不乱套了么。
解释一下,特别在UTXO集不兼容的大背景下,这么干不会造成大混乱的具体原因是:加密交易中接收的比特币只能用在机密交易中。这就是为什么要过一道‘任何人可花费地址’的原因,好比把一撮比特币锁在机密交易这一层,且仅在这层使用,不允许在比特币区块链上自由移动。
那么,不想继续玩神秘的用户,想要回归‘正轨’,得反着过一遍‘任何人可花费地址’: 机密交易的接收方把比特币发送回‘任何人可花费地址’,然后就能公开的交易了。
这时候,新节点会检查机密交易层‘流出’的比特币数量是否有问题,而旧节点这边,把‘流入’的比特币视为解冻资金的首次活动。
那么,可以把任何人可花费地址看作是‘隐身装置’。隐藏始于‘任何人可花费地址’:由该地址发出的交易,则数额对所有节点隐身。隐藏终于‘任何人可花费地址’:发回至该地址的交易,则数额 “重现”。
缺点
机密交易不是解决隐私问题的万能钥匙。
最明显的一点,机密交易虽然屏蔽了金额,旁观者还是能看到交易双方的地址。
也有解决方案。
比方说,可以放漏报或者空交易这种烟雾弹,掩盖比特币的真正流向,但是有点麻烦。或者,将机密交易与CoinJoin联合使用,CoinJoin类似‘公用比特币充值卡’,一堆人先往卡里扔钱,然后拿着卡交易,具体谁用了来自谁比特币地址的比特币,倒起来就比较困难了。
机密交易的另个不足是,屏蔽的金额实际上仅对当笔交易有效。若后续交易非机密交易,也就没什么意思了。 因为可以通过后续交易反推出上笔机密交易金额,比方说, Alice给Bob转了未知数量的比特币,Bob随后给Carol转了5个枚比特币,然后返回2枚比特币找零, 问: Alice给Bob转了几枚比特币。
因此,恐怕只有大规模采用机密交易才能显现出优势。那么问题又来了,还挺棘手:机密交易是相当的资源密集。机密交易是一般交易20倍大小,计算大概是一般交易的三十倍。 也就是说,机密交易的成本巨高,用的人也少,大规模使用目测是困难了。
重要的是,机密交易过于庞大的数据或与扩展性或者去中心化相悖。 要么影响比特币交易处理速度,要么影响运行全节点的用户数量,要么都影响。
最后,不一定所有人都觉得比特币应该更私密或是互通,无疑增加了实施软分叉的复杂性。
感谢Pieter Wuille、 Adam Back及Monero首席开发者 Riccardo Spagni提供的信息和反馈。
Confidential Transactions: How Hiding Transaction Amounts Increases Bitcoin Privacybitcoinmagazine.com
网友评论