Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
555e9b7
chore(deps): bump crate-ci/typos from 1.44.0 to 1.45.0 in the actions…
dependabot[bot] Apr 7, 2026
e07503d
feat: update `zkboost` to `v0.5.0` config and image (#1354)
han0110 Apr 13, 2026
835dd9b
feat: support gpu ere prover in zkboost (#1353)
frisitano Apr 15, 2026
80b4d74
ci: add consensus spec drift detection (#1343)
barnabasbusa Apr 17, 2026
3b8b912
feat: add grafloki (#1328)
parithosh Apr 17, 2026
c2f6028
fix: drop gloas-support and heze-support image overrides (#1357)
barnabasbusa Apr 17, 2026
efaf138
feat(mev): add commit_boost_config param for custom CB config templat…
JasonVranek Apr 17, 2026
7a3c999
feat: add confirmation_byzantine_threshold, bump genesis-generator to…
barnabasbusa Apr 17, 2026
d16d828
chore(deps): bump the actions group with 3 updates (#1361)
dependabot[bot] Apr 20, 2026
bc233e7
fix: pin tempo image to 2.10.4 (#1362)
barnabasbusa Apr 20, 2026
51e1ddc
fix: remove gitpod references as the service has been deprecated (#1364)
h4ck3rk3y Apr 20, 2026
874371c
fix(stability-check): set maxForkDistance to 3 to tolerate transient …
yperbasis Apr 21, 2026
d793f8c
chore: bump ethereum-genesis-generator to 6.0.0 (#1365)
barnabasbusa Apr 21, 2026
8a11379
chore: bump egg again (#1366)
barnabasbusa Apr 21, 2026
68494b8
chore: bump ethereum-genesis-generator to 6.0.2 (#1369)
qu0b Apr 25, 2026
c0aaa60
feat: update `zkboost` usage to `v0.6.0` (#1368)
han0110 Apr 25, 2026
6b5312f
chore: bump readme (#1370)
barnabasbusa Apr 25, 2026
6e609b1
test(zkboost): mirror EIP-8025 mock + 8-GPU configs, defaults to zero…
frisitano Apr 25, 2026
7b41814
fix: Add temporary fix to cmd for spamoor - temp fix (#1371)
barnabasbusa Apr 26, 2026
a046489
fix: disable blob tx by default temp (#1373)
barnabasbusa Apr 27, 2026
8fe091e
feat: Add syncmode option to ethrex_launcher (#1374)
barnabasbusa Apr 27, 2026
4320b6b
fix: request both(reth-zisk and ethrex-zisk) configured proof types (…
chetanyb Apr 28, 2026
304f1c3
fix: remove temporary batcher fix from command list (#1377)
pk910 Apr 30, 2026
cf4f5d1
chore(deps): bump googleapis/release-please-action from 4.4.1 to 5.0.…
dependabot[bot] Apr 30, 2026
1715010
chore: bump ethereum-genesis-generator to 6.0.4 (#1379)
barnabasbusa Apr 30, 2026
3400c65
fix: re-enable blob spamming (#1380)
barnabasbusa Apr 30, 2026
eac08c0
chore: bump ethereum-genesis-generator to 6.0.5 (#1381)
barnabasbusa Apr 30, 2026
daac3c0
chore(deps): bump crate-ci/typos from 1.45.1 to 1.46.0 in the actions…
dependabot[bot] May 5, 2026
33a2b92
chore: bump ethereum-genesis-generator to 6.0.6 (#1386)
barnabasbusa May 6, 2026
252f0ee
fix: Add p2p colocation whitelist option to launcher (#1387)
barnabasbusa May 11, 2026
64f0e52
chore(deps): bump crate-ci/typos from 1.46.0 to 1.46.1 in the actions…
dependabot[bot] May 11, 2026
71b02f6
feat(spamoor): expose full participant name as a client_group (#1389)
barnabasbusa May 11, 2026
69d7125
feat: replace dummy EL with el_type: None (#1358)
barnabasbusa May 12, 2026
3f9aa2f
fix: add --rpc.eth-proof-window flag to reth (#1390)
bharath-123 May 12, 2026
87b5084
feat: cross-enclave sync via `kt-<host>:<port>` network (#1378)
barnabasbusa May 12, 2026
67fd55e
feat: add FOCIL dashboard (#986)
KatyaRyazantseva May 12, 2026
309c67b
feat: bump default genesis gas limit from 60M to 200M (#1391)
barnabasbusa May 14, 2026
85b6725
feat(zkboost): set default proof_timeout_secs to seconds_per_slot (#1…
han0110 May 15, 2026
1a4049d
feat: sync CL config with consensus-specs v1.7.0-alpha.8 (#1397)
barnabasbusa May 16, 2026
debb79a
chore(deps): bump crate-ci/typos from 1.46.1 to 1.46.2 in the actions…
dependabot[bot] May 18, 2026
55c8875
feat: verifier mode support with validation (#1396)
chetanyb May 18, 2026
76fea83
feat: add disruptoor support (#1398)
samcm May 18, 2026
cb83373
feat(ethrex): set default --http.api namespaces (#1392)
barnabasbusa May 18, 2026
35b770d
fix(consensoor): drop hardcoded --graffiti=consensoor (#1403)
barnabasbusa May 19, 2026
d714bce
fix: validate per-instance zkvm configs (#1407)
chetanyb May 29, 2026
6547435
test: add 8GPU isolated verifier test with Assertoor checks (#1408)
chetanyb May 29, 2026
556b405
chore(deps): bump crate-ci/typos from 1.46.2 to 1.46.3 in the actions…
dependabot[bot] May 29, 2026
48e4eec
feat: add validator ranges support for buildoor (#1410)
bharath-123 May 29, 2026
b9231ac
feat: add trueblocks support (#1404)
MysticRyuujin May 29, 2026
994a63d
fix(zkboost): config file fixes and mock proving time default (#1402)
chetanyb May 29, 2026
b6bb63b
chore(deps): bump crate-ci/typos from 1.46.3 to 1.47.0 in the actions…
dependabot[bot] Jun 2, 2026
22685bd
fix(zkboost): fill mock_proving_time defaults from slot duration (#1401)
barnabasbusa Jun 2, 2026
fe4c129
feat(otel): opt-in tracing to the engine OTel stack (#1405)
samcm Jun 3, 2026
debdfe4
docs(skill): default to kurtosis otel/ClickHouse for log + trace coll…
parithosh Jun 4, 2026
fc3bba8
feat(dora): auto-configure buildoor inventory when mev_type: buildoor…
barnabasbusa Jun 5, 2026
d47e987
chore(deps): bump the actions group with 2 updates (#1415)
dependabot[bot] Jun 11, 2026
0c38a64
feat: enable genesis validator shuffling & add proper name mapping (#…
pk910 Jun 12, 2026
3a434cf
fix: consensoor devnet setup (#1418)
barnabasbusa Jun 12, 2026
608794f
fix: remove deprecated builder api port from buildoor (#1419)
pk910 Jun 14, 2026
abe80af
fix: fix buildoor wiring (skip mev-boost) (#1422)
pk910 Jun 15, 2026
5a6616e
feat(teku): enable QUIC transport for Teku beacon nodes (#1417)
lucassaldanha Jun 15, 2026
275045c
fix: publish remote signer HTTP port on deterministic public port (#1…
barnabasbusa Jun 15, 2026
4a82a91
feat: support remote_signer in participants_matrix (#1424)
barnabasbusa Jun 15, 2026
a8c7cd6
chore: bump egg to support 8282 (#1428)
barnabasbusa Jun 18, 2026
12da7b4
feat(buildoor): auto-add payload-attributes flag to first participant…
barnabasbusa Jun 19, 2026
a996aa2
feat(buildoor): support teku as first participant (#1430)
barnabasbusa Jun 19, 2026
02675ab
fix(buildoor): correct teku payload-attributes flag to double-dash --…
barnabasbusa Jun 19, 2026
589fc32
chore(deps): bump actions/checkout from 6.0.3 to 7.0.0 in the actions…
dependabot[bot] Jun 23, 2026
3de6d13
feat: add ethrex natip (#1436)
barnabasbusa Jun 23, 2026
f70e5cf
feat(buildoor): support multiple per-participant buildoor instances (…
barnabasbusa Jun 24, 2026
4632ec2
chore(deps): bump egg to 6.1.1 (#1439)
barnabasbusa Jun 24, 2026
d4bd739
chore: bump ethereum-genesis-generator to 6.1.2 (#1440)
barnabasbusa Jun 24, 2026
ea5e33c
fix: Update Teku p2p-quic-port (#1442)
etan-status Jun 29, 2026
f0caa44
feat: add img override for buildoor instances (#1441)
barnabasbusa Jun 29, 2026
de29105
chore(deps): bump crate-ci/typos from 1.47.2 to 1.48.0 in the actions…
dependabot[bot] Jul 6, 2026
feb0d37
feat: enable ens resolver in dora (#1448)
pk910 Jul 8, 2026
4d76e41
docs: clarify grafana additional_dashboards requires a github/http lo…
barnabasbusa Jul 8, 2026
d5dc641
feat: set payload_due_bps default to 5000 for glamsterdam-devnet-7 (#…
barnabasbusa Jul 8, 2026
39bdd0d
feat: update zkboost usage to v0.9.0 (#1450)
han0110 Jul 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .claude/skills/kurtosis-ethereum/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@ Run Ethereum consensus/execution client devnets via [kurtosis](https://github.co
## Quick Start

```bash
# ALWAYS start the OTel stack first — runs an OTel collector + ClickHouse on the
# Docker host for centralized log (and trace) collection while debugging.
# Docker-only. Logs are stamped with the enclave name; traces require the
# `otel` additional_service (see below). ClickHouse on :18123, OTLP on :14317/:14318.
kurtosis otel start

# Write a network_params.yaml, then:
kurtosis run github.com/ethpandaops/ethereum-package \
--enclave <name> \
Expand Down Expand Up @@ -69,6 +75,8 @@ network_params:
additional_services:
- dora # block explorer
- assertoor # automated testing
- otel # ship EL/CL/VC traces to the engine OTel/ClickHouse
# stack (Docker-only; requires `kurtosis otel start`)
```

## Reference Tool
Expand Down
133 changes: 133 additions & 0 deletions .github/check-consensus-spec-values.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
#!/usr/bin/env python3
"""
Compares a generated config.yaml against the upstream consensus-specs config.

Exits non-zero if any non-excluded fields have different values or are missing
from our config relative to the upstream spec.
"""

import argparse
import sys
import urllib.request

import yaml


# Fields that are intentionally testnet-specific or explicitly excluded from comparison.
EXCLUDED_FIELDS = {
# Network identity - intentionally differs for testnets
"CONFIG_NAME",
# Merge transition - testnets start post-merge with TTD=0
"TERMINAL_TOTAL_DIFFICULTY",
# Genesis params - testnet-configurable
"MIN_GENESIS_ACTIVE_VALIDATOR_COUNT",
"MIN_GENESIS_TIME",
"GENESIS_FORK_VERSION",
"GENESIS_DELAY",
# Fork versions - testnet-specific values
"ALTAIR_FORK_VERSION",
"BELLATRIX_FORK_VERSION",
"CAPELLA_FORK_VERSION",
"DENEB_FORK_VERSION",
"ELECTRA_FORK_VERSION",
"FULU_FORK_VERSION",
"GLOAS_FORK_VERSION",
"HEZE_FORK_VERSION",
"EIP7928_FORK_VERSION",
# Fork activation epochs - testnets activate all forks at epoch 0
"ALTAIR_FORK_EPOCH",
"BELLATRIX_FORK_EPOCH",
"CAPELLA_FORK_EPOCH",
"DENEB_FORK_EPOCH",
"ELECTRA_FORK_EPOCH",
"FULU_FORK_EPOCH",
"GLOAS_FORK_EPOCH",
"HEZE_FORK_EPOCH",
"EIP7928_FORK_EPOCH",
# Deposit contract - testnet-configurable
"DEPOSIT_CHAIN_ID",
"DEPOSIT_NETWORK_ID",
"DEPOSIT_CONTRACT_ADDRESS",
# Blob schedule - explicitly excluded
"BLOB_SCHEDULE",
# Deprecated field moved to preset files, not present in spec configs
"SECONDS_PER_SLOT",
}


def load_yaml(path_or_url: str) -> dict:
if path_or_url.startswith("http://") or path_or_url.startswith("https://"):
with urllib.request.urlopen(path_or_url) as response:
return yaml.safe_load(response.read().decode())
with open(path_or_url) as f:
return yaml.safe_load(f)


def compare_configs(our_config: dict, spec_config: dict) -> bool:
failures = []
warnings = []

spec_keys = {k for k in spec_config if k not in EXCLUDED_FIELDS}
our_keys = {k for k in our_config if k not in EXCLUDED_FIELDS}

for key in sorted(spec_keys - our_keys):
failures.append(
f" MISSING in our config: {key!r} (spec has: {spec_config[key]!r})"
)

for key in sorted(spec_keys & our_keys):
spec_val = spec_config[key]
our_val = our_config[key]
if spec_val != our_val:
failures.append(
f" MISMATCH {key!r}:\n"
f" ours: {our_val!r}\n"
f" spec: {spec_val!r}"
)

for key in sorted(our_keys - spec_keys):
warnings.append(
f" EXTRA field in our config (not in spec): {key!r} = {our_config[key]!r}"
)

if warnings:
print("Warnings (fields present in our config but not in the upstream spec):")
for w in warnings:
print(w)
print()

if failures:
print(f"FAILED: {len(failures)} issue(s) found:")
for failure in failures:
print(failure)
return False

print(f"OK: all {len(spec_keys & our_keys)} comparable spec fields match.")
return True


def main():
parser = argparse.ArgumentParser(
description="Compare our generated config.yaml against the upstream consensus-specs config"
)
parser.add_argument(
"--our-config",
required=True,
help="Path to our generated config.yaml",
)
parser.add_argument(
"--spec-config",
required=True,
help="Path or HTTPS URL to the upstream consensus-spec config.yaml",
)
args = parser.parse_args()

our_config = load_yaml(args.our_config)
spec_config = load_yaml(args.spec_config)

if not compare_configs(our_config, spec_config):
sys.exit(1)


if __name__ == "__main__":
main()
33 changes: 33 additions & 0 deletions .github/tests/buildoor-instances-matrix.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Multiple buildoor builders on top of a participants_matrix. The matrix expands
# to one participant per el x cl combination; buildoor_params.instances then wires
# a dedicated builder (by 1-based participant index) to chosen participants. The
# builder config stays independent of the participants. Builders onboard
# themselves after genesis via their lifecycle deposit (default on).
participants_matrix:
el:
- el_type: geth
el_image: ethpandaops/geth:glamsterdam-devnet-6
cl:
- cl_type: lighthouse
cl_image: ethpandaops/lighthouse:glamsterdam-devnet-6
- cl_type: lodestar
cl_image: ethpandaops/lodestar:glamsterdam-devnet-6
network_params:
preset: minimal
gloas_fork_epoch: 6
gas_limit: 150000000
buildoor_params:
image: ethpandaops/buildoor:glamsterdam-devnet-6
builder_api: true
epbs_builder: true
lifecycle: true
instances:
- participant: 1
count: 2
- participant: 2
count: 1
additional_services:
- buildoor
- dora
dora_params:
image: ethpandaops/dora:glamsterdam-devnet-6
42 changes: 42 additions & 0 deletions .github/tests/buildoor-instances.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Multiple dedicated per-participant buildoor builders via buildoor_params.instances.
# No mev_type: builders are configured independently of the participants and
# onboard themselves after genesis via their lifecycle deposit (default on), so
# gloas does not have to be at genesis. This spins up three buildoor services:
# buildoor-lighthouse-geth-1 (participant 1)
# buildoor-lodestar-geth-2-1 (participant 2, instance 1)
# buildoor-lodestar-geth-2-2 (participant 2, instance 2)
participants:
- el_type: geth
el_image: ethpandaops/geth:glamsterdam-devnet-6
cl_type: lighthouse
cl_image: ethpandaops/lighthouse:glamsterdam-devnet-6
- el_type: geth
el_image: ethpandaops/geth:glamsterdam-devnet-6
cl_type: lodestar
cl_image: ethpandaops/lodestar:glamsterdam-devnet-6
network_params:
preset: minimal
gloas_fork_epoch: 6
gas_limit: 150000000
buildoor_params:
image: ethpandaops/buildoor:glamsterdam-devnet-6
builder_api: true
epbs_builder: true
lifecycle: true
instances:
- participant: 1
count: 1
- participant: 2
count: 2
additional_services:
- buildoor
- dora
- spamoor
spamoor_params:
image: ethpandaops/spamoor:master
spammers:
- scenario: eoatx
config:
throughput: 2
dora_params:
image: ethpandaops/dora:glamsterdam-devnet-6
24 changes: 24 additions & 0 deletions .github/tests/disruptoor.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
participants_matrix:
el:
- el_type: geth
cl:
- cl_type: lighthouse
- cl_type: prysm
count: 4
additional_services:
- dora
- disruptoor
disruptoor_params:
partitions:
- name: split-node-1-node-2
groups:
- participants: [1]
- participants: [2]
components: [el, cl]
shaping:
- name: delay-node-1
participants: [1]
components: [el, cl]
delay: 50ms
jitter: 10ms
include_control: true
17 changes: 0 additions & 17 deletions .github/tests/dummy-el.yaml

This file was deleted.

81 changes: 81 additions & 0 deletions .github/tests/examples/1gpu_zkvm.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
# EIP-8025 testnet with zkboost backed by a single GPU ZisK prover.
#
#
# Run with:
# kurtosis run --enclave eip8025-zkboost-1gpu \
# . \
# --args-file .github/tests/1gpu_zkvm.yaml_norun
#
# Prerequisites:
# - NVIDIA GPU with drivers installed
# - NVIDIA Container Toolkit configured for Docker

participants:
- cl_type: lighthouse
cl_image: ethpandaops/lighthouse:eth-act-optional-proofs
el_type: reth
el_image: ghcr.io/paradigmxyz/reth
supernode: true
cl_extra_params:
- --target-peers=3
- --proof-engine-endpoint=http://zkboost-1:3000
- --proof-types=5
vc_extra_params:
- --proof-engine-endpoint=http://zkboost-1:3000
- --proof-types=5
count: 2
- cl_type: lighthouse
cl_image: ethpandaops/lighthouse:eth-act-optional-proofs
el_type: None
supernode: false
cl_extra_params:
- --target-peers=3
- --proof-engine-endpoint=http://zkboost-1:3000
- --proof-types=5
count: 1

network_params:
preset: minimal
seconds_per_slot: 30
prefunded_accounts: '{"0xb9e79D19f651a941757b35830232E7EFC77E1c79": {"balance": "100000ETH"}}'

additional_services:
- zkboost
- dora
- prometheus
- grafana
- tempo
- spamoor

mev_type: flashbots
mev_params:
mev_builder_subsidy: 1
mev_builder_cl_image: ethpandaops/lighthouse:eth-act-optional-proofs
mev_builder_cl_extra_params:
- --proof-engine-endpoint=http://zkboost-1:3000
- --proof-types=5

spamoor_params:
spammers:
- name: "Blob Spammer (Kurtosis Package)"
scenario: "blobs"
config:
throughput: 1
- name: "ERC txs"
scenario: "erctx"
config:
throughput: 1


zkboost_params:
image: ghcr.io/eth-act/zkboost/zkboost:0.9.0
env:
RUST_LOG: info,zkboost=debug
instances:
- name: zkboost-1
el_participant_index: 0
zkvms:
- kind: ere
proof_type: reth-zisk
gpu:
device_ids: ["0"]
Loading