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

nightly bin+lib evm_arithmetization

Implementation of STARKs for the Ethereum Virtual Machine

4 releases

new 0.1.3 Apr 19, 2024
0.1.2 Mar 19, 2024
0.1.1 Mar 1, 2024
0.1.0 Feb 21, 2024

#1724 in Magic Beans

Download history 156/week @ 2024-02-19 168/week @ 2024-02-26 38/week @ 2024-03-04 40/week @ 2024-03-11 178/week @ 2024-03-18 38/week @ 2024-03-25 148/week @ 2024-04-01 71/week @ 2024-04-08 206/week @ 2024-04-15

465 downloads per month
Used in 2 crates

MIT/Apache

2MB
53K SLoC

Rust 33K SLoC // 0.1% comments Assembly 20K 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 Shanghai 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. Today, all EVM tests for the Shanghai hardfork are implemented. Work is progressing on supporting the upcoming Cancun EVM changes. Furthermore, this prover uses the full ethereum state tree and hashing modes.

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

~13–23MB
~318K SLoC