摘要。Two most common ways to design non-interactive zero knowl- edge (NIZK) proofs are based on Sigma ( Σ )-protocols (an efficient way to prove algebraic statements) and zero-knowledge succinct non-interactive arguments of knowledge (zk-SNARK) protocols (an efficient way to prove arithmetic statements).然而,在加密货币(例如保护隐私凭证,隐私保护审核和基于区块链的投票系统)的应用中,通常使用加密,承诺或其他代数加密密码方案来实施一般性声明的ZK-SNARKS。此外,对于许多不同的算术陈述,也可能需要共同实施许多不同的算术陈述。显然,典型的解决方案是扩展ZK-SNARK电路,以包括代数部分的代码。然而,代数算法中的复杂加密操作将显着增加电路尺寸,从而导致不切实际的证明时间和CRS大小。因此,我们需要一个足够的证明系统来进行复合语句,包括代数和算术陈述。不幸的是,虽然ZK-SNARKS的连接相对自然,目前可以使用许多有效的解决方案(例如,通过利用提交和培训技术),很少讨论ZK-SNARKS的分离。在本文中,我们主要关注Groth16的分离陈述,并提出了Groth16变体-CompGroth16,该变体为Groth16提供了一个框架,以证明由代数和算术组成的组合组成的分离性陈述。特别是,我们可以将Compgroth16与σ -Protocol甚至Compgroth16与Compgroth16直接相结合,就像σ -Protocols的逻辑组成一样。从中,我们可以获得许多良好的属性,例如更广泛的表达,Beter Prover的效率和较短的CR。此外,对于Compgroth16和σ-协议的组合,我们还提出了两个代表性的场景,以证明我们的构建实用性。
在本文中,我们探索了有效的方法来证明椭圆曲线配对关系的正确性。基于配对的加密协议,例如Groth16和Plonk Snarks和BLS签名方案,在公共区块链(例如以太坊)中广泛使用,很大程度上归功于其小尺寸。对于许多用例,诸如SNARK内部的“电路”验证的验证相对较高的配对计算成本仍然是一个实际问题。这自然出现在基于BLS共识方案的递归snark组成和snark中。为了改善配对验证,我们首先证明配对验证的最终启动步骤可以用更有效的“残基检查”代替,可以将其纳入米勒循环中。然后,我们通过计算所有必要的线来降低米勒循环的成本,以及当预先确定第二个配对参数时,这是特别有效的。使用固定公共密钥以及基于KZG的Snarks(如Plonk)和三个Groth16配对中的两个签名的BLS签名就是这种情况。最后,我们通过组合商来展示如何改善[GAR]方案,这使我们能够更有效地证明更高的关系关系。这些技术也自然而然地将配对验证(例如链验证)或比特币智能合约的BITVM(2)协议的一部分。我们实例化算法并显示BN254曲线的结果。
