Skip to content

Commit

Permalink
fix: handle dataGasUsed in engine for deneb payload (#5629)
Browse files Browse the repository at this point in the history
  • Loading branch information
g11tech committed Jun 13, 2023
1 parent 739febb commit c0115b0
Showing 1 changed file with 17 additions and 5 deletions.
22 changes: 17 additions & 5 deletions packages/beacon-node/src/execution/engine/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,7 @@ export type ExecutionPayloadRpc = {
blockHash: DATA; // 32 bytes
transactions: DATA[];
withdrawals?: WithdrawalRpc[]; // Capella hardfork
dataGasUsed?: QUANTITY; // DENEB
excessDataGas?: QUANTITY; // DENEB
};

Expand Down Expand Up @@ -187,9 +188,11 @@ export function serializeExecutionPayload(fork: ForkName, data: allForks.Executi
payload.withdrawals = withdrawals.map(serializeWithdrawal);
}

// DENEB adds excessDataGas to the ExecutionPayload
if ((data as deneb.ExecutionPayload).excessDataGas !== undefined) {
payload.excessDataGas = numToQuantity((data as deneb.ExecutionPayload).excessDataGas);
// DENEB adds dataGasUsed & excessDataGas to the ExecutionPayload
if (ForkSeq[fork] >= ForkSeq.deneb) {
const {dataGasUsed, excessDataGas} = data as deneb.ExecutionPayload;
payload.dataGasUsed = numToQuantity(dataGasUsed);
payload.excessDataGas = numToQuantity(excessDataGas);
}

return payload;
Expand Down Expand Up @@ -251,12 +254,21 @@ export function parseExecutionPayload(

// DENEB adds excessDataGas to the ExecutionPayload
if (ForkSeq[fork] >= ForkSeq.deneb) {
if (data.excessDataGas == null) {
const {dataGasUsed, excessDataGas} = data;

if (dataGasUsed == null) {
throw Error(
`dataGasUsed missing for ${fork} >= deneb executionPayload number=${executionPayload.blockNumber} hash=${data.blockHash}`
);
}
if (excessDataGas == null) {
throw Error(
`excessDataGas missing for ${fork} >= deneb executionPayload number=${executionPayload.blockNumber} hash=${data.blockHash}`
);
}
(executionPayload as deneb.ExecutionPayload).excessDataGas = quantityToBigint(data.excessDataGas);

(executionPayload as deneb.ExecutionPayload).dataGasUsed = quantityToBigint(dataGasUsed);
(executionPayload as deneb.ExecutionPayload).excessDataGas = quantityToBigint(excessDataGas);
}

return {executionPayload, blockValue, blobsBundle};
Expand Down

0 comments on commit c0115b0

Please sign in to comment.