You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+8-6Lines changed: 8 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,8 +13,9 @@ All engines live under `engines/<name>/`. Each has a `build.sh` that produces `r
13
13
| nimbus | v26.7.0 | Release implementation |
14
14
| lodestar | v1.46.0 | Release implementation |
15
15
| grandine | PR #656 (`9905f46f`) | Unreleased; Grandine 2.0.6 does not contain FCR |
16
+
| prysm | PR #17122 (`5fc7c60d`) | Unreleased; enabled through Prysm's FCR test harness |
16
17
17
-
Prysm is deferred: PR #15164 implements an older spec (`adiasg/eth2.0-specs:3e3ef28`), not [consensus-specs#4747](https://github.com/ethereum/consensus-specs/pull/4747). Shipping a binary against the older algorithm would contaminate cross-engine comparison. Revisit once the upstream PR rebases.
18
+
Prysm support is pinned to the open [PR #17122](https://github.com/OffchainLabs/prysm/pull/17122), not a released client version. The adapter compiles as a test binary so it can reuse Prysm's upstream FCR spectest harness without patching production client code.
18
19
19
20
## Architecture
20
21
@@ -25,9 +26,9 @@ A Go orchestrator owns everything engine-agnostic — ERA file download, checkpo
Per sim slot N the engine: fetches block N, imports it, looks up `plan[N].source_block_slot`, extracts that block's attestations, injects them using its native equivalent of Lighthouse's `AttestationFromBlock::True`, runs `recompute_head_at_slot(N+1)`, emits one JSONL record. The orchestrator validates each record, enriches with engine metadata, writes the final CSV / JSONL / manifest.
@@ -43,7 +44,7 @@ The orchestrator owns which block sources attestations for each sim slot:
43
44
-**`next-non-missed`** (default): for sim slot N, the first non-missed block in `N+1..N+lookahead-cap`. `--lookahead-cap=4` reproduces today's Lighthouse behavior; `--lookahead-cap=32` covers the spec's full inclusion range.
44
45
-**`strict-source-block-k-minus-1`**: source is exactly `N+1` if it exists, else nothing.
45
46
-**`greedy-lookahead`**: consumes every non-missed block in `N+1..N+lookahead-cap`, bounded to attestations for the FCR evaluation slot.
46
-
-**`xatu-first-seen-singles`**: serves per-validator first-seen gossip votes from parquet instead of sourcing attestations from blocks. The orchestrator filters by `raw_seen_ms <= --attestation-first-seen-deadline-ms` (default `12000`) and sends committee-free `attesting_indices` to the engine for direct fork-choice injection. All 5 engines implement this injection path. Use `--attestation-first-seen-base` as either a local base path or `s3://bucket/prefix`; files are expected below `network=<network>/source=raw/epoch=<epoch>/data.parquet`. `--lookahead-cap` is inert in this mode.
47
+
-**`xatu-first-seen-singles`**: serves per-validator first-seen gossip votes from parquet instead of sourcing attestations from blocks. The orchestrator filters by `raw_seen_ms <= --attestation-first-seen-deadline-ms` (default `12000`) and sends committee-free `attesting_indices` to the engine for direct fork-choice injection. All 6 engines implement this injection path. Use `--attestation-first-seen-base` as either a local base path or `s3://bucket/prefix`; files are expected below `network=<network>/source=raw/epoch=<epoch>/data.parquet`. `--lookahead-cap` is inert in this mode.
0 commit comments