一句话:提出基于 LISP 的 zk-SNARK 语言 Lurk:将程序作为数据送入通用解释器电路,保持证明规模且图灵完备。
在 zk-SNARK 上编程通常需要把目标计算编译成扁平电路,这严重限制可实际处理的计算规模与复杂度。Lurk 是一种基于 LISP 的新语言,它把程序本身作为数据交给通用的 Lurk 解释器电路执行,从而在不牺牲证明产物大小的前提下实现图灵完备。论文介绍 Lurk 的设计与理论,并详细说明其内容寻址实现如何规避零知识证明编程中常见的问题。作为经验报告,工作侧重语言与电路设计及实现经验,而非量化基准。
We introduce Lurk, a new LISP-based programming language for zk-SNARKs. Traditional approaches to programming over zero-knowledge proofs require compiling the desired computation into a flat circuit, imposing serious constraints on the size and complexity of computations that can be achieved in practice. Lurk programs are instead provided as data to the universal Lurk interpreter circuit, allowing the resulting language to be Turing-complete without compromising the size of the resulting proof artifacts. Our work describes the design and theory behind Lurk, along with detailing how its implementation of content addressing can be used to sidestep many of the usual concerns of programming zero-knowledge proofs.
@article{paperbot1902,
title = {LURK: Lambda, the Ultimate Recursive Knowledge (Experience Report)},
author = {Nada Amin and John Burnham and François Garillot and Rosario Gennaro and Chhi’mèd Künzang and Daniel Rogozin and Cameron Wong},
journal = {Proceedings of the ACM on Programming Languages},
volume = {7},
number = {ICFP},
year = {2023},
doi = {10.1145/3607839}
}