Skip to content

🕵️‍♀️ An Ethereum Relay Data Indexer 🕵️‍♀️

License

Notifications You must be signed in to change notification settings

quartz-technology/agate

Repository files navigation

Agate

An Ethereum Relay Data Indexer.

Cover by DALL-E.

Table of Contents

Introduction

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.

Acknowledgments

Before going in more details about the project, we would like to thank those entities and people for inspiring us to build Agate:

Architecture

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.

Prerequisites

To build the project, you'll need:

To run the project, you'll need:

  • A beacon API URL.

Getting Started

This section describes how to build and start Agate.

Build the project

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

Start the project

Using the binary built from source

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

Using Docker Engine

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. 

Test the project

Check out the dedicated file

Contributing

Check out the dedicated file!

Authors

This project is currently being maintained by the 🕵️ at Quartz Technology.

About

🕵️‍♀️ An Ethereum Relay Data Indexer 🕵️‍♀️

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published