diff --git a/execution/evm/execution.go b/execution/evm/execution.go index b72646b27f..80e66d9ed9 100644 --- a/execution/evm/execution.go +++ b/execution/evm/execution.go @@ -347,7 +347,7 @@ func (c *EngineClient) GetTxs(ctx context.Context) ([][]byte, error) { // // ExecMeta tracking (if store is configured): // - Checks for already-promoted blocks to enable idempotent execution -// - Saves ExecMeta with payloadID after forkchoiceUpdatedV3 for crash recovery +// - Saves ExecMeta with the payload ID returned by forkchoiceUpdated for crash recovery // - Updates ExecMeta to "promoted" after successful execution func (c *EngineClient) ExecuteTxs(ctx context.Context, txs [][]byte, blockHeight uint64, timestamp time.Time, prevStateRoot []byte) (execution.ExecuteResult, error) { diff --git a/execution/evm/store.go b/execution/evm/store.go index 21fe5008ae..d3e60ceee1 100644 --- a/execution/evm/store.go +++ b/execution/evm/store.go @@ -35,9 +35,9 @@ type ExecMeta struct { Height uint64 // ParentHash is the EL parent block hash used for this execution ParentHash []byte - // PayloadID is the Engine API payload ID (optional, set after forkchoiceUpdatedV3) + // PayloadID is the Engine API payload ID (optional, set after forkchoiceUpdated) PayloadID []byte - // BlockHash is the EL block hash once built (set after getPayloadV4) + // BlockHash is the EL block hash once built (set after getPayload) BlockHash []byte // StateRoot is the state root from the execution payload StateRoot []byte @@ -45,11 +45,14 @@ type ExecMeta struct { TxHash []byte // Timestamp is the block timestamp Timestamp int64 - // Stage indicates the current execution stage: - // "started" - forkchoiceUpdatedV3 called, payloadID obtained - // "built" - getPayloadV4 called, payload retrieved - // "submitted" - newPayloadV4 called, payload marked VALID - // "promoted" - final forkchoiceUpdatedV3 called, block is head + // Stage indicates the current execution stage. forkchoiceUpdated (V3/V4) and + // getPayload (V4/V5/V6) negotiate their version at runtime and fall back on + // "Unsupported fork"; newPayload is picked from the payload fields (V4 or V5) + // and is not retried with another version: + // "started" - forkchoiceUpdated returned a payload ID + // "built" - getPayload returned the payload + // "submitted" - newPayload accepted the payload as VALID + // "promoted" - final forkchoiceUpdated made the block the head Stage string // UpdatedAtUnix is the Unix timestamp when this metadata was last updated UpdatedAtUnix int64