Go client types and codecs for the Ethereum Engine API — the consensus-layer to execution-layer interface defined in ethereum/execution-apis.
The library exposes one Go package per Engine-API fork (paris, shanghai,
cancun, prague, osaka, amsterdam) under spec/, plus a top-level
spec/ package with fork-agnostic Versioned* wrappers. Type names follow
the execution-layer fork rather than the Engine API's V1/V2/V3 suffix
— the parameter type to engine_newPayloadV1 is paris.NewPayloadRequest,
the parameter to engine_newPayloadV3 is cancun.NewPayloadRequest, and so
on.
Every spec type provides:
- JSON marshaling in Engine API wire format (camelCase field names,
hex-encoded byte strings, hex-encoded
QUANTITYintegers). - SSZ marshaling and hash-tree-root via
pk910/dynamic-ssz, matching the SSZ transport defined in execution-apis PR #764.
| Go package | Engine API spec |
|---|---|
paris |
paris.md |
shanghai |
shanghai.md |
cancun |
cancun.md |
prague |
prague.md |
osaka |
osaka.md |
amsterdam |
amsterdam.md |
This is the initial spec-types implementation. A higher-level client (HTTP/JSON-RPC + SSZ REST transport with capability negotiation) will follow in subsequent releases.
The package layout and Versioned* wrapper pattern are inspired by
Attestant's go-eth2-client.
See NOTICE for full attribution.
Apache-2.0. See LICENSE.