MCPcopy Index your code
hub / github.com/SeismicSystems/summit

github.com/SeismicSystems/summit @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
1,423 symbols 6,793 edges 128 files 331 documented · 23%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

WIP

Summit

Summit consensus client

Summit is a high-performance consensus client designed to drive EVM-based blockchains. Originally built to power the Seismic Blockchain, Summit works with any EVM client that implements the Engine API.

Key Features

  • Responsive Consensus: Powered by the Simplex consensus protocol, enabling sub-second block times
  • High Throughput: Significantly higher TPS than Ethereum
  • EVM Compatible: Works with any execution client supporting the Engine API
  • BLS12-381 & Ed25519 Cryptography: Secure validator key management
  • Built with Commonware: Leverages primitives from the Commonware library
  • Dynamic Validator Set: Supports validator deposits (EIP-6110) and withdrawals (EIP-7002)

Summit uses the Simplex protocol, a responsive consensus mechanism that adapts to network conditions rather than waiting for predetermined timeouts. This allows the network to move as fast as conditions permit, achieving sub-second block times in most cases.

Benchmarks

We run our benchmarks using EC2 instances spread across these regions: ["us-west-2", "eu-central-1", "us-east-1", "ap-northeast-1", "sa-east-1"]. We use 100 kB blocks.

Metric 5 nodes 10 nodes 20 nodes 100 nodes 500 nodes 1000 nodes
Average TPS 707 tx/s 962 tx/s 1051 tx/s TBD TBD TBD
Average Block Time 1290ms 940ms 870ms TBD TBD TBD

The TBD benchmarks are currently running (7/24/25). With 20 nodes and under, the mempool is more of a bottleneck than consensus. This is why we see performance increasing for the first few columns.

You can reproduce these results by running the sequence in this repository.

Installation

Prerequisites

  • Rust (latest stable)
  • An EVM execution client (e.g., Reth, Geth) with Engine API support
  • (Optional) Reth binary in PATH for local testnet

Building from Source

git clone https://github.com/SeismicSystems/summit.git
cd summit
cargo build --release

Quick Start

1. Generate Validator Keys

cargo run -- keys generate --key-store-path /path/to/keys

2. View Your Public Key

cargo run -- keys show --key-store-path /path/to/keys

3. Configure Genesis

Create a genesis file that references your EVM genesis configuration. See example_genesis.toml for the required format.

4. Start Your Validator

Ensure your EVM client is running, then:

cargo run -- run \
  --key-store-path /path/to/keys \
  --store-path /storage/directory \
  --engine-ipc-path /tmp/reth_engine_api.ipc \
  --genesis-path /path/to/genesis.toml

The validator will automatically discover other nodes listed in the genesis file and begin participating in consensus. Transactions can be submitted through the EVM client's RPC interface as usual.

Local Development

To spin up a 4-node testnet locally (requires reth in PATH):

cargo run --bin testnet

Architecture

Summit acts as the consensus layer, communicating with EVM execution clients through the Engine API. The execution client remains responsible for building blocks and processing transactions, while Summit handles: - Validator coordination - Block proposals - Consensus finalization - Network communication

Next steps / Future Roadmap

  • Deeper benchmarks
  • More optimizations (potentially DKG threshold signatures to improve throughput)
  • Full Audit and completeness Q4 2025

Resources

Status

⚠️ Work in Progress - This project is under active development. APIs and features may change.

Extension points exported contracts — how you extend this code

SszHashTreeRoot (Interface)
Trait for computing the SSZ hash-tree-root of a value. [13 implementers]
types/src/ssz_hash.rs
IntoBlock (Interface)
A trait for cached block types that can be converted to the underlying block. [2 implementers]
syncer/src/variant.rs
Hook (Interface)
The simple alias for function types that are `'static`, `Send`, and `Sync`. [1 implementers]
node/src/prom/hooks.rs
SummitApi (Interface)
(no doc)
rpc/src/api.rs
EngineClient (Interface)
(no doc) [5 implementers]
types/src/engine_client.rs
Variant (Interface)
A marker trait describing the types used by a variant of the syncer. [1 implementers]
syncer/src/variant.rs
SummitPermissionedApi (Interface)
(no doc)
rpc/src/api.rs
SchemeProvider (Interface)
Supplies the signing scheme the marshal should use for a given epoch. [1 implementers]
types/src/scheme.rs

Core symbols most depended-on inside this repo

public_key
called by 325
types/src/ext_private_key.rs
len
called by 217
types/src/withdrawal.rs
push
called by 199
types/src/withdrawal.rs
get
called by 187
syncer/src/mocks/resolver.rs
iter
called by 180
node/src/prom/hooks.rs
start
called by 161
node/src/engine.rs
arg
called by 135
types/src/reth.rs
send
called by 114
syncer/src/standard/variant.rs

Shape

Method 673
Function 588
Class 126
Enum 23
Interface 13

Languages

Rust100%

Modules by API surface

types/src/ssz_state_tree.rs162 symbols
types/src/consensus_state.rs115 symbols
types/src/withdrawal.rs51 symbols
types/src/ssz_tree.rs42 symbols
node/src/test_harness/mock_engine_client.rs38 symbols
finalizer/src/db.rs38 symbols
types/src/ssz_tree_key.rs36 symbols
syncer/src/actor.rs36 symbols
types/src/reth.rs35 symbols
types/src/dynamic_epocher.rs32 symbols
types/src/protocol_params.rs30 symbols
syncer/src/ingress/handler.rs28 symbols

For agents

$ claude mcp add summit \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact