Skip to content

Commit

Permalink
Fix and extract payload to header conversion
Browse files Browse the repository at this point in the history
  • Loading branch information
g11tech committed Feb 5, 2023
1 parent 6793305 commit 4ae79dc
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 9 deletions.
24 changes: 15 additions & 9 deletions packages/state-transition/src/block/processExecutionPayload.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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;
}
1 change: 1 addition & 0 deletions packages/state-transition/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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";

0 comments on commit 4ae79dc

Please sign in to comment.