evm-asm standard guest, unifying the EVM program used for proving
Strawmap Glamsterdam (Early 2027) · evm-asm canonical guest
This is the work of unifying, into a single standard written at the assembly level, the EVM program that runs inside the prover (zkVM) when producing a zero-knowledge proof that a block was executed according to the rules.
Why it is needed
Ethereum is working toward a path where validators no longer re-execute every block and instead check only a zero-knowledge proof (ZK proof) that the block was processed according to the rules. The proof is produced by actually running the EVM inside a prover called a zkVM. The program that runs there is called the guest. Today each proving team takes a different execution client written in a high-level language such as Rust, compiles it, and uses it as the guest. As a result each team proves a different program, and the client code and even the compiler all have to be trusted. The standard guest fixes this program as a single one and writes it directly in a low-level language at the assembly (asm) level. With one program, security review and formal verification can be concentrated in one place. Because no compiler is involved, there is also less to trust. This work does not change protocol rules, so there is no EIP, and it proceeds on the client and specification side. It sits in the Glamsterdam column, but that is only the Strawmap's projected placement and not a commitment.
How it works
- Build one standard guest Write the rules by which the EVM processes transactions directly in assembly-level code, producing one program that every proving team shares.
- The zkVM runs blocks with this guest The prover receives a new block and the necessary state data, runs the standard guest, and produces a zero-knowledge proof that execution finished according to the rules.
- Validators check only the proof Instead of re-executing the block, they check a short proof. Whichever team's prover is used, the program being proven is the same.