简析Aztec推出的Noir语言:零知识通用语言

目前的 zk 堆栈是繁琐且难以理解的。ZK 构建者如 Circom 和 ZoKrates,被视为功能强大而灵活,但仍需要密码学概念的知识,这为开发者的广泛采用制造了障碍。通过抽象出潜在的密码复杂性,同时保留其他电路构建语言的所有功能和灵活性,Noir 允许任何开发人员——不仅仅是具有密码学知识的人——构建 zk 应用程序。同时,开发人员可以专注于设计私有应用程序背后的逻辑。

Zk 因隐私性和可扩展性成为了区块链技术领域的分水岭。但 zk 堆栈因繁琐且难以理解,使得 zk 应用开发者的数量只是区块链开发者总数的一个小子集。Noir 是一种基于 Rust 的领域特定语言 (DSL),用于创建和验证零知识证明。该语言由 Aztec 团队开发,致力于成为编写与任何证明系统兼容的 zk 应用程序的最简单方法。

目前推出两个新的 Typescript 库,NoirJS:在浏览器中编译 Noir 电路;Barretenberg.js:在浏览器中证明和验证这些电路。

ZK 应用的开发障碍

目前的 zk 堆栈是繁琐且难以理解的。ZK 构建者如 Circom 和 ZoKrates,被视为功能强大而灵活,但仍需要密码学概念的知识,这为开发者的广泛采用制造了障碍。

现有的电路编译语言需要两个大脑:

  • 一个理解证明系统、可信设置和一些低级密码学的密码学大脑;
  • 一个应用开发者的大脑,能够直观地推理公共和私人状态,以创建新的区块链应用。

这是一件门槛非常高的事情,导致今天 zk 应用开发者的数量只是区块链开发者总数的一个小子集。

Noir 试图打破以上的复杂性,成为足够简单的解决方案。

通过抽象出潜在的密码复杂性,同时保留其他电路构建语言的所有功能和灵活性,Noir 允许任何开发人员——不仅仅是具有密码学知识的人——构建 zk 应用程序。同时,开发人员可以专注于设计私有应用程序背后的逻辑。

Noir 语言:单脑解决方案

Noir 致力于使 zk 电路和应用程序的创建比以往任何时候都更容易。Noir 与 Rust 的相似性使其简单、熟悉、易于理解。

简析Aztec推出的Noir语言:零知识通用语言

创建一个条件就像写 “if “一样简单。使用其他 zk 电路编写语言需要下载电路库,阅读它们以了解其底层逻辑,然后调用基本功能的库实现。

许多基本功能(如 Pedersen 哈希)不必在 Noir 电路中重新实现——已融入语言本身。

示例:Circomlib 的多路复用器实现:https://github.com/iden3/circomlib/blob/master/circuits/mux1.circom

Noir 的简单性也意味着与替代电路书写语言相比,有了一些改进:

免于头痛的依赖性管理。Noir 有自己的软件包管理器 nargo,它模拟了 Rust 的 crate 和软件包管理系统。nargo 支持使用上传到 Github 的依赖关系,允许开发者将 Noir 电路的依赖关系和集成这些电路的项目分开。

电路调试更简单。开发人员无需编写脚本并下载证明和验证者密钥,还可以使用 nargo 来证明和验证电路。

自主执行。最后,开箱即用的 Noir 允许您构建编译的 Solidity 合约,以验证任何与 EVM 兼容的区块链上的证明。智能合约开发人员现在可以执行基于 Noir 证明的逻辑。

标准加密库

Noir 还拥有一个标准库,其中包含电路开发中常用的高度优化功能。

stdlib 使开发人员可以访问广泛使用的复杂算法,这些算法是由 Aztec 团队手写并严格优化的。在抽象层的简单性和它的效率之间总是存在权衡——在这种情况下,程序转换为约束的效率。

标准库为开发人员提供了高水平的电路效率,同时与一个简单、易于使用的抽象层进行交互。

证明系统不可知

最后,由于 Noir 不直接编译为电路,而是编译为中间表示(类似于 LLVM),它与多个后端证明系统兼容,包括 PLONK、Groth16 和 Marlin。

我们将这种中间表示称为 ACIR(抽象电路中间表示)。

Aztec Network 有一个名为 Barretenberg 的证明系统后端,它在 Plonk 上运行。但是使用 Noir 进行开发意味着您可以根据需要插入任何基于 SNARK 的验证系统。

Noir 的实践

Noir 的直观性必须亲眼所见才能相信,所以我们在 Noir 中创建了一些电路的示例实现,向你展示它们与普通参考代码的对比情况。

Mastermind

Mastermind 是一个简单的数字猜测游戏,类似于疯狂流行的益智游戏 Wordle。我们在 Noir 中对 Mastermind 的实现大约是现有参考实现的一半长度。

在 Circom 中的 Mastermind:https://github.com/vezenovm/week3/blob/master/Part1/contracts/circuits/hitandblow.circom

Noir 中的 Mastermind:https://github.com/vezenovm/mastermind-noir/blob/master/circuits/src/main.nr

Tornado Cash

Tornado Cash 在引擎盖下允许用户证明他们拥有 Merkle 树中的一个给定的音符。下面我们展示了一个仅用 10 行就能实现的类似 Merkle 成员证明的例子。

Circom 中的 Tornado Cash:https://github.com/tornadocash/tornado-core/blob/master/circuits/withdraw.circom

Noir 中的 Tornado Cash:https://github.com/vezenovm/simple_shield/blob/master/circuits/src/main.nr

Barretenberg.js

Barretenberg 后端的 Noir Typescript 包装器。允许应用开发者在 Javascript 中创建证明,而不是通过 Rust 命令。

该包装器允许在浏览器中直接构建证明,允许 Zk 开发者快速、轻松地创建全栈的 Noir 程序。

Noir 抽象了大量的密码学,使开发者能够使用密码学功能,而不必担心安全问题,从而降低了开发障碍。

Noir:语言

Noir 语言与 Rust 类似,具有开箱即用的功能,任何应用程序开发人员都应该熟悉:

  • 功能
  • 子模块
  • 结构 / 用户定义类型
  • IF 语句
  • 循环
  • 全局常量

还有一些正在开发但尚未实现的功能,例如泛型和高阶函数。

用例

使用 Noir 比以前更快地构建 zk 游戏。Wordle、Battleships 和 Mastermind 的实现可以在一个下午完成。

借助 Barretenberg.js 库,开发人员还可以在 Aztec Connect 上创建成员资格和身份证明、盲拍以及可以启用私人空投的行动证明。

(声明:请读者严格遵守所在地法律法规,本文不代表任何投资建议)

(0)
Gao的头像Gao
上一篇 2022年10月11日 下午1:49
下一篇 2022年10月11日 下午2:05

相关推荐

  • 错过Starknet空投,4000万枚STRK明牌激励计划了解一下

    该计划的奖励每两周确定和分配一次,预计将持续到 2024 年 10 月。第一轮计划主要面向 DEX,DEX 有资格从 2 月 22 日开始实施其计划,参与用户可在 2024 年 3 月 7 日从协议中领取奖励分配。根据多个 DEX 已披露的内容,该轮计划主要针对 DEX 上的流动性提供者。

    2024年2月20日
    214
  • 你的Web3产品真的需要代币吗?

    产品和代币可以以不同的方式相互关联。确实存在需要先有代币才能使产品的情况;更常见的情况是产品可以从代币中受益,但并不严格需要代币才能运行。在大多数情况下,产品不需要代币,但无论如何,项目仍可能有充分的理由决定推出代币。我们现在将逐一分析这些案例,并以每个类别中现有项目为例进行说明。

    2023年1月31日
    639
  • CoreWeave的奇幻漂流:以太坊挖矿起家,转型AI算力公司,估值超20亿美元

    该轮融资由磁星资本、黑石集团领衔,贝莱德集团(BlackRock)、太平洋投资管理(PIMCO)、凯雷集团(Carlyle)、Coatue、DigitalBridge 等也都参与其中。在此之前,CoreWeave 曾融资 4.21 亿美元,估值超过 20 亿美元。

    2023年8月8日
    687

发表回复

登录后才能评论
微信

联系我们
邮箱:whylweb3@163.com
微信:gaoshuang613