49 个版本 (29 个破坏性更新)
新 0.42.0-alpha.9 | 2024年8月19日 |
---|---|
0.42.0-alpha.6 | 2024年7月23日 |
0.38.2 | 2024年3月14日 |
0.36.0 | 2023年12月22日 |
0.1.0 | 2022年7月27日 |
#34 in 数学
415 每月下载量
在 2 crates 中使用
3.5MB
59K SLoC
Triton VM
Triton是一种虚拟机,它包含代数执行表(AET)和算术中间表示(AIR),可用于与STARK证明系统结合使用。它定义了一个图灵完备的指令集架构以及VM的相应算术化。Triton VM真正酷的地方在于其对Triton VM运行时产生的STARKs的高效递归验证。
入门
如果您想开始为Triton VM编写程序,请查看Triton TUI。如果您想生成或验证正确执行的证明,请查看示例。
计算完整性递归STARKs
通常,在执行机器(虚拟或非虚拟)时,信息流可以视为如下。将 (input
,program
) 元组提供给机器,机器对 program
进行评估,在 input
上执行它,并产生一些 output
。
如果这台(现在几乎肯定是虚拟的)机器还关联了一个STARK引擎,则另一个输出是计算完整性的 proof
。
只有当 input
、program
和 output
相互对应,即如果 output
确实是根据虚拟机定义的规则在 input
上评估 program
的结果,那么生成这样的 proof
是容易的。否则,生成一个 proof
几乎是不可能的。
检查一个 proof
是否实际上是有效的一个的例行程序称为验证器。它接受一个四元组(input
、program
、output
、proof
)作为输入,并且只有当这个四元组与虚拟机的规则一致时,才评估为 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