5 个版本
0.2.0 | 2023年6月1日 |
---|---|
0.1.3 | 2023年4月21日 |
0.1.2 | 2023年4月21日 |
0.1.1 | 2023年4月12日 |
0.1.0 | 2023年4月6日 |
#503 in 构建工具
25KB
439 行
barretenberg-sys
Barretenberg的FFI绑定
依赖
这是一个 *-sys
包,这意味着它会探测系统中的Barretenberg,将其链接到系统中,并提供其他Rust项目可以消费的高级绑定。
我们为在Rust项目中使用Barretenberg提供了一套完整的 Nix Flake,但如果你想全局安装所有内容,你需要
-
libomp
通常可以通过
brew install libomp
或apt install libomp-dev
安装。 -
pkg-config
通常可以通过
brew install pkg-config
或apt install pkg-config
安装。 -
lld
由Clang提供的链接器,但可能需要通过
apt install lld
安装。 -
barretenberg
(最好在提交87aeb375d7b434e0faf47abb79f97753ab760987
时)需要按照README中的说明进行构建和安装。注意,Barretenberg有其自己的依赖项,需要安装,例如
cmake
和ninja
。
用法
pub fn pedersen() {
let input = vec![0; 64];
barretenberg_sys::blake2s::hash_to_field(&input);
let f_zero = [0_u8; 32];
let mut f_one = [0_u8; 32];
f_one[31] = 1;
let got = barretenberg_sys::pedersen::compress_native(&f_zero, &f_one);
assert_eq!(
"229fb88be21cec523e9223a21324f2e305aea8bff9cdbcb3d0c6bba384666ea1",
hex::encode(got)
);
}
在此项目中工作
由于有大量的本地依赖项,该项目使用 Nix 和 direnv 来简化开发体验。
设置环境
为了获得最佳体验,请按照以下说明设置您的环境
- 按照 它们的指南 在您的操作系统上安装Nix
- 创建文件
~/.config/nix/nix.conf
,其内容如下:
experimental-features = nix-command
extra-experimental-features = flakes
- 通过运行以下命令将 direnv 安装到您的 Nix 配置文件中:
nix profile install nixpkgs#direnv
- 按照他们的指南将 direnv 添加到您的 shell 中
- 重启您的 shell
Shell 和编辑器体验
现在,您的环境已经设置好了,您就可以开始在这个项目上工作了。
- 克隆仓库,例如:
git clone [email protected]:noir-lang/barretenberg-sys
- 导航到目录
cd barretenberg-sys
- 您应该会看到一个 direnv 错误,因为默认情况下不允许项目。请确保您信任我们的
.envrc
文件,然后您需要运行:
direnv allow
- 现在,等待一段时间,直到所有本地依赖项构建完成。这需要一些时间,direnv 将会警告您这需要很长时间,但我们只需要让它运行。
- 当您再次看到提示时,您可以在项目目录中启动您的编辑器(我们推荐 VSCode)
code .
- (推荐)当您第一次启动 VSCode 时,您应该会收到提示安装我们推荐的插件。我们强烈推荐安装这些插件以获得最佳开发体验。
构建和测试
假设您正在使用 direnv
来设置您的环境,构建和测试项目可以使用典型的 cargo build
、cargo test
和 cargo clippy
命令。您会注意到 cargo
版本与我们在 flake.nix 中指定的版本相匹配,当时为 1.66.0。
如果您想在隔离沙盒中构建整个项目,可以使用 Nix 命令
nix build .
(或使用nix build . -L
以获得详细输出)在 Nix 沙盒中构建项目nix flake check
(或使用nix flake check -L
以获得详细输出)在 Nix 沙盒中运行 clippy 和测试
针对不同的 Barretenberg 本地/远程版本构建
如果您正在处理此包,那么您可能想将某些其他版本的 Barretenberg 的更改合并进来,而不是使用此项目所针对的版本。
要引用 Barretenberg 的不同版本,您需要用您的版本替换锁文件版本。这可以通过运行以下命令来完成:
nix flake lock --override-input barretenberg /absolute/path/to/your/barretenberg
您也可以使用以下方式指向 GitHub 上的一个分叉和/或分支:
nix flake lock --override-input barretenberg github:phated/barretenberg/mybranch
注意:您不希望提交更新后的锁文件,因为它将导致 CI 失败!
不使用 direnv
如果您对使用 direnv
有疑虑,您可以使用 nix develop
启动一个子 shell,然后从子 shell 中启动您的编辑器。但是,如果 VSCode 已经在项目目录中启动,环境将不会更新。
(高级)如果您既不使用 direnv
也不在子 shell 中启动您的编辑器,您可以尝试安装 barretenberg 和包需要的其他全局依赖项。这是一个高级工作流程,可能不会得到支持!
依赖
~0–2.5MB
~48K SLoC