Validator Ejector
Introduction
Ejector is a daemon service which monitors ValidatorsExitBusOracle events and sends out stored exit messages when necessary. It allows Node Operators to generate and sign exit messages ahead of time, which will be sent out by the Ejector when the Protocol requests an exit to be made.
On start, it loads exit messages from a specified folder in form of individual .json
files and validates their format, structure and signature. Then, it loads events from a configurable amount of latest finalized blocks, checks if exits should be made and after that periodically fetches fresh events.
Requirements
Hardware
- 2-core CPU
- 1GB RAM
Nodes
- Execution Node - Full node required
- Consensus Node
Software
Using Docker:
Docker + docker-compose.
Running directly or using for message encryption:
Node.js 16.
Exit Messages
Ejector loads and validates exit messages on start. This means that any changes to the messages folder (eg new exit messages) require a restart of the app to be picked up.
Ejector accepts messages in three formats:
Generic Format
{
"message": { "epoch": "123", "validator_index": "123" },
"signature": "0x123"
}
ethdo Output Format
{
"exit": {
"message": { "epoch": "123", "validator_index": "123" },
"signature": "0x123"
},
"fork_version": "0x123"
}