Skip to main content

consensus-clients

Use when comparing Ethereum consensus client implementations, looking up how a specific client implements a spec feature, checking client activity (PRs, issues, releases), or understanding architectural differences between Lodestar, Lighthouse, Prysm, Teku, Nimbus, and Grandine.

Zur Installation springen

Quellinformationen

Repository
ChainSafe/lodestar-claude-plugins
Letzte Quellaktivität
25. Februar 2026 um 19:47
Erkannte Sprache von SKILL.md
Englisch
Sterne
0
Forks
1

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
consensus-clients
description
Use when comparing Ethereum consensus client implementations, looking up how a specific client implements a spec feature, checking client activity (PRs, issues, releases), or understanding architectural differences between Lodestar, Lighthouse, Prysm, Teku, Nimbus, and Grandine.
# Ethereum Consensus Client Cross-Reference You have detailed maps of all 6 Ethereum consensus clients. Use this to find implementations, compare approaches, and track activity. ## Local Clone Strategy (Preferred) **Clone client repos locally for fast code navigation.** Run the setup script from the plugin repo: ```bash bash scripts/clone-repos.sh [base-dir] # default: ~/ethereum-repos ``` Once cloned, use `grep`, `find`, and `cat` to navigate codebases directly: ```bash # Find how each client implements a spec function grep -rn "process_attestation\|processAttestation\|ProcessAttestation" \ ~/ethereum-repos/lodestar/packages/ \ ~/ethereum-repos/lighthouse/consensus/ \ ~/ethereum-repos/prysm/beacon-chain/core/ \ ~/ethereum-repos/teku/ethereum/spec/ \ ~/ethereum-repos/nimbus-eth2/beacon_chain/spec/ \ ~/ethereum-repos/grandine/transition_functions/ \ --include="*.ts" --include="*.rs" --include="*.go" --include="*.java" --include="*.nim" # Compare fork choice implementations find ~/ethereum-repos/*/ -path "*/fork*choice*" -name "*.ts" -o -name "*.rs" -o -name "*.go" | head -20 # Search for a specific type across all clients grep -rn "ExecutionPayloadEnvelope" ~/ethereum-repos/{lodestar,lighthouse,prysm,teku,nimbus-eth2,grandine}/ \ --include="*.ts" --include="*.rs" --include="*.go" --include="*.java" --include="*.nim" | head -30 ``` **Why local clones are better than WebFetch:** - Cross-client grep finds implementations in seconds - No URL guessing or 404s on wrong file paths - Can search across all clients simultaneously - Works offline, no rate limits **Fallback:** If repos aren't cloned locally, use WebFetch with the raw GitHub URLs listed for each client below. ## Client Overview | Client | Language | Repo | Build | Branch strategy | |---|---|---|---|---| | Lodestar | TypeScript | `ChainSafe/lodestar` | pnpm monorepo | `unstable` (dev), tags for releases | | Lighthouse | Rust | `sigp/lighthouse` | Cargo workspace | `unstable` (dev), `stable` (releases) | | Prysm | Go | `prysmaticlabs/prysm` | Bazel + Go modules | `develop` (dev), `master` (stable) | | Teku | Java | `Consensys/teku` | Gradle | `master` (dev), tags for releases | | Nimbus | Nim | `status-im/nimbus-eth2` | Nimble + Make | `unstable` (dev), `stable` (releases) | | Grandine | Rust | `grandinetech/grandine` | Cargo workspace | `develop` (dev), tags for releases | --- ## Lodestar (TypeScript) **Repo:** `ChainSafe/lodestar` **Package structure** (`packages/`): | Package | Purpose | |---|---| | `beacon-node` | Beacon chain client — block processing, sync, networking, API server | | `validator` | Validator client — duties, signing, slashing protection | | `state-transition` | Beacon state transition — epoch/block processing, per-fork logic | | `fork-choice` | LMD-GHOST + Casper FFG fork choice | | `types` | SSZ type definitions for all forks | | `params` | Consensus parameters and constants | | `config` | Network configuration (mainnet, testnet presets) | | `api` | REST client for beacon API | | `light-client` | Light client sync protocol | | `db` | Database layer (LevelDB) | | `reqresp` | libp2p req/resp protocol handlers | | `cli` | Command-line interface | | `logger` | Logging infrastructure | | `utils` | Shared utilities | | `prover` | Light client JSON-RPC proxy | | `era` | ERA file handling (historical data) | | `flare` | Debugging/testing tool | | `spec-test-util` | Spec test runner utilities | | `test-utils` | Shared test helpers | **Key code paths:** - State transition: `packages/state-transition/src/` - Per-fork logic: `packages/state-transition/src/slot/` - Epoch processing: `packages/state-transition/src/epoch/` - Block processing: `packages/state-transition/src/block/` - Networking: `packages/beacon-node/src/network/` - Sync: `packages/beacon-node/src/sync/` - API server: `packages/beacon-node/src/api/` - Fork choice: `packages/fork-choice/src/` - SSZ types: `packages/types/src/` **How to fetch code:** ``` https://raw.githubusercontent.com/ChainSafe/lodestar/unstable/packages/{package}/src/{path}.ts ``` **Key secondary repos:** | Repo | What | How to fetch | |---|---|---| | `ChainSafe/lodestar-z` | Zig libraries for Lodestar — actively developed, integrated into main client for performance-critical paths | `https://raw.githubusercontent.com/ChainSafe/lodestar-z/main/{path}` | | `ChainSafe/ssz` | SSZ TypeScript implementation (tree-backed persistent data structures) — `@chainsafe/ssz` on npm. Monorepo with packages: `ssz`, `persistent-merkle-tree`, `as-sha256`, `persistent-ts` | `https://raw.githubusercontent.com/ChainSafe/ssz/master/packages/ssz/src/{path}.ts` | | `ChainSafe/discv5` | Discovery v5 TypeScript implementation — used by Lodestar for peer discovery. Monorepo with `@chainsafe/discv5` and `@chainsafe/enr` packages | `https://raw.githubusercontent.com/ChainSafe/discv5/master/packages/discv5/src/{path}.ts` | --- ## Lighthouse (Rust) **Repo:** `sigp/lighthouse` **Directory structure:** | Directory | Purpose | |---|---| | `beacon_node/` | Beacon node — contains sub-crates for each component | | `beacon_node/beacon_chain/` | Core chain logic — block processing, head tracking | | `beacon_node/store/` | Database (hot + cold storage, LevelDB) | | `beacon_node/network/` | libp2p networking, sync | | `beacon_node/http_api/` | REST API server | | `beacon_node/execution_layer/` | Engine API client (EL communication) | | `beacon_node/eth1/` | Deposit contract interface | | `consensus/` | Spec implementation crates | | `consensus/types/` | SSZ types and containers | | `consensus/state_processing/` | State transition logic | | `consensus/fork_choice/` | Fork choice (proto-array) | | `consensus/cached_tree_hash/` | Optimized tree hashing | | `validator_client/` | Validator client | | `crypto/` | BLS, KZG, and other crypto | | `slasher/` | Slashing detection | | `lcli/` | CLI development tools | | `boot_node/` | Discovery bootstrap node | | `common/` | Shared libraries (logging, filesystem, etc.) | | `testing/` | Test utilities, simulator | **Key code paths:** - State transition: `consensus/state_processing/src/` - Per-slot: `consensus/state_processing/src/per_slot_processing.rs` - Per-block: `consensus/state_processing/src/per_block_processing/` - Per-epoch: `consensus/state_processing/src/per_epoch_processing/` - Types: `consensus/types/src/` - Fork choice: `consensus/fork_choice/src/` - Networking: `beacon_node/network/src/` - Sync: `beacon_node/network/src/sync/` - REST API: `beacon_node/http_api/src/` **How to fetch code:** ``` https://raw.githubusercontent.com/sigp/lighthouse/unstable/{path}.rs ``` **Key secondary repos:** | Repo | What | How to fetch | |---|---|---| | `sigp/ethereum_ssz` | SSZ serialization crate, optimized for speed and security | `https://raw.githubusercontent.com/sigp/ethereum_ssz/main/ssz/src/{path}.rs` | | `sigp/discv5` | Discovery v5 Rust implementation | `https://raw.githubusercontent.com/sigp/discv5/master/src/{path}.rs` | | `sigp/milhouse` | Persistent binary merkle tree — used for efficient state storage | `https://raw.githubusercontent.com/sigp/milhouse/main/src/{path}.rs` | | `sigp/enr` | Ethereum Node Records implementation | `https://raw.githubusercontent.com/sigp/enr/master/src/{path}.rs` | --- ## Prysm (Go) **Repo:** `prysmaticlabs/prysm` **Directory structure:** | Directory | Purpose | |---|---| | `beacon-chain/` | Beacon node implementation | | `beacon-chain/core/` | Core spec logic (blocks, epoch, validators) | | `beacon-chain/state/` | Beacon state management | | `beacon-chain/blockchain/` | Chain processing, head tracking | | `beacon-chain/sync/` | Sync protocols (initial, regular) | | `beacon-chain/p2p/` | libp2p networking | | `beacon-chain/rpc/` | gRPC + REST API | | `beacon-chain/execution/` | Engine API client | | `beacon-chain/forkchoice/` | Fork choice implementation | | `beacon-chain/db/` | Database (BoltDB) | | `validator/` | Validator client | | `consensus-types/` | Shared consensus data types | | `proto/` | Protobuf definitions | | `encoding/` | SSZ encoding, bytesutil | | `config/` | Network config, feature flags | | `crypto/` | BLS, hash utilities | | `network/` | High-level network utilities | | `monitoring/` | Metrics, tracing | | `contracts/deposit/` | Deposit contract bindings | | `cmd/` | CLI entry points (beacon-chain, validator, etc.) | | `tools/` | Development tools | **Key code paths:** - Block processing: `beacon-chain/core/blocks/` - Epoch processing: `beacon-chain/core/epoch/` - State transition: `beacon-chain/core/transition/` - Validator logic: `beacon-chain/core/validators/` - Fork choice: `beacon-chain/forkchoice/` - Types: `consensus-types/` - Networking: `beacon-chain/p2p/` - Sync: `beacon-chain/sync/` **How to fetch code:** ``` https://raw.githubusercontent.com/prysmaticlabs/prysm/develop/{path}.go ``` **Key secondary repos:** | Repo | What | How to fetch | |---|---|---| | `prysmaticlabs/gohashtree` | SHA256 library optimized for Merkle trees (Go + Assembly) | `https://raw.githubusercontent.com/prysmaticlabs/gohashtree/main/{path}.go` | Prysm is largely self-contained — most dependencies are vendored or in the main repo. --- ## Teku (Java) **Repo:** `Consensys/teku` **Directory structure:** | Directory | Purpose | |---|---| | `beacon/` | Core beacon chain logic | | `beacon/validator/` | Validator duties management | | `ethereum/` | Ethereum protocol modules | | `ethereum/spec/` | Spec types, logic, and milestones | | `ethereum/statetransition/` | State transition implementation | | `ethereum/executionlayer/` | Engine API client | | `networking/` | libp2p and discovery | | `networking/eth2/` | Eth2 gossip/reqresp protocols | | `storage/` | Database layer (RocksDB) | | `validator/` | Validator client modules | | `services/` | Service layer modules | | `infrastructure/` | Logging, metrics, async, IO | | `data/` | Data serialization, API types | | `eth-tests/` | Ethereum spec test integration | | `eth-reference-tests/` | Reference test runners | | `fork-choice-tests/` | Fork choice test vectors | | `acceptance-tests/` | End-to-end integration tests | | `teku/` | Main application entry point | **Key code paths:** - Spec logic: `ethereum/spec/src/main/java/tech/pegasys/teku/spec/` - Per-fork logic: `ethereum/spec/src/main/java/tech/pegasys/teku/spec/logic/versions/` - Types: `ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/`
Auf GitHub ansehen
Diese SKILL.md ist sehr gross, daher zeigt SkillsMP hier nur den ersten Abschnitt. Auf GitHub ansehen