#barretenberg #back-end #circuit #lab #verifier #acvm #aztec

acvm-backend-barretenberg

一个 ACVM 后端,允许对 Aztec Lab 的 Barretenberg 库进行 ACIR 电路的证明/验证

16 个版本 (破坏性更新)

0.12.0 2023年8月30日
0.10.1 2023年8月18日
0.10.0 2023年7月26日

#655 in 文件系统

Download history 1/week @ 2024-03-09 9/week @ 2024-03-30

每月2,407次下载

MIT/Apache

165KB
2.5K SLoC

Solidity 1.5K SLoC // 0.3% comments Rust 744 SLoC // 0.1% comments

acvm-backend-barretenberg

一个 ACVM 后端,允许对 Aztec Lab 的 Barretenberg 库进行 ACIR 电路的证明/验证。

验证合约仓库

由这个库生成的 验证合约https://github.com/AztecProtocol/aztec-verifier-contracts 中开发。因此,我们无法直接接受对合约的修改,对合约的任何更改都必须首先在上游仓库中进行并得到接受。

本项目工作

由于原生依赖项众多,该项目使用 Nixdirenv 来简化开发体验。

设置您的环境

为了获得最佳体验,请按照以下说明设置您的环境

  1. 按照操作系统的说明安装 Nix
  2. 创建文件 ~/.config/nix/nix.conf,内容如下
experimental-features = nix-command
extra-experimental-features = flakes
  1. 通过运行将 direnv 安装到您的 Nix 配置文件中
nix profile install nixpkgs#direnv
  1. 按照 他们的指南 将 direnv 添加到您的 shell 中
  2. 重启您的 shell

Shell & 编辑器体验

现在您的环境已设置,您可以开始处理项目。

  1. 克隆仓库,例如
git clone [email protected]:noir-lang/aztec_backend
  1. 导航到目录
cd aztec_backend
  1. 您应该会看到一个 direnv 错误,因为默认不允许项目。确保您已审查并信任我们的 .envrc 文件,然后您需要运行
direnv allow
  1. 现在,等待一段时间,直到所有原生依赖项都构建完成。这需要一些时间,direnv 会警告您需要很长时间,但我们需要让它运行。
  2. 当您再次看到提示时,您可以在项目目录中开始编辑器(我们推荐 VSCode
code .
  1. (推荐) 首次启动 VSCode 时,您应该会提示安装我们推荐的插件。我们强烈建议安装这些插件以获得最佳的开发体验。

构建和测试

假设您正在使用 direnv 来设置您的环境,构建和测试项目可以使用典型的 cargo buildcargo testcargo clippy 命令。您会注意到 cargo 的版本与我们在 flake.nix 中指定的版本匹配,撰写本文时为 1.66.0。

如果您想在隔离的沙盒中构建整个项目,可以使用 Nix 命令

  1. nix build . (或 nix build . -L 以获取详细输出) 在 Nix 沙盒中构建项目
  2. nix flake check (或 nix flake check -L 以获取详细输出) 在 Nix 沙盒中运行 clippy 和测试

针对 Barretenberg 的不同本地/远程版本进行构建

如果您正在此项目中工作,并想要使用 Barretenberg 的不同版本(而不是此项目所依赖的版本),则需要替换锁文件版本为您的版本。这可以通过运行以下命令完成:

nix flake lock --override-input barretenberg /absolute/path/to/your/barretenberg

您还可以使用以下命令指向 GitHub 上的分支和/或分支:

nix flake lock --override-input barretenberg github:username/barretenberg/branch_name

注意:您不想提交更新后的锁文件,因为它将在 CI 中失败!

没有 direnv

如果您对使用 direnv 持怀疑态度,可以使用 nix develop 启动子shell,然后从子shell中启动您的编辑器。但是,如果 VSCode 已经在项目目录中启动,环境将不会更新。

高级:如果您既不使用 direnv 也不在子shell中启动您的编辑器,您可以尝试安装 Barretenberg 和该包需要的其他全局依赖项。这是一个高级工作流程,可能不会得到支持!

依赖项

~16–31MB
~504K SLoC