https://github.com/lita-xyz/reva
A minimal implementation of ZKPs of Ethereum block execution using Reth. Supports both Ethereum and OP Stack.
https://github.com/lita-xyz/reva
Last synced: 9 months ago
JSON representation
A minimal implementation of ZKPs of Ethereum block execution using Reth. Supports both Ethereum and OP Stack.
- Host: GitHub
- URL: https://github.com/lita-xyz/reva
- Owner: lita-xyz
- License: apache-2.0
- Created: 2024-12-18T19:50:19.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-06-16T13:43:50.000Z (12 months ago)
- Last Synced: 2025-06-16T14:46:06.177Z (12 months ago)
- Language: Rust
- Size: 44.4 MB
- Stars: 13
- Watchers: 4
- Forks: 7
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
- awesome-reth - reva
README
# Reth Valida (ReVa)
A minimal implementation of generating zero-knowledge proofs of EVM block execution using [Reth](https://github.com/paradigmxyz/reth). Supports both Ethereum and OP Stack.
> [!CAUTION]
>
> This repository is still an active work-in-progress and is not audited or meant for production usage.
### Attribution
The basis for this work is the existing ['RSP' project](https://github.com/succinctlabs/rsp) by Succinct Labs.
## Getting Started
To use ReVa, you must first have [the Valida tools](https://github.com/lita-xyz/valida-releases) installed, which includes the Valida VM and Rust compiler. Then follow the instructions below.
### Building the Host application
In the directory bin/host, run:
```console
cargo +valida build --target=x86_64-unknown-linux-gnu
```
this will build the binary `bin/host/target/release/reva` for your host architecture.
### Running the Host application
Running the host application will generate an input file to be used by the target/client application. Simply supply a block number, a chain ID (1 for ethereum, 10 for OP), and an RPC URL:
```console
./bin/host/target/release/reva --block-number 20000005 --chain-id 1 --rpc-url
```
The host application executes the block while fetching additional data necessary for offline execution. All the data required to run the execution and verification logic inside the Valida VM is serialized into a file `bin/host/input//.bin`.
You can also run the host directly by running the following command:
```bash
cargo run --bin reva --release -- --block-number 20000005 --chain-id 1 --rpc-url
```
### Using client input
The client input generated by executing against RPC can be used by the respective target/client applications. To build these applications for the Valida VM, use the following commands:
#### Eth client
```bash
cd bin/client-eth
cargo +valida build --target=valida-unknown-baremetal-gnu --release
```
#### OP client
```bash
cd bin/client-op
cargo +valida build --target=valida-unknown-baremetal-gnu --release
```
#### Running/proving
To run each client application on the given input, simply use `valida run` like so:
```bash
valida run --fast target/valida-unknown-baremetal-gnu/release/reva-client-{op,eth} log < bin/host/input//.bin
```
To prove, use:
```bash
valida prove target/valida-unknown-baremetal-gnu/release/reva-client-{op,eth} log < bin/host/input//.bin
```
## Issue reporting
Any issues report at https://github.com/lita-xyz/valida-releases/issues