Pluto is an alternative implementation of Charon, a distributed validator middleware client for Ethereum Staking. It enables a group of independent operators to safely run a single validator by coordinating duties across multiple nodes.
Pluto, like Charon, is used by stakers to distribute the responsibility of running Ethereum Validators across a number of different instances and client implementations.
See the official docs at https://docs.obol.org/ for introductions and key concepts.
The Obol Docs website is the best place to get started. The important sections are intro, key concepts and charon.
Pluto tracks Charon parity: the workspace version reflects the Charon release that Pluto aims to be compatible with.
Following semver, two given versions of Pluto are:
- compatible if their
MAJORnumber is the same,MINORandPATCHnumbers differ - incompatible if their
MAJORnumber differs
Reasons for a new MAJOR release include a new Ethereum hardfork, removal of an old hardfork, or breaking changes to the internal P2P network or consensus mechanism.
The pluto dkg subcommand is more restrictive: all peers must run matching MAJOR and MINOR versions for the DKG ceremony; patch versions may differ, though running the latest patch is recommended.
Docker (pre-built image):
docker pull nethermindeth/pluto:latest
docker run --rm nethermindeth/pluto:latest --helpBuild from source:
cargo build --release --workspaceRun tests:
cargo test --workspace --features pluto-eth2api/integration # requires a running Docker daemonLocal observability stack for tests:
docker compose -f test-infra/docker-compose.yml up -d # Grafana on http://localhost:3000Examples are located in crate-specific example folders:
- Relay Server
- Peerinfo
- P2P
- P2P Bootnode
- Quic Upgrade
- Metrics
- Tracing
- Consensus (QBFT)
- DKG Broadcast
- DKG Sync
- Parsigex
Business Source License 1.1 — see LICENSE for details.
See Contributing.