结论

我们得出了用来解决多项式问题知识的零知识简洁非交互式论证协议,不过这只是一个有局限的例子。虽然大家可以说证明者只要用另外一个有界的多项式去乘以 \(t(x)\) 就可以很容易地构造出一个能够通过测试的多项式 \(p(x)\),但这种结构仍然有用。

验证者知道证明者有一个有效的多项式,但是并不知道是哪一个。我们可以添加多项式其他属性的额外证明,例如:被多个多项式整除、是某个多项式的平方。可能会有一种服务能够接受、存储和奖励所有经过证明的多项式,或者有一个加密计算某种形式的未知多项式的需求。然而,如果有通用方案就可以支撑起无数的应用。

译者注:总结一下,这篇文章逐步解决了以下几个问题:

  • 保证证明者的证明是按照规则正确构造的:KEA
  • 保证知识的零知性:「无成本」的 \(\delta\) 变换
  • 可复用证明:非交互式
  • 非交互式的同时设置安全公开且可复用的参数:参数加密,验证者借助密码学配对进行验证
  • 保证参数的生成者不泄密:多方的设置

至此,一个用来证明多项式知识的完整 zk-SNARK 协议就被构造出来了,不过现在的协议在通用性上依然还有很多限制,后面的文章将继续介绍如何构造通用的 zk-SNARK。