Skip to content

Repository files navigation

DAppNodePackage-dabeacon-indexer

DAppNode package for dabeacon-indexer — a per-validator beacon-chain indexer with web UI, JSON API, and live SSE stream.

Networks

Each variant under package_variants/ produces a distinct DAppNode package:

Network Package name
Ethereum mainnet dabeacon-indexer.dnp.dappnode.eth
Hoodi dabeacon-indexer-hoodi.dnp.dappnode.eth
Gnosis dabeacon-indexer-gnosis.dnp.dappnode.eth

What it does

  • Auto-imports validator pubkeys from your local Web3Signer install for the network and resolves them to validator indices via the beacon node.
  • Optionally tracks additional validator indices entered manually in the wizard.
  • Writes per-epoch attestation, proposal, and sync-committee outcomes (with rewards) into a bundled Postgres.
  • Serves the indexer's web UI at the package's .dappnode URL.

Setup wizard fields

Field Required Purpose
ENABLE_WEB3SIGNER_IMPORT no Toggle Web3Signer auto-discovery. Defaults to true.
STATIC_VALIDATORS no Comma-separated list of additional validator indices.
BACKFILL_BEACON_URL no Optional separate archive-capable beacon node for historical backfill. Strongly recommended if your selected consensus client isn't archive-capable.
SCAN_MODE no auto (default) / sparse / dense — see upstream README.
API_KEY no If set, required for the live SSE endpoint.

The beacon node URL and Web3Signer URL are not wizard fields — they're inferred at startup from the network and from your DAppNode Stakers UI selection (see below).

Architecture

The package wraps the upstream image at ghcr.io/dappnode/dabeacon_indexer:<UPSTREAM_VERSION> with a thin entrypoint that:

  1. Reads _DAPPNODE_GLOBAL_CONSENSUS_CLIENT_<NETWORK> (set by the DAppNode Stakers UI) and infers the beacon URL — http://beacon-chain.<client-alias>:<port> for most clients, with Nimbus's combined beacon-validator:4500 handled. If no client is selected for this network, the package fails fast with an actionable error.
  2. Infers the Web3Signer URL from the network (web3signer.web3signer.dappnode:9000 for mainnet, web3signer.web3signer-<network>.dappnode:9000 otherwise).
  3. Reads STATIC_VALIDATORS from the wizard.
  4. If Web3Signer import is enabled, calls ${WEB3SIGNER_URL}/api/v1/eth2/publicKeys for the managed pubkeys.
  5. Resolves each pubkey to a validator index via ${BEACON_URL}/eth/v1/beacon/states/head/validators/{pubkey}.
  6. Sorts and deduplicates the combined list, exports it as VALIDATOR_INDICES, and execs the upstream binary.

The Stakers integration uses helpers from dappnode/staker-package-scripts — the same package the official consensus-client packages rely on, so URL conventions stay in sync.

A bundled postgres:17-alpine provides storage; data persists in the postgres-data volume.

License

GPL-3.0-or-later.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages