#虚拟机 #中间表示 #零知识证明 #STARK #零知识 #递归

triton-vm

一种虚拟机,它包含代数执行表(AET)和算术中间表示(AIR),可用于与STARK证明系统结合使用,以实现零知识中任意程序正确执行的证明

49 个版本 (29 个破坏性更新)

0.42.0-alpha.9 2024年8月19日
0.42.0-alpha.62024年7月23日
0.38.2 2024年3月14日
0.36.0 2023年12月22日
0.1.0 2022年7月27日

#34 in 数学

Download history 55/week @ 2024-04-28 273/week @ 2024-05-05 97/week @ 2024-05-12 45/week @ 2024-05-19 10/week @ 2024-05-26 136/week @ 2024-06-02 28/week @ 2024-06-09 21/week @ 2024-06-16 2/week @ 2024-06-23 3/week @ 2024-06-30 30/week @ 2024-07-07 51/week @ 2024-07-14 115/week @ 2024-07-21 44/week @ 2024-07-28 224/week @ 2024-08-04 30/week @ 2024-08-11

415 每月下载量
2 crates 中使用

Apache-2.0GPL-2.0 许可证

3.5MB
59K SLoC

Triton VM

License GitHub CI crates.io Spec: online Coverage Status

Triton是一种虚拟机,它包含代数执行表(AET)和算术中间表示(AIR),可用于与STARK证明系统结合使用。它定义了一个图灵完备的指令集架构以及VM的相应算术化。Triton VM真正酷的地方在于其对Triton VM运行时产生的STARKs的高效递归验证。

入门

如果您想开始为Triton VM编写程序,请查看Triton TUI。如果您想生成或验证正确执行的证明,请查看示例

计算完整性递归STARKs

通常,在执行机器(虚拟或非虚拟)时,信息流可以视为如下。将 (inputprogram) 元组提供给机器,机器对 program 进行评估,在 input 上执行它,并产生一些 output

如果这台(现在几乎肯定是虚拟的)机器还关联了一个STARK引擎,则另一个输出是计算完整性的 proof

只有当 inputprogramoutput 相互对应,即如果 output 确实是根据虚拟机定义的规则在 input 上评估 program 的结果,那么生成这样的 proof 是容易的。否则,生成一个 proof 几乎是不可能的。

检查一个 proof 是否实际上是有效的一个的例行程序称为验证器。它接受一个四元组(inputprogramoutputproof)作为输入,并且只有当这个四元组与虚拟机的规则一致时,才评估为 true

由于验证器是一个接受一些输入并产生一些输出的程序,原始的虚拟机可以被用来执行计算。

相关的 STARK 引擎将随后产生证明某些其他计算完整性证明的计算完整性的证明——递归!当然,验证器可以是大程序中的子程序。

Triton VM 特别设计为允许快速递归验证。

项目状态

Triton VM 仍在建设中。我们目前不建议在生产环境中使用它。

请注意,指令集架构 不是一个最终版本。然而,我们目前没有预见重大变化。

规范

规范可以在 网上找到。或者,您可以通过首先安装依赖项,然后提供 mdBook 来自托管 mdBook

cargo install mdbook
cargo install mdbook-katex
cargo install mdbook-linkcheck

mdbook serve --open

可能需要将 ~/.cargo/bin 添加到 PATH。

运行代码

Triton VM 的 Rust 实现位于 triton-vm,可以在 crates.io 上找到。

Triton VM 依赖于 twenty-first 密码库。

为了尝试代码,请安装 Rust 并运行

~ $ git clone https://github.com/TritonVM/triton-vm.git
~ $ cd triton-vm
~/triton-vm $ make test

对于两个库的本地开发,鼓励遵循 GitHub 的分支 & 拉取工作流程,通过分支和克隆两个库,将 twenty-first 放置在 triton-vm 相对位置,并将依赖项更改为 path - 本地

~ $ git clone [email protected]:you/triton-vm.git
~ $ git clone [email protected]:you/twenty-first.git
~ $ cd triton-vm
~/triton-vm $ ln -s ../twenty-first/twenty-first twenty-first
~/triton-vm $ sed -i '/^twenty-first =/ s/{.*}/{ path = "..\/twenty-first" }/' triton-vm/Cargo.toml 

依赖项

~17–32MB
~432K SLoC