#proof #evm #stark #annotated #split #annotations #adapter

bin+lib stark_evm_adapter

一个用于将 STARK 证明适配到 EVM 验证的 lib/CLI

5 个版本

0.1.5 2023 年 12 月 20 日
0.1.3 2023 年 11 月 10 日
0.1.2 2023 年 11 月 10 日
0.1.1 2023 年 11 月 10 日
0.1.0 2023 年 11 月 10 日

#2495 in 神奇豆

MIT 许可证

2MB
1K SLoC

STARK-EVM 适配器

github crates.io docs.rs build status

stark-evm-adapter 是一个库,提供了解析和操作 STARK stone 证明输出的工具集。具体来说,该库可以用来生成“分割证明”,这对于在以太坊上验证证明是必要的。

[dependencies]
stark-evm-adapter = "0.1.3"

示例

use stark_evm_adapter::annotated_proof::AnnotatedProof;
use stark_evm_adapter::annotation_parser::split_fri_merkle_statements;

// read an annotated proof
let file = std::fs::File::open("tests/fixtures/annotated_proof.json").unwrap();
let reader = std::io::BufReader::new(file);
let annotated_proof: AnnotatedProof = serde_json::from_reader(reader).unwrap();

// split the proof
let split_proofs = split_fri_merkle_statements(annotated_proof).unwrap();
println!("{}", serde_json::to_string_pretty(&split_proofs).unwrap());

// For how to submit the split proofs to the L1 EVM verifier, please refer to the demo: https://github.com/zksecurity/stark-evm-adapter/blob/8af44a0aa61c89e36a08261320f234709e99ed71/examples/verify_stone_proof.rs#L18

请注意,使用此 CLI 工具可以生成注释证明文件 annotated_proof.json

CLI

安装

cargo install stark_evm_adapter

用法

stark_evm_adapter --help

根据 stone-prover 的输出生成注释证明

stark_evm_adapter gen-annotated-proof \
    --stone-proof-file tests/fixtures/stone_proof.json \
    --stone-annotation-file tests/fixtures/stone_proof_annotation.txt \
    --stone-extra-annotation-file tests/fixtures/stone_proof_annotation_extra.txt \
    --output annotated_proof.json

注释证明来源于 stone-prover 的 3 个文件输出。

一旦你有了这个注释证明,你可以用它来生成分割证明,并将其提交到 L1 EVM 验证器。请参阅 示例演示

stone_proof.json 来自 cpu_air_prover 命令,而注释文件来自具有 annotation_fileextra_output_file 参数的 cpu_air_verifier 命令。

演示

您可以使用 docker 运行演示。演示将从注释证明生成分割证明,并将其提交到分叉链上的 L1 EVM 验证器。

首先,构建 docker 镜像

docker build -t stark-evm-adapter .

然后,运行演示脚本

docker run -it -e "MAINNET_RPC=******" stark-evm-adapter

请注意,您需要设置环境变量 MAINNET_RPC 为以太坊主网的 RPC 端点。例如,您可以使用 Infura 获取 RPC 端点。此演示代码将自动在主网上创建分叉,并将分割证明提交到分叉链上的 L1 EVM 验证器。

依赖项

~28–44MB
~825K SLoC