diff --git a/packages/state-transition/src/block/processExecutionPayload.ts b/packages/state-transition/src/block/processExecutionPayload.ts index cf7fb2955822..4d2ccb88516f 100644 --- a/packages/state-transition/src/block/processExecutionPayload.ts +++ b/packages/state-transition/src/block/processExecutionPayload.ts @@ -61,10 +61,20 @@ export function processExecutionPayload( } } - // For blinded or full payload -> return common header - const transactionsRoot = isExecutionPayload(payload) - ? ssz.bellatrix.Transactions.hashTreeRoot(payload.transactions) - : payload.transactionsRoot; + const payloadHeader = isExecutionPayload(payload) ? executionPayloadToPayloadHeader(fork, payload) : payload; + + // TODO Deneb: Types are not happy by default. Since it's a generic allForks type going through ViewDU + // transformation then into allForks, probably some weird intersection incompatibility happens + state.latestExecutionPayloadHeader = state.config + .getExecutionForkTypes(state.slot) + .ExecutionPayloadHeader.toViewDU(payloadHeader) as typeof state.latestExecutionPayloadHeader; +} + +export function executionPayloadToPayloadHeader( + fork: ForkSeq, + payload: allForks.ExecutionPayload +): allForks.ExecutionPayloadHeader { + const transactionsRoot = ssz.bellatrix.Transactions.hashTreeRoot(payload.transactions); const bellatrixPayloadFields: allForks.ExecutionPayloadHeader = { parentHash: payload.parentHash, @@ -96,9 +106,5 @@ export function processExecutionPayload( | deneb.ExecutionPayload).excessDataGas; } - // TODO Deneb: Types are not happy by default. Since it's a generic allForks type going through ViewDU - // transformation then into allForks, probably some weird intersection incompatibility happens - state.latestExecutionPayloadHeader = state.config - .getExecutionForkTypes(state.slot) - .ExecutionPayloadHeader.toViewDU(bellatrixPayloadFields) as typeof state.latestExecutionPayloadHeader; + return bellatrixPayloadFields; } diff --git a/packages/state-transition/src/index.ts b/packages/state-transition/src/index.ts index 4e9aaf433414..586e4e3d509e 100644 --- a/packages/state-transition/src/index.ts +++ b/packages/state-transition/src/index.ts @@ -47,3 +47,4 @@ export {ExecutionPayloadStatus, DataAvailableStatus, BlockExternalData} from "./ export {becomesNewEth1Data} from "./block/processEth1Data.js"; // Withdrawals for new blocks export {getExpectedWithdrawals} from "./block/processWithdrawals.js"; +export {executionPayloadToPayloadHeader} from "./block/processExecutionPayload.js";