在这种情况下,“可信设置”的含义是什么?人们常说 zk-STARKs 和 Bulletproofs 不需要可信设置。zk-STARKs 和 Bulletproofs 如何避免对可信设置的需求?
粗略情况下,零知识证明协议需要3个步骤:
1.Setup
2.Prove
3.Verify
1 需要执行一次,在此设置阶段完成后,通常可以使用设置的输出无限期地重复2 和3。
这些“可信设置”和“不可信设置”协议之间的区别在于步骤 1。在第一个设置步骤中,证明者和验证者就一些共同的“公共”参数达成一致,他们将需要这些参数来执行计算。“同意参数”通常意味着另一方强加了这组参数。
让我们举一个非常具体的例子,Schnorr 协议(这不是零知识,但这并不重要):
To see that the Schnorr protocol does not have a trusted setup: all of the public parameters are picked randomly, they have no “secret relation” between them. There is “no trust” necessary in the parameters.
看到 Schnorr 协议没有可信设置:所有公共参数都是随机选择的,它们之间没有“秘密关系”。参数中没有必要的“不信任”。
zkSNARKs 不一定需要可信设置。它不在定义中(“知识的简洁论证”不是“具有可信设置”,“succinct argument of knowledge” does not read “with trusted setup”),但 SNARK 最成熟的实例似乎直到最近才具有此属性。
要了解 Bulletproofs(不是 SNARK)如何不需要可信设置,可以查看其公共参数。