ESD
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.