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 密码学

Download history 1637/week @ 2024-05-02 1736/week @ 2024-05-09 1120/week @ 2024-05-16 954/week @ 2024-05-23 1489/week @ 2024-05-30 1707/week @ 2024-06-06 1849/week @ 2024-06-13 1026/week @ 2024-06-20 1673/week @ 2024-06-27 1726/week @ 2024-07-04 1334/week @ 2024-07-11 1430/week @ 2024-07-18 2455/week @ 2024-07-25 2344/week @ 2024-08-01 1876/week @ 2024-08-08 1635/week @ 2024-08-15

8,655 个月下载量
用于 14 个crate(4个直接使用)

MIT 许可证

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