triton-vm
triton-vm copied to clipboard
Triton is a virtual machine that comes with Algebraic Execution Tables (AET) and Arithmetic Intermediate Representations (AIR) for use in combination with a STARK proof system.
Instruction Buckets are cumbersome. A tiny change in the ISA throws the instruction buckets into disarray. Getting the constraints right is challenging. I propose to get rid of instruction buckets...
This PR fixes the proof system with respect to memory consistency. More specifically, it updates table population and extension, and defines constraints for memory consistency in accordance with TIPs [0001](https://github.com/TritonVM/triton-vm/blob/master/tips/tip-0001/tip-0001.md)...
Increase triton-vm to version 0.3.1 Bigger changes: - Use AlgebraicHasher instead of simple_hasher::Hasher. - Remove `H: Hasher` type parameter from ProofItem: It was only needed for FriProof, which contains digests,...
Implement Transition Constraints for Correct Updating of Extension Columns for Cross-Table Arguments
Cross-table arguments like Evaluation Arguments and Permutation Arguments need an extension column on both tables to compute a running evaluation or running product. This correct computation is not verified, to...
Currently, the number of challenges is hardcoded in `challenges.rs`, near the top: ``` impl AllChallenges { pub const TOTAL_CHALLENGES: usize = 130; .... } ``` All challenges have a specific...
As discussed in [this issue](https://github.com/anoma/zkp-compiler-shootout/issues/16), implementing a proper โif then elseโ is not currently very straightforward using Triton assembly. The new instruction `if_then_call` alleviates the problem. For instruction `if_then_call`, note...
It is always possible to emulate unconditional `call` using conditional `if_then_call`. ``` push 1 if_then_call label nop nop ```
Even though it is a beautiful instruction, dropping `recurse` might lead to a simpler design and better overall performance. ### Pro `recurse` - proper [tail recursion](https://en.wikipedia.org/wiki/Tail_call), *i.e.*, no new entry...
For the purpose of U32 operations, this note proposes an alternative to relying on a separate table with corresponding table relations. It describes how the `split` instruction is powerful enough...
Together with #77, this supersedes #24.