论文《Efficient zero-knowledge arguments in the discrete log setting,revisited (Full version)》发表于2019年8月31日。
相应的代码实现见:https://github.com/crate-crypto/qesa
根据第2.2节内容,qesa需要trusted setup,需用到common reference string model(CRS).
1. polynomial commitment
2. LMPA
在本人代码库中create_lmpa_noZK()
和verify_lmpa_noZK()
函数对protocol 3.9
中k
值的选择做了更通用的实现,而不仅仅是针对k=2
的情况。
对应的u_proof_Block
中需要传递的group elements数量为:
,该算法的communication开销较大,与方程式的个数
线性相关。
simple_zk.rs
中的create()
函数采用的是类似sigma-protocol的方式对witness
来实现blinding (zero-knowledge)——
。但是需要计算并传输
开销很大。(Computing [A]r for random r is expensive.)
因为对blinding witness的计算复杂度较高,可考虑blinding the prover’s responses.
3. 巧妙的矩阵转换来表示二次方程式、Arithmetic circuit和R1CS
上图对应的可理解为:
3.1 结合vitalik(Quadratic Arithmetic Programs: from zero to hero)
结合vitalik(Quadratic Arithmetic Programs: from zero to hero) 中gate 1的R1CS证明实现,见https://github.com/3for/qesa/blob/master/src/ipa/qesa_inner.rs中的test_create_qesa_inner_proof_vitalik_g1()
,具体为:
具有
。
算法设计得巧妙,不过verifier的计算复杂性相对于prover来说,减少得有限?
4. 性能
5. 基于的假设为Matrix kernel assumption
基于以上Matrix kernel assumption假设,所以有:
参考资料:
[1] 论文《Efficient zero-knowledge arguments in the discrete log setting,revisited (Full version)》
[2] https://github.com/topics/zero-knowledge?o=desc&s=stars