#stark #plonky2 #zk #ethereum #cpu-memory #cryptography

nightly bin+lib evm_arithmetization

Implementation of STARKs for the Ethereum Virtual Machine

7 unstable releases (3 breaking)

0.4.0 Jul 15, 2024
0.3.0 Jul 15, 2024
0.2.0 Jun 12, 2024
0.1.3 Apr 19, 2024
0.1.0 Feb 21, 2024

#6 in #plonky2


Used in 2 crates

MIT/Apache

2.5MB
57K SLoC

Rust 36K SLoC // 0.1% comments Assembly 21K SLoC Pest 36 SLoC // 0.1% comments

Provable Stateless ZK-EVM

Included here is an implementation of a stateless, recursive ZK-EVM client implemented using Plonky2. It currently supports the full Merkle-Patricia Trie and has all Cancun opcodes implemented.

Performance

This implementation is able to provide transaction level proofs which are then recursively aggregated into a block proof. This means that proofs for a block can be efficiently distributed across a cluster of computers. As these proofs use Plonky2 they are CPU and Memory bound. The ability to scale horizontally across transactions increases the total performance of the system dramatically. End-to-end workflows are currently in progress to support this proving mode against live evm networks.

Furthermore the implementation itself is highly optimized to provide fast proving times on generally available cloud instances and does not require GPUs or special hardware.

Ethereum Compatibility

The aim of this module is to initially provide full Ethereum compatibility. It is currently fully Cancun HF compatible.

Audits

Audits for the ZK-EVM will begin on November 27th, 2023. See the Audit RC1 Milestone. This README will be updated with the proper branches and hashes when the audit has commenced.

Documentation / Specification

The current specification is located in the /docs/arithmetization directory, with the most currently up-to-date PDF available here. Further documentation will be made over the coming months.

License

Copyright (c) 2023 PT Services DMCC

Licensed under either of:

at your option.

The SPDX license identifier for this project is MIT OR Apache-2.0.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~10–17MB
~229K SLoC