zkevm@v0.2.0
Pre-releaseThis is the first release of the project/zkevm feature branch. It contains the first version of execution witness specification and all tests filled targeting fork --fork=Amsterdam (~12k fixtures). Additionally, it contains a first draft of the guest program specs -- while this can't be considered fully internally tested, we encourage interested EL clients to take a look since it contains already most of the required logic.
zkEVM Execution witness
Each filled fixture contains, at the block level, a new executionWitness field containing:
state: Merkle Patricia Trie (MPT) nodes corresponding to MPT proofs for accessed pre-state during block execution, plus required extra nodes for post-state root calculation. This field is ordered lexicographically.codes: required contract bytecodes accessed during block execution. Empty contracts are not included since they can be identified by the empty code hash. Note that created contracts aren’t included either since their value is calculated at runtime. This field is ordered lexicographically.headers: contains the RLP-encoded block headers of ancestors. This is required to resolve EIP-2935 and executed BLOCKHASH. This field is ordered by block number ascending.
You can find the implementation of the witness generation in the amsterdam fork spec in the projects/zkevm branch in execution-specs . The filled fixtures comply with the latest change in the fixture output directory structure.
This is the first release of the execution witness specs and filled tests, so if you think there is any bug please create an issue in execution-specs or add a message in the created thread in #l1-zkevm-protocol channel in EthR&D discord server.
Guest program
In this release, the forks/amsterdam folder contains an experimental/draft guest program spec. The entry point of the guest program can be found in the run_stateless_guest(...) function in stateless_guest.py file. Over the coming days/weeks, we'll continue iterating and polishing the implementation to target a fully tested version in the next release. We encourage ELs to provide feedback through the same channels as mentioned in the previous section.