Categorygithub.com/flashbots/relayscan
modulepackage
1.9.0
Repository: https://github.com/flashbots/relayscan.git
Documentation: pkg.go.dev

# README

relayscan

Goreport status Test status Docker hub

Monitoring, analytics & data for Ethereum MEV-Boost builders and relays

Running on https://relayscan.io

Additional URLs:

Bid Archive

https://bidarchive.relayscan.io

Notes

  • Work in progress
  • At it's core, a set of tools to fill and show a postgres database
  • Multiple relays can serve a payload for the same slot (if the winning builder sent the best bid to multiple relays, and the proposer asks for a payload from all of them)
  • Comments and feature requests: @relayscan_io
  • License: AGPL
  • Maintainer: @metachris

Overview

Getting started

Run

You can either build relayscan from the repository, or use the Docker image:

# Build & run
make build
./relayscan help
./relayscan version

# Run with Docker
docker run flashbots/relayscan
docker run flashbots/relayscan /app/relayscan version

More example commands:

# Grab delivered payloads from relays data API, and fill up database
./relayscan core data-api-backfill                     #  for all slots since the merge
./relayscan core data-api-backfill --min-slot 9590900  #  since a given slot (good for dev/testing)

# Double-check new entries for valid payments (and other)
./relayscan core check-payload-value

# Update daily builder inclusion stats
./relayscan core update-builder-stats --start 2023-06-04 --end 2023-06-06  # update daily stats for 2023-06-04 and 2023-06-05
./relayscan core update-builder-stats --start 2023-06-04                   # update daily stats for 2023-06-04 until today
./relayscan core update-builder-stats --backfill                           # update daily stats since last entry, until today

# Start the website (--dev reloads the template on every page load, for easier iteration)
./relayscan service website --dev

Test & development

Start by filling the DB with relay data (delivered payloads), and checking it:

# Copy .env.example to .env.local, update ETH_NODE_URI and source it
source .env.local

# Start Postgres Docker container
make dev-postgres-start

# Query only a single relay, and for the shortest time possible
go run . core data-api-backfill --relay fb --min-slot -2000

# Now the DB has data, check it (and update in DB)
go run . core check-payload-value

# Can also check a single slot only:
go run . core check-payload-value --slot _N_

# Reset DB
dev-postgres-wipe

# See the Makefile for more commands
make help

For linting and testing:

# Install dependencies
go install mvdan.cc/gofumpt@latest
go install honnef.co/go/tools/cmd/[email protected]
go install github.com/golangci/golangci-lint/cmd/[email protected]

# Lint and test
make lint
make test
make test-race

# Format the code
make fmt

Updating relayscan

Notes for updating relayscan:

  • Relay payloads are selected by inserted_at. When adding a new relay, you probably want to manually subtract a day from inserted_at so they don't show up all for today (UPDATE mainnet_data_api_payload_delivered SET inserted_at = inserted_at - INTERVAL '1 DAY' WHERE relay='newrelay.xyz';). See also https://github.com/flashbots/relayscan/issues/28

# Packages

Package cmd contains the cobra command line setup.
Package common includes common utilities.
Package database exposes the postgres database.
No description provided by the author
Package vars contains global variables and configuration.

# Variables

is set during build process.