使用SNARK家族的零披露证据协议,您永远不会知道游戏规则。 这些规则是由参与者在生成可信系统参数的过程中建立的,但是在完成之后,无法验证这些规则。 您可以相信这一代的正确性,但是如果您没有参与其中,那么您将没有百分之一百的保证。

最近,在区块链社区中提到了各种零知识协议(要获得关于它们的一般性想法,我推荐
这篇文章 ):主要是在隐私的背景下,在可伸缩性和其他背景下较少。
进行最多研究(也是最重要的是)的方法是zk-SNARK(零知识的简洁非交互式知识论证)协议系列。 尤其是在Zcash加密货币中使用了这样的协议。 SNARK的受欢迎程度是有道理的:该协议使我们能够以零泄漏证明事实,证据相对较少,并且所有这些都具有安全性,确保椭圆曲线上的现代加密技术能够为我们提供信息。
但是,它并非没有缺陷,就像往常一样:zk协议家族的主要缺陷是需要生成初始的(可信的)系统参数-此过程也称为仪式。 毕竟,要销毁的秘密参数用于生成-它们被称为有毒物质。 主要问题是,如果保留了有毒参数,则拥有这些参数的人将能够证明错误的事实(对于Zcash,是从空中生成加密货币)。
初始参数生成
此外,SNARK协议的基础数学只会受到表面的影响。 如果您有兴趣对其进行整理,建议您参阅Vitalik Buterin撰写的有关该主题的一系列文章 。让我们看一下生成可信参数的过程。 因此,我们有一个问题的陈述,我们想用零披露来证明其解决方案的事实。 例如,我们要测试二次方程的根的知识:
根据协议,我们必须将此方程式转换为QAP(二次算术程序)形式。 此外,为了生成和验证证据,必须获取初始参数。 让我们在括号之外,如何从QAP获得可信参数,这些参数是什么以及如何在其帮助下检查证据,以免深入研究繁重的数学。 我们只注意到参数以椭圆曲线上的点表示:

它们是通过使用毒性参数在椭圆曲线上使用不可逆的乘法运算从QAP形式的问题陈述中获得的。
现在已经创建了初始参数,我们可以开始使用证据了。 在我们的案例中,我们可以生成并验证等式根为已知的证明(例如,
) 而且,证明将不会揭示秘密(等式的根)的值,并且将由椭圆曲线的几个点组成。
但是,根据协议的基本数学原理,如果仪式后有人保留了毒性参数,则该人将能够证明错误的事实。 回到我们的例子,我们可以证明2是方程的根,尽管显然不是这种情况。
典礼
使用SNARK协议的大型项目非常了解毒性参数问题,并认真对待生成初始参数的过程的正确性。 最著名的例子是
Zcash仪式 。
第一次仪式于2016年10月举行,来自加密货币社区的6位著名开发者参加了
该仪式 。 仪式协议提供了足够的安全保证。 即,如果仪式中至少有一位参与者是诚实的-正确地破坏了他的部分有毒参数-并且未被黑客入侵,那么仪式将是安全的。
2017-2018年举行了
第二次更高级的生成可信参数的仪式。 它已经包括两个阶段,第一部分(Tau的权力)参加了87人,最后一部分(树苗MPC)则超过了90人。 与原始仪式一样,至少要有一名参与者的诚实,仪式才算安全。 第二个仪式的一个重要特征是任何人都可以参加。 因此,每个人都有机会获得协议正确性的100%保证。
总之,值得注意的是,对于每个特定的系统,都应分别考虑仪式的重要性和由此产生的威胁。 同时,对于所有使用SNARK协议的系统,都需要一种可靠的程序来生成初始参数,并保证破坏有毒参数。