agate

command module
v0.0.0-...-663aea3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 24, 2024 License: Apache-2.0 Imports: 1 Imported by: 0

README

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.

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL