12个重大版本发布

0.30.0 2023年7月4日
0.25.1 2023年5月24日
0.19.0 2023年3月17日
0.11.0 2022年12月22日
0.7.2 2022年11月23日

1153 in 数学

Apache-2.0GPL-2.0 许可协议

32KB
665

Triton VM

License GitHub CI crates.io Spec: online

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

计算完整性递归STARKs

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

如果这台现在几乎是虚拟的机器还关联了一个STARK引擎,那么一个额外的输出是一个proof,证明计算完整性。

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

检查一个 proof 是否确实是一个有效证明的例程被称为验证器。它接受一个 4-元组(inputprogramoutputproof)作为输入,并且仅在且仅在 4-元组与虚拟机的规则一致时评估为 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 并运行

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

对于这两个库的本地开发,建议遵循 GitHub 的 fork & pull 工作流程,通过 fork 和 clone 两个库,将 twenty-first 放置在 triton-vm 的相对路径下,并将依赖项更改为 path-local

~/Projects $ git clone git@github.com:you/triton-vm.git
~/Projects $ git clone git@github.com:you/twenty-first.git
~/Projects $ cd triton-vm
~/Projects/triton-vm $ ln -s ../twenty-first/twenty-first twenty-first
~/Projects/triton-vm $ sed -i '/^twenty-first =/ s/{.*}/{ path = "..\/twenty-first" }/' triton-vm/Cargo.toml 

依赖项

~15–26MB
~398K SLoC