An Ethereum Relay Data Indexer.
Cover by DALL-E.
The Ethereum block building landscape has evolved a lot since The Merge.
In an attempt to build the foundations of what will eventually become PBS, mev-boost was developed and introduced new parties in the transaction lifecycle:
- The Block Builders: responsible for forging blocks using various sources of transactions.
- The Relays: responsible for aggregating block builder bids and distributing the most valuables to the proposers.
Agate indexes the data exposed by a set of relays through their dedicated Data Transparency API.
Using the collected data, we hope it'll be used to enlighten a bit more the MEV landscape.
Before going in more details about the project, we would like to thank those entities and people for inspiring us to build Agate:
Here is a schema of Agate's default architecture:
Explained in simple terms, the internal components work like this:
- The Listener waits for new head events from the Ethereum Beacon node.
- Once a new event has been received - a new slot has been processed - the Data Aggregator collects data from various relays.
- The collected data is preprocessed by the Data Preprocessor.
- And the Storage Manager is responsible for saving the preprocessed aggregated relay data in a database.
To build the project, you'll need:
To run the project, you'll need:
- A beacon API URL.
This section describes how to build and start Agate.
To build Agate from source, run the following command:
go build -o main.go
To build Agate using Docker, run the following command:
docker build -t agate .
To build Agate using Dagger, run the following command:
dagger -m ./.dagger export binary
If you want to start the project using the binary built from source, copy and customize the
agate-config.example.yaml
configuration file.
Before executing the binary, make sure that you have a running postgres instance.
Then, run the following command:
./agate --config agate-config.yaml
If you want to start the project using Docker, customize the
agate-config-docker.yaml
configuration file.
Here, the postgres instance is provided as part of the docker-compose.yaml
configuration file.
To run both agate and postgres using Docker, run the following command:
docker compose up # optional: -d to run the containers in detached moe.
Check out the dedicated file
Check out the dedicated file!
This project is currently being maintained by the 🕵️ at Quartz Technology.