1 个不稳定版本
使用旧的 Rust 2015
0.3.0 | 2024年4月11日 |
---|
#24 in #prover
57KB
1.5K SLoC
Cairo Proof Parser
这个库包是一个解析器,用于在不同的cairo证明格式之间进行转换。它导出了一个函数
pub fn parse(input: String) -> anyhow::Result<Exprs>
输入
parse
函数的输入是一个以JSON字符串格式表示的证明。期望这个证明由带有 -generate_annotations
标志的 stone prover 生成。目前仅支持 recursive
和 starknet
布局。
输出
输出是 AST
,可以使用 Exprs::to_string(&self)
方法反序列化为字符串。然后可以将其序列化为cairo验证器期望的参数,并使用 cairo args runner 运行。
示例用法
示例用法
use cairo_args_runner::{Arg, Felt252, VecFelt252};
use cairo_proof_parser::parse;
fn main() -> anyhow::Result<()> {
// Read the stone prover input
let input = std::fs::read_to_string("main_proof.json")?;
// Parse the input as an AST
let parsed = parse(input)?;
// Parse the AST as cairo arguments
let args: VecFelt252 = serde_json::from_str(
&parsed.to_string()
)?;
// Run the cairo verifier with the aruments
let result = cairo_args_runner::run(
"cairo_verifier.sierra.json",
"main",
&[Arg::Array(args.to_vec())],
)?;
println!("{result:?}");
Ok(())
}
路线图
将来,我们可能会直接解析到 cairo-args-runner::Args
以跳过一步解析。目前,当前方法绝对足够,并提供最大的灵活性。在 cairo-lang-runner 包中也有一些错误修复,使 cairo-args-runner
能够正确地传递多个数组。
依赖项
~7–9.5MB
~188K SLoC