Skip to content

attestantio/esd

Repository files navigation

ESD

Tag License GoDoc Lint Go Report Card

esd is a process that watches for slashing events included on the Ethereum beacon chain and runs a script when found.

Table of Contents

Install

Binaries

Binaries for the latest version of esd can be obtained from the releases page.

Docker

You can obtain the latest version of esd using docker with:

docker pull attestantio/esd

Source

esd is a standard Go binary which can be installed with:

go get github.com/attestantio/esd

Usage

Requirements to run esd

Beacon node

esd supports all beacon nodes that support the beacon API.

Configuring esd

The minimal requirements for esd are references to the beacon node, for example:

esd --eth2client.address=localhost:5051

Here, 'eth2client.address' is the address of a supported beacon client node (gRPC for Prysm, HTTP for Teku and Lighthouse).

To be useful, esd should be supplied with the names of scripts to run when slashings are detected. A configuration file containing this is shown below:

eth2client:
  address: 'localhost:5051'
slashings:
  attester-slashed-script: '/home/esd/scripts/attester-slashed.sh'
  proposer-slashed-script: '/home/esd/scripts/proposer-slashed.sh'

These scripts are called when attester and proposer slashings are found on the beacon chain. The scripts are passed a single argument, which is the index of the validator for which the slashing has been obtained.

Testing esd scripts

Because slashing are relatively rare it can be hard to test the scripts. esd provides two startup options to help.

If esd is started with --test-scripts then it will run both supplied scripts with the validator index 12345, and then exit.

If esd is started with --test-block 23456 then it will process the supplied block and run scripts if slashings are found.

Maintainers

Jim McDonald: @mcdee.

Contribute

Contributions welcome. Please check out the issues.

License

Apache-2.0 © 2021 - 2023 Attestant Limited.