Skip to content

Prune finalized gloas envelopes #9527

Description

@pawanjay176

Currently, finalized Gloas payload envelopes are never pruned. prune_finalized_payloads in the background migrator only emits DeleteExecutionPayload for canonical finalized blocks. There is no corresponding DeletePayloadEnvelope. DeletePayloadEnvelope is only emitted today for non-canonical blocks that are being purged.

As a result, full SignedExecutionPayloadEnvelopes persist on disk indefinitely for canonical finalized blocks.

The spec only requires serving envelopes over [current_epoch - compute_min_epochs_for_block_requests(), current_epoch] (the WS window), so anything beyond that can be dropped. Within the WS window, a blinded representation is likely sufficient.
To serve the payloads until the WS period, we need to be able to reconstruct the full SignedExecutionPayloadEnvelope. We get the actual payload from the EL with the engine_getPayloadBodies,

The blinded representation could be something like

pub struct ExecutionPayloadEnvelopeBlinded<E: EthSpec> {
    pub payload_hash: Hash256,
    pub execution_requests: ExecutionRequests<E>,
    #[serde(with = "serde_utils::quoted_u64")]
    pub builder_index: u64,
    pub beacon_block_root: Hash256,
    pub parent_beacon_block_root: Hash256,
}

and be able to convert from an blinded envelope to a full envelope if the payload is provided. I would prefer not to go through the AbstractExecPayload path if possible since I find it very confusing.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions