Skip to content

SSZ-REST Engine API transport (CL client)#8937

Draft
Giulio2002 wants to merge 4 commits intosigp:unstablefrom
Giulio2002:eip-8161-ssz-rest
Draft

SSZ-REST Engine API transport (CL client)#8937
Giulio2002 wants to merge 4 commits intosigp:unstablefrom
Giulio2002:eip-8161-ssz-rest

Conversation

@Giulio2002
Copy link
Copy Markdown
Contributor

@Giulio2002 Giulio2002 commented Mar 5, 2026

Summary

Implements SSZ-REST Engine API transport on the consensus layer (client side), as specified in ethereum/execution-apis#764.

  • New CLI flag --ssz-rest-url to configure SSZ-REST endpoint
  • SSZ-encoded request/response bodies for all Engine API methods
  • Automatic fallback to JSON-RPC on network errors
  • Supports: new_payload (v3/v4), forkchoice_updated (v3), get_payload (v1-v5), exchange_capabilities
  • Proper fork-based version selection (Deneb v3, Electra/Fulu v4)

Giulio2002 and others added 4 commits March 5, 2026 23:47
Implement SSZ-REST transport for all Engine API methods:
- new_payload (v3/v4)
- forkchoice_updated (v3)
- get_payload (v3/v4/v5)
- exchange_capabilities (v1)
- get_blobs (v1, stub)

New CLI flag --ssz-rest-url enables SSZ-REST with automatic
fallback to JSON-RPC on network errors.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- new_payload → POST /engine/v{N}/payloads
- forkchoice_updated → POST /engine/v3/forkchoice
- get_payload → GET /engine/v{N}/payloads/{payload_id}
- exchange_capabilities → POST /engine/v1/capabilities
- Error responses now text/plain instead of JSON
- Added do_get_request/do_http for GET support

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Per execution-apis PR sigp#764 spec:
- PayloadStatus.latest_valid_hash: List[Hash32, 1]
- ForkchoiceUpdatedResponse.payload_id: List[Bytes8, 1]
- ForkchoiceUpdatedRequest.payload_attributes: List[PayloadAttributes, 1]
- Remove unused UnknownSelector/ServerError variants

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
SSZ-REST URL is now derived from the execution endpoint (same host:port).
The EL serves SSZ-REST on the engine port under /engine/* paths.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@Giulio2002 Giulio2002 changed the title EIP-8161: SSZ-REST Engine API transport (CL client) SSZ-REST Engine API transport (CL client) Mar 8, 2026
@Giulio2002
Copy link
Copy Markdown
Contributor Author

Implements the SSZ-REST Engine API transport spec: ethereum/execution-apis#764

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