Groth16
零知识证明允许证明者验证陈述是否正确,而无需透露有关输入的任何信息。例如,证明者可以验证他们是否知道数独谜题的解决方案,而无需透露解决方案。
零知识简洁非交互式知识论证(zk-SNARK)是一系列非交互式零知识证明,具有简洁的证明大小和高效的验证时间。其中一个重要且广泛使用的变体是基于配对的 zk-SNARK,例如 Groth16 证明系统,它是最有效且使用最广泛的系统之一。
Bfc 中的 Move API 使您能够在 BN254 或 BLS12-381 椭圆曲线结构上使用 Groth16 zk-SNARK 有效地验证可以以 NP 完全语言表达的任何语句。
有一些高级语言可以表达这些语句,例如下面示例中使用的 Circcom。
Groth16 需要每个电路都有可信设置来生成验证密钥。该 API 不固定任何特定的验证密钥,每个用户都可以生成自己的参数或对其应用程序使用现有的验证。
用途
以下示例演示了如何根据 Circom 编写的语句创建 Groth16 证明,然后使用 Bfc Move API 进行验证。该 API 目前支持最多八个公共输入。