作者:IOBC Capital

从技术发展和演变的角度漫谈隐私交易相关的技术实现方案的发展情况。

你愿意公开你的钱包地址并且让所有人都知道你有多少钱吗?你愿意让所有人知道你的投资偏好、每笔支出吗?我想很多人是不愿意的。要实现这些数据的隐私保护,就需要用隐私协议。市场上一直有以隐私为卖点的数字货币,包括DASH、XMR、Zcash、Grin、Rose(Oasis Network)、FRA(Findora)、PHA(Phala network)、SCRT(Secret Network)等,加密行业发展的十几年中,隐私板块一直都占有一席之地。如果进一步将隐私赛道进行细分,可分为隐私计算网络、隐私交易协议、隐私应用、隐私币等四类。其中隐私币发展最早,隐私应用中的Tornado目前被采用较广,隐私交易协议和隐私计算网络目前最受关注。

https://appserversrc.8btc.cn/FqhcjllcBfd96EIkqI_df8GjMsID

本文篇幅有限,只从技术发展和演变的角度漫谈隐私交易相关的技术实现方案的发展情况。

四类实现隐私交易的技术方案

一、CoinJionCoinJoin:CoinJoin是一种混币机制,从不同的发送方那里获取代币,并将它们组合成一笔交易。第三方将代币打包发送给接收方。在用户端,每个接收方都会在一个从未使用过的地址中获得他/她的代币。以此来降低特定交易被追踪的可能性。DASH币是采用CoinJion技术实现隐私交易的典型案例。DASH币诞生于2014年,并非以隐私为唯一目的,而是将隐私交易作为提供给用户的一种选择,用户可以选择采用PrivateSend功能来进行隐私交易,也可以选择正常交易。在机制方面,DASH网络通过更高的奖励收益,鼓励矿工充当主节点,每个主节点矿工都有1000个DASH币作为缓冲资金。每个发起交易的用户都可以使用这些缓冲资金,从而达到“混币”的效果。由于混币的存在,交易信息被打乱,难以追踪,从而达到隐私保护的效果。二、隐匿地址+环签名隐匿地址:创建隐匿地址意味着每次接收加密货币时都会创建一个新地址。它确保外部各方无法将支付的地址与永久钱包地址联系起来。环签名:区块链交易需要数字签名来验证签名人是发送方,因为每个用户的签名都是唯一的,所以当用户签名时就不难追溯到与签名人所进行的交易。环签名策略是将签名与其他环成员的签名结合在一起:环成员签名的数量越多,直接将签名人与其交易联系起来就越困难。门罗币XMR是采用隐匿地址+环签名的组合模式实现隐私保护。门罗币并非选择性隐私,而是完全隐私。门罗币为每个钱包所有者提供一个新的私有视图密钥、收件人地址和一个私有消费密钥。而且XMR挖矿用一般电脑CPU即可完成,不需要专业矿机,这一定程度上让XMR更加去中心化。门罗币为了进一步提高隐私保护的有效性,发展过程中还进行了多次技术升级。为了将交易金额隐藏,RING-CT(环机密交易工具)应运而生;使用了RING-CT后,门罗区块链的隐私性能获得提高,但可扩展性方面有所牺牲,故而在后来又引入了Bulletproofs这种零知识证明协议,它提高了XMR的交易规模、减少了80%的验证时间。三、MimblewimbleMimblewimble这个词来源于《哈利波特》中的咒语“混淆咒”,主要有Grin和Beam两个项目使用了这个隐私协议。Mimblewimble所用技术包括了Confidential Transaction、CoinJoin和Cut-through。Mimblewimble协议是在匿名性和可扩展性之间找Tradeoff的方案,这是一个为基于output模型的公有账本提供加密货币隐私性的设计方案,并不涉及共识层,所以可用在几乎任何共识规则上。最初提出Mimblewimble的目的是为了给比特币提供隐私性。使用该技术后,可以让账户归属、交易关联和交易金额隐藏起来;还可以“洗币”,在比特币中有些币会被标记为“赃款”,很多机构会拒绝接收这些币,通过MimbleWimble技术可以实现洗币效果。四、零知识证明类零知识证明(Zero-Knowledge Proof),是指证明者能够在不向验证者提供超过陈述本身有效性的信息的情况下,使验证者相信某个论断是正确/真实的。零知识证明首先是由Goldwasser、Micali和Rackoff在1989年进行理论化。目前零知识证明在区块链行业主要用于两个方面:隐私保护、可扩展性。本文主要介绍零知识证明在保护隐私方面的应用。零知识证明用于隐私保护,最早是在Zcash上进行实践,后面逐渐有Aztec、Manta Network、StarkWare等诸多项目采用零知识证明机制,并演变了很多项新技术。通过“阿里巴巴和四十大盗”的例子来介绍零知识证明机制:阿里巴巴是证明者,大盗是验证者。大盗抓住了阿里巴巴,要他说出打开藏着宝藏的山洞的咒语,否则就要杀他。如果阿里巴巴直接说出咒语,有可能会因失去利用价值而被杀死;如果阿里巴巴坚持不说,大盗就会认为他不知道咒语,也会杀他。阿里巴巴想了个办法,要求大盗距离他一箭之地,如果阿里巴巴念咒语打不开山洞的石门或者逃跑,大盗就可以用弓箭射死他。通过这种方式,阿里巴巴能够在距离大盗足够远(大盗听不到咒语是什么)的位置,证明他确实掌握咒语。这个过程阿里巴巴(证明者)没有直接透露咒语是什么,但是能够使大盗(验证者)相信某个论断(阿里巴巴掌握咒语)是真实的。

zk-SNARK的全称是" Zero-Knowledge Succinct Non-Interactive Argument of Knowledge",中文名称为“零知识简洁的非交互知识论证”。zk-SNARK是以色列理工学院的Ben-Sasson等人在2014年的Zerocash论文中提出的,是目前应用最广泛的零知识证明类隐私技术,直接部署zk-SNARK算法的知名项目有Zcash、Loopring等。它允许人们证明自己拥有特定的信息,而无需透露信息的内容。zk-SNARK是一个将零知识证明机制转化成计算机程序语言的技术。基本逻辑如下图:

https://appserversrc.8btc.cn/Fr8rR4LtpyGkECik2r5GspTy0fat

zk-SNARK具体实现了怎样的隐私呢?zk-SNARK实现了完全的隐私,不仅隐藏了交易双方的地址和交易的金额,而且连节点都不知道交易的内容。但zk-SNARK的缺点是它需要可信初始设置(trusted setup),这个设置无论怎样设置,终归有些潜在安全隐患。在zk-SNARK的基础上,为了提高隐私性的同时也兼顾交易容量和交易成本的优化,后面又衍生出了Bulletproofs、zk-STARK、Sonic、PLONK、Supersonic等新型零知识证明。

相较于 zk-SNARK,Bulletproofs 不需要可信初始设置,但验证 Bulletproofs 比验证 zk-SNARK 证明更耗时,Bulletproofs被应用在了XMR项目中,以提高XMR的交易规模并减少其80%验证时间。

zk-STARK的英文全程为Zero-Knowledge Scalable Transparent Argument of Knowledge,“零知识可拓展的透明知识论证”。zk-STARK是由StarkWare研发的,使用新颖的密码学证明和现代带书来强制区块链上计算的完整性和隐私性,StarkEx采用了zk-STARK技术。zk-STARK允许区块链将计算转移到单个链下STARK证明者,然后使用链上STARK验证器验证这些计算的完整性。相较于zk-SNARK,zk-STARK被认为是一种更快、成本更低的技术实现,因为其计算量增加,但证明者和验证者之间的通信量保持不变,因此zk-STARK的整体数据量要远远小于zk-SNARK证明中的数据量。而且zk-STARK不需要初始可信设置,因为通过抗碰撞哈希函数,它们依赖于更简洁的加密技术。总体而言,zk-SNARK在完善和采用方面取得了重大进展,而zk-STARK则填补了zk-SNARK证明的许多缺陷(更快、成本更低、不需要初始可信设置)而被认为是协议的改进版,但zk-STARK采取链下计算链上验证的方式,在安全性方面似乎不如zk-SNARK。

伦敦大学的Sarah Meiklejohn、爱丁堡大学的Markulf Kohlweiss和Zcash的Sean Bowe提出了一种名为Sonic的零知识证明协议,Sonic是一种通用的SNARK,也就是说,只需要一个设置,它就可以验证任何可能。Sonic的出现,让零知识证明的演变向前迈出了一大步。不过Sonic的速度降低了,因为与非通用SNARK相比,Sonic的证明构建时间增加了约2个数量级,所以目前并没有知名隐私项目是采用Sonic技术方案。