【官方】Lurk简介:一种用于递归 zk-SNARK 的编程语言;加快Filecoin验证和FVM虚拟机建设
Lurk 简介:一种用于递归 zk-SNARK 的编程语言
我们很高兴地宣布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 扩展到其极限——同时也让我们去寻找、认识和发现下一代的可能性。
进入Lurk
与大多数 zk-SNARK 创作语言不同,Lurk 是图灵完备的,因此可以提出和证明任意计算声明(受资源限制)。因为 Lurk 是一个 Lisp,它的代码就是 Lurk 数据,任何 Lurk 数据都可以直接作为 Lurk 程序求值。Lurk 使用 SNARK 友好的 Poseidon 哈希(由Neptune提供)构造复合数据,因此它的数据自然是内容可寻址的。
Lurk 目前支持多个后端证明系统,特别是带有SnarkPack + 和Nova的Groth16,并支持许多关键功能:
可验证的计算
简洁的证明
零知识
图灵完备性
内容可寻址数据的任意遍历
高阶函数(例如,作为计算的公共输入的函数,有证明)
用于与IPFS和IPLD自然集成的内容可寻址数据
Lurk和 Filecoin
Lurk 可以通过多种方式支持 Filecoin 协议的开发。
例如,Lurk与Filecoin 虚拟机 (FVM)的集成将允许在 Filecoin 区块链上验证 Lurk 程序和应用程序。这将为 Filecoin 智能合约(或参与者)提供对特定于应用程序的零知识可证明计算的一流本地访问。Filecoin 参与者可用于对存储在 Filecoin 网络中的数据进行代理、协调和激励长期运行的 Lurk 作业。此外,它将允许结合来自多个来源的公共和私人数据的证明,包括 Filecoin 部门、私人存储或链本身。
在更长的时间范围内,Lurk 将能够改进分层共识在 Filecoin 中。分层共识是一个水平扩展区块链网络的框架,增加了它们的吞吐量和灵活性。在分层共识中,一部分用户可以生成具有独立状态和共识算法的新子网,同时保持与系统中任何其他子网无缝交互的能力。子网通过定期向父链提交子网状态证明来利用其父链的安全性。这确保了最新的全球共识并将消息传播到层次结构中的其他子网。在当前的分层共识实现中,子网证明的验证需要完全访问该子网的状态。Lurk 可以通过为子网中执行的状态更改构建可自我验证的证明来完全消除这种依赖关系,
Lurk 生态系统中的其他关键参与者
Lurk 生态系统包括由Protocol Labs和Filecoin Foundation支持的研究人员和开发团队。
哈佛 SEAS计算机科学助理教授Nada Amin正致力于将 Lurk 的 Lisp 实现转变为可用且自举的编程系统。关于 Lurk,她说,“我发现创建一个通用电路的项目,该电路实现了一个用于递归零知识证明的 Lisp,因为它是一个优雅的 Lisp 映射,适合 zk-SNARKs(例如,用于 cons 的 hash-cons)并且具有zk-SNARKs 民主化的潜力。”
Glow 是一种开发中的编程语言,其与 Lurk 的集成由 Filecoin 基金会资助,其研究人员和开发人员正在开发一种用于构建去中心化应用程序 (DApps) 的简单领域特定语言。“通常,一些 Glow 代码在链下执行(即由 DApp 的用户),而一些在链上执行(即通过共享共识),”该公司Mutual Knowledge Systems总裁 François-René Rideau 解释说开发辉光。“通过将 Glow 代码编译到 Lurk,我们可以在链下构建证明并将共识仅用于验证,从而降低 gas 费用,增加隐私,并提高用 Glow 编写的 DApp 的安全性和可扩展性。”
Yatima也是由 Filecoin 基金会资助的,是一种依赖类型的函数式编程语言和定理证明器,用 Rust 实现,具有子结构类型、元编程和通过 IPFS 进行的内容寻址。Yatima 的 AST 使用 IPLD 格式进行编码,这使得 Yatima 程序可以轻松地通过 IPFS 网络共享,存储在 Filecoin 中,并在任何 WASM 平台(包括 Web 和区块链运行时)上进行确定性评估。
Yatima 正在与 Lurk 合作,以允许对任意编译时计算进行零知识验证。形式证明具有表达性,但验证起来可能很昂贵。通过将这些形式证明的验证器编译到 Lurk,进而编译到 zk-SNARKs,Yatima 可以实现形式证明的恒定时间和恒定空间验证。
凭借一支才华横溢的研究人员和工程师团队,以及不断壮大的贡献者生态系统,我们对 Lurk 的未来感到兴奋。
更多即将到来
在接下来的几个月里,我们将推出一个 Lurk 网站和博客,它将更深入地介绍 Lurk 的技术特征和背后的历史背景。要随时了解这些进展,请务必在 Twitter 上关注@Filecoin和@ProtoResearch。
要了解更多信息,请访问GitHub 上的 Lurk 存储库。