Filecoin很高兴地宣布 Lurk 编程语言存储库现已向公众开放。 Lurk 是一种用于递归 zk-SNARK(零知识简洁非交互式知识论证)的图灵完备编程语言,它将为 SNARK 证明、区块链共识、Filecoin 虚拟机 (FVM)、去中心化应用程序、与 IPFS 和 IPLD 等等。

概述
Lurk 是一种静态范围的 Lisp 方言,受 Scheme 和 Common Lisp 的影响。它相对于大多数编程语言的显着特点是可以使用 zk-SNARKs 直接证明 Lurk 程序的正确执行。生成的证明相对较小,可以快速验证,并且它们仅揭示要证明的陈述中明确包含的信息。

简而言之,Lurk 是一种易于使用的语言,它使程序的开发变得更加简单。它将使 SNARK 编程更易于访问——既因为可以编写的程序比传统的 SNARK 程序更“强大”,而且因为那些不是领域专家的人也可以编写这些程序。

Lurk 由 Protocol Labs 高级研究工程师 Chhi’mèd Künzang 创建,作为实施 Filecoin 证明工作的扩展。在其证明构造中,Filecoin 使用 SNARK,这是一种用于证明知识的高效、加密安全的机制。 “ZK”(零知识)虽然不是 Filecoin SNARKs 的必要部分,但意味着证明者可以在不透露任何关于被证明内容的信息的情况下生成证明。 Filecoin 将 SNARK 用于复制证明 (PoRep) 和时空证明 (PoSt),它们是网络所依赖的核心加密协议。 (有关这些概念的高级介绍,请参阅此 ProtoSchool 教程。) Filecoin Proofs 的需求要求我们将上一代 SNARK 扩展到其极限——同时也让我们去寻找、认识和发现下一代的可能性一代。

与大多数 zk-SNARK 创作语言不同,Lurk 是图灵完备的,因此可以提出和证明任意计算声明(受资源限制)。 因为 Lurk 是一个 Lisp,它的代码就是 Lurk 数据,任何 Lurk 数据都可以直接作为 Lurk 程序求值。 Lurk 使用对 SNARK 友好的 Poseidon 哈希(由 Neptune 提供)构造复合数据,因此其数据自然是内容可寻址的。

Lurk 目前支持多个后端证明系统,特别是带有 SnarkPack + 和 Nova 的 Groth16,并支持许多关键功能:

可验证的计算
简洁的证明
零知识
图灵完备性
内容可寻址数据的任意遍历
高阶函数(例如,作为计算的公共输入的函数,有证明)
用于与 IPFS 和 IPLD 自然集成的内容可寻址数据