Skip to content

[WIP] SSZ-REST Engine API transport Big Secret#19551

Open
Giulio2002 wants to merge 2 commits intomainfrom
eip-8161-ssz-rest
Open

[WIP] SSZ-REST Engine API transport Big Secret#19551
Giulio2002 wants to merge 2 commits intomainfrom
eip-8161-ssz-rest

Conversation

@Giulio2002
Copy link
Collaborator

Summary

  • Implements the EL side of EIP-8161 — SSZ-REST Engine API transport
  • Adds an SSZ-REST HTTP server alongside the existing JSON-RPC Engine API, cutting payload sizes ~50% and eliminating JSON encode/decode overhead
  • All engine_* methods mapped to REST endpoints with SSZ-encoded request/response bodies
  • CLI flags: --authrpc.ssz-rest, --authrpc.ssz-rest-port (default 6767)
  • EIP-8160 integration: advertises ssz_rest channel via engine_getClientCommunicationChannelsV1

Key files

  • execution/engineapi/engine_ssz_rest_server.go — HTTP server + handlers
  • execution/engineapi/engine_types/ssz.go — SSZ encode/decode for all Engine API types
  • cmd/utils/flags.go / node/cli/flags.go — CLI flag wiring

Test plan

  • Tested in Kurtosis devnet with Prysm CL (1000+ txs confirmed, chain finalized)
  • Unit tests for SSZ round-trips
  • CI

🤖 Generated with Claude Code

Implements the EL side of EIP-8161, adding an SSZ-REST HTTP server
alongside the existing JSON-RPC Engine API. All engine_* methods are
mapped to REST endpoints with SSZ-encoded request/response bodies,
cutting payload sizes ~50% and eliminating JSON encode/decode overhead.

- New SSZ-REST HTTP server with JWT auth (same secret as JSON-RPC)
- SSZ encode/decode for all Engine API types (PayloadStatus,
  ForkchoiceUpdatedResponse, NewPayloadRequest, GetPayloadResponse,
  GetBlobs, ExchangeCapabilities, ClientVersion, CommunicationChannels)
- CLI flags: --authrpc.ssz-rest, --authrpc.ssz-rest-port
- EIP-8160 integration: advertises ssz_rest channel via
  engine_getClientCommunicationChannelsV1
- Handles V4 (Electra) and V5 (Fulu) with correct fork version mapping
- Proper SSZ Union types for optional fields (latest_valid_hash, payload_id)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@Giulio2002 Giulio2002 changed the title [WIP] EIP-8161: SSZ-REST Engine API transport [WIP] SSZ-REST Engine API transport Big Secret Mar 1, 2026
Implements the updated EIP-8160 spec where communication channels are
returned as part of engine_exchangeCapabilitiesV2 instead of a separate
engine_getClientCommunicationChannelsV1 method. The V2 response includes
both capabilities and supportedProtocols fields.

The old GetClientCommunicationChannelsV1 method is kept for backward
compatibility but now delegates to the shared getSupportedProtocols().

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant