An open API service indexing awesome lists of open source software.

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.

Awesome Lists containing this project

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