erigontech / erigontech/erigon

engineapi: complete Amsterdam REST-SSZ blob and custody support

Open
#23,045 1 comment 0 reactions 1 assignee Claimed by @yperbasis View on GitHub
Glamsterdam
Dominant language
Go
Stars
3.6k
Forks
1.5k
Avg merge
1d 16h
Merged PRs (30d)
455

Description

## Problem

The REST-SSZ Engine API introduced by #21729 does not yet implement two Amsterdam requirements from [execution-apis#793](https://github.com/ethereum/execution-apis/pull/793):

- `POST /engine/v1/blobs/v4` is not implemented or advertised. The current draft requires an Amsterdam EL to serve v4, which adds cell-range selection.
- `POST /engine/v1/forkchoice` decodes and validates `custody_columns` but does not apply it. The current draft requires an accepted custody set to remain active until another forkchoice update replaces it; omitting the field must leave the set unchanged.

Consequently, Erigon can advertise Amsterdam among its supported fork schemas without providing the complete Amsterdam behavior.

## Required work

- Add the `/blobs/v4` request and response SSZ types and connect them to a cell-range backend.
- Advertise blob revision v4 only when the endpoint is available.
- Apply `custody_columns` in external-CL mode and preserve the set until it is replaced.
- Keep custody processing independent from forkchoice payload status, as required by the draft.
- Cover v4 selection, partial availability, `204 No Content`, capability advertisement, custody replacement, omitted custody, persistence, and custody-error behavior in tests.

## Specification

- [REST transport and endpoint semantics](https://github.com/ethereum/execution-apis/blob/d39e9a2710bf5f75eddee44fe8c2a6844bea23f0/src/engine/refactor.md)
- [SSZ container catalogue](https://github.com/ethereum/execution-apis/blob/d39e9a2710bf5f75eddee44fe8c2a6844bea23f0/src/engine/refactor-ssz.md)

Follow-up to #21729.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.