最近有空看了看Plookup的论文。针对对电路描述不友好的操作(比如bit操作),Plookup给出了新的思路和证明方式。给定某个操作的真值表示(lookup table),证明某个操作的输入/输出是在真值表中。这种方式,相对之前的bit计算约束方式,降低约束的个数,提高了电路效率。
本文介绍了在zkEVM中使用plookup来创建执行轨迹的方法,以克服字节码转换为SNARK的难题。通过将操作码及其索引存储在查找表t_opcodes中,并在执行证明阶段允许prover选择任何操作码,结合程序计数器检查索引的正确性,从而实现对循环和复杂操作码(如returndatacopy和哈希函数)的支持,优化了zkEVM的性能,降低了约束开销。