esd
is a process that watches for slashing events included on the Ethereum beacon chain and runs a script when found.
Binaries for the latest version of esd
can be obtained from the releases page.
You can obtain the latest version of esd
using docker with:
docker pull attestantio/esd
esd
is a standard Go binary which can be installed with:
go get github.com/attestantio/esd
esd
supports all beacon nodes that support the beacon API.
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.
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.
Jim McDonald: @mcdee.
Contributions welcome. Please check out the issues.
Apache-2.0 © 2021 - 2023 Attestant Limited.