14个版本 (9个重大更改)
新 0.10.5 | 2024年8月21日 |
---|---|
0.9.1 | 2024年4月4日 |
0.8.0 | 2024年2月27日 |
0.7.0 | 2023年10月11日 |
0.1.0 | 2021年11月16日 |
#208 in 密码学
8,655 个月下载量
用于 14 个crate(4个直接使用)
700KB
12K SLoC
Miden验证器
这个crate包含一个轻量级验证器,可用于验证由Miden虚拟机生成的程序执行证明。
虽然Miden crate也包含验证器功能,但如果一个项目只需要验证由Miden虚拟机生成的证明,这个crate可能更适合依赖。
用法
这个crate提供了一个verify()
函数,可用于验证程序执行的证明。该函数需要以下参数
program_info: ProgramInfo
- 包含要验证的程序哈希(表示为32字节摘要)以及执行程序所使用的内核过程哈希的结构。stack_inputs: StackInputs
- 在程序执行之前初始化栈的值的列表。stack_outputs: StackOutputs
- 程序完成执行后从栈返回的值的列表。proof: ExecutionProof
- 程序执行期间生成的证明。
期望栈输入按照它们一个接一个推入栈中的顺序进行排序。因此,它们在栈中的期望顺序将是它们提供顺序的反向,而stack_inputs
中的最后一个值预期是栈顶的值。
期望栈输出按照它们一个接一个从栈中弹出的顺序进行排序。因此,栈顶的值预期在stack_outputs
的第一个位置,其余输出元素的顺序也将与栈上的顺序匹配。这是与stack_inputs
顺序相反的。
该函数返回 Result<u32, VerificationError>
,如果验证通过,则返回 Ok(security_level)
,如果验证失败,则返回 Err(VerificationError)
,其中 VerificationError
描述了失败的原因。
验证程序执行证明基本上意味着以下内容
如果一个程序与提供的哈希值以及一些秘密输入和提供的公共输入执行,它将产生提供的输出。
注意验证者只需要知道程序的哈希值——而不是实际程序是什么。
特性功能
Miden验证器可以编译以下特性
std
- 默认启用,依赖于Rust标准库。no_std
不依赖于Rust标准库,并允许编译到WebAssembly。
要使用 no_std
编译,通过 --no-default-features
标志禁用默认功能。
许可证
此项目采用 MIT许可证。
依赖项
~7–32MB
~480K SLoC