在加密货币领域,匿名性一直被视为一项极为宝贵的特性。它不仅是可替代性的前身,对于普及的货币形式而言,也是不可或缺的。大多数加密资产持有者都不希望他们的资产和交易记录被完全公之于众。在众多旨在为区块链提供隐私性的加密技术中,zk-SNARKs和zk-STARKs脱颖而出。
zk-SNARKs代表了简化的非交互式零知识证明,而zk-STARKs则代表了简化的全透明零知识证明。zk-SNARKs已经在诸如Zcash和JP Morgan Chase项目等基于区块链的支付系统中得到了应用,并作为一种安全地从客户端到服务器的验证手段。尽管zk-SNARKs已经相当成熟且被广泛应用,zk-STARKs也被推崇为该协议的新版和升级版,旨在解决zk-SNARKs之前的许多不足。
阿里巴巴的洞穴寓言1990年,密码学家Jean-Jacques Quisquater(及其他合作者)共同发表了一篇论文,题为《如何向孩子解释零知识证明协议》。在这篇论文中,他们引入了阿里巴巴洞穴的寓言,用以阐述零知识证明的概念。这个寓言自问世以来,已被改编成多个版本,但其核心思想始终保持一致。
设想一个环形洞穴,它有一道魔法门,只有低声说出正确密码的人才能打开。在这个例子中,Alice(黄色)想要向Bob(蓝色)证明她知道密码,但又不希望泄露密码。为了做到这一点,Bob在外面等待,Alice进入洞穴,并从两条路径中选择一条走到尽头。在这个案例中,她选择了路径1。
过了一段时间,Bob走到洞穴入口,喊出他希望Alice从哪一侧出现(在这个案例中应该是路径2)。
如果Alice真的知道密码,她将能够按照Bob的要求从正确路径中出现。
这个过程可以重复多次,以证实Alice并非偶然选择了正确的路径。
阿里巴巴的洞穴寓言阐释了零知识证明的概念,这一概念是zk-SNARKs和zk-STARKs协议的核心。零知识证明可以用来证明某人拥有某些知识,而不会泄露有关该知识的任何信息。
zk-SNARKsZcash是zk-SNARKs的首个广泛应用案例。尽管像Monero这样的隐私项目也采用了环形签名等其它技术,但zk-SNARKs从本质上改变了数据共享的方式。Zcash的隐私特性源于其交易可以被加密,同时仍然可以通过零知识证明来验证其有效性。因此,执行共识规则的人不需要了解每个交易的所有细节。值得一提的是,Zcash的隐私功能默认是关闭的,用户需要手动开启。
零知识证明允许一个人向另一个人证明其陈述的真实性,同时不会泄露超出陈述本身的信息。参与方通常被称为证明者和验证者,他们所持有的秘密被称为证据。这些功能的主要目的是在双方之间尽可能减少数据交换。换句话说,人们可以利用零知识证明来证明自己知道某些知识,而不会透露任何有关该知识的信息。
在SNARK的缩写中,“succinct”意味着这些证明简洁且易于验证,“non-interactive”意味着证明者和验证者之间的交互几乎为零。早期的零知识证明协议通常需要证明者和验证者进行通信,因此被称为“interactive”零知识证明。但在“non-interactive”结构中,证明者和验证者只需交换相关证明。
目前,zk-SNARK证明依赖于证明者和验证者之间的初始化可信设置,这意味着需要一组公共参数来构建零知识证明,从而构建私有交易。这些参数几乎就像游戏规则,它们被编程写入协议中,是证明交易有效的必要因素之一。然而,这也可能产生集中化问题,因为参数通常由少数群体制定。
尽管最初的公共设置是zk-SNARK实施的基础,但研究人员正在寻找替代方案,以减少交互流程中所需的信任。初始设置阶段对于防止伪造支出至关重要,因为如果有人有权访问生成参数的随机性,他们可能会创建对验证者有效的假证明。在Zcash中,这一阶段被称为参数生成过程。
让我们再来看一下SNARK缩写中的“Arguments”。zk-SNARK被认为是可合理计算的,这意味着伪造证明者成功欺骗系统的可能性非常小。这一属性称为健壮性,假设证明者具有有限的计算能力。从理论上讲,拥有足够计算能力的证明者可以创建伪造证明,这也是量子计算机可能对zk-SNARKs和区块链系统构成威胁的原因之一。
SNARK缩写的最后一个字母是“Knowledge”,这意味着证明者无法在没有实际知识或证据支持其陈述的情况下构建证据。
零知识证明可以快速验证,通常比标准比特币交易占用的数据少得多。这为zk-SNARKs技术开辟了一条新道路,使其成为匿名性和可扩展性解决方案的有力候选。
zk-STARKszk-STARKs作为zk-SNARKs的替代版本被开发出来,被认为是该技术的更快、更便捷的实现方式。但更重要的是,zk-STARKs无需进行初始化可信设置(因此,“T”代表透明性)。
从技术角度来看,Zk-STARKs无需初始化可信设置,因为它们依赖于通过哈希函数碰撞进行更简洁的对称加密方式。这种方式还消除了zk-SNARKs的数论假设,这些假设在计算上成本很高,且理论上容易受到量子计算机的攻击。
Zk-STARKs之所以能够提供更便捷和更快的实现,其中一个重要原因是因为证明者和验证者之间的通信量相对于计算增量保持不变。相反,在zk-SNARK中,所需的计算越多,双方须来回发送消息的次数就越多。因此,zk-SNARK的整体数据量远大于zk-STARKs证明中的数据量。
显而易见,zk-SNARKs和zk-STARKs都引起了关于匿名性的广泛讨论。在加密货币领域,这些协议具有巨大的潜力,可能成为广泛使用的创新途径。
标签: 数字货币