Skip to content

Commit 42de636

Browse files
committed
Add definition of remaining engine API
1 parent 984d50d commit 42de636

3 files changed

Lines changed: 31 additions & 16 deletions

File tree

packages/beacon-node/src/execution/engine/http.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -473,8 +473,8 @@ export class ExecutionEngineHttp implements IExecutionEngine {
473473
this.payloadIdCache.prune();
474474
}
475475

476-
async getPayloadBodiesByHash(_fork: ForkName, blockHashes: RootHex[]): Promise<(ExecutionPayloadBody | null)[]> {
477-
const method = "engine_getPayloadBodiesByHashV1";
476+
async getPayloadBodiesByHash(fork: ForkName, blockHashes: RootHex[]): Promise<(ExecutionPayloadBody | null)[]> {
477+
const method = ForkSeq[fork] >= ForkSeq.gloas ? "engine_getPayloadBodiesByHashV2" : "engine_getPayloadBodiesByHashV1";
478478
assertReqSizeLimit(blockHashes.length, 32);
479479
const response = await this.rpc.fetchWithRetries<
480480
EngineApiRpcReturnTypes[typeof method],
@@ -484,11 +484,12 @@ export class ExecutionEngineHttp implements IExecutionEngine {
484484
}
485485

486486
async getPayloadBodiesByRange(
487-
_fork: ForkName,
487+
fork: ForkName,
488488
startBlockNumber: number,
489489
blockCount: number
490490
): Promise<(ExecutionPayloadBody | null)[]> {
491-
const method = "engine_getPayloadBodiesByRangeV1";
491+
const method =
492+
ForkSeq[fork] >= ForkSeq.gloas ? "engine_getPayloadBodiesByRangeV2" : "engine_getPayloadBodiesByRangeV1";
492493
assertReqSizeLimit(blockCount, 32);
493494
const start = numToQuantity(startBlockNumber);
494495
const count = numToQuantity(blockCount);

packages/beacon-node/src/execution/engine/mock.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,9 @@ export class ExecutionEngineMockBackend implements JsonRpcBackend {
144144
engine_getPayloadV5: this.getPayloadV5.bind(this),
145145
engine_getPayloadV6: this.getPayloadV5.bind(this),
146146
engine_getPayloadBodiesByHashV1: this.getPayloadBodiesByHash.bind(this),
147+
engine_getPayloadBodiesByHashV2: this.getPayloadBodiesByHash.bind(this),
147148
engine_getPayloadBodiesByRangeV1: this.getPayloadBodiesByRange.bind(this),
149+
engine_getPayloadBodiesByRangeV2: this.getPayloadBodiesByRange.bind(this),
148150
engine_getClientVersionV1: this.getClientVersionV1.bind(this),
149151
engine_getBlobsV1: this.getBlobs.bind(this),
150152
engine_getBlobsV2: this.getBlobsV2.bind(this),

packages/beacon-node/src/execution/engine/types.ts

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -87,12 +87,14 @@ export type EngineApiRpcParamTypes = {
8787
* 1. Array of DATA - Array of block_hash field values of the ExecutionPayload structure
8888
* */
8989
engine_getPayloadBodiesByHashV1: DATA[][];
90+
engine_getPayloadBodiesByHashV2: DATA[][];
9091

9192
/**
9293
* 1. start: QUANTITY, 64 bits - Starting block number
9394
* 2. count: QUANTITY, 64 bits - Number of blocks to return
9495
*/
9596
engine_getPayloadBodiesByRangeV1: [start: QUANTITY, count: QUANTITY];
97+
engine_getPayloadBodiesByRangeV2: [start: QUANTITY, count: QUANTITY];
9698

9799
/**
98100
* Object - Instance of ClientVersion
@@ -146,8 +148,10 @@ export type EngineApiRpcReturnTypes = {
146148
engine_getPayloadV6: ExecutionPayloadResponse;
147149

148150
engine_getPayloadBodiesByHashV1: (ExecutionPayloadBodyRpc | null)[];
151+
engine_getPayloadBodiesByHashV2: (ExecutionPayloadBodyRpc | null)[];
149152

150153
engine_getPayloadBodiesByRangeV1: (ExecutionPayloadBodyRpc | null)[];
154+
engine_getPayloadBodiesByRangeV2: (ExecutionPayloadBodyRpc | null)[];
151155

152156
engine_getClientVersionV1: ClientVersionRpc[];
153157

@@ -168,11 +172,13 @@ type ExecutionPayloadResponse = ExecutionPayloadRpcWithValue;
168172
export type ExecutionPayloadBodyRpc = {
169173
transactions: DATA[];
170174
withdrawals: WithdrawalV1[] | null | undefined;
175+
blockAccessList?: DATA | null; // GLOAS:EIP-7928
171176
};
172177

173178
export type ExecutionPayloadBody = {
174179
transactions: bellatrix.Transaction[];
175180
withdrawals: capella.Withdrawals | null;
181+
blockAccessList?: Uint8Array | null; // GLOAS:EIP-7928
176182
};
177183

178184
export type ExecutionPayloadRpc = {
@@ -605,21 +611,27 @@ export function deserializeExecutionRequests(serialized: ExecutionRequestsRpc):
605611
}
606612

607613
export function deserializeExecutionPayloadBody(data: ExecutionPayloadBodyRpc | null): ExecutionPayloadBody | null {
608-
return data
609-
? {
610-
transactions: data.transactions.map((tran) => dataToBytes(tran, null)),
611-
withdrawals: data.withdrawals ? data.withdrawals.map(deserializeWithdrawal) : null,
612-
}
613-
: null;
614+
if (data == null) return null;
615+
const body: ExecutionPayloadBody = {
616+
transactions: data.transactions.map((tran) => dataToBytes(tran, null)),
617+
withdrawals: data.withdrawals ? data.withdrawals.map(deserializeWithdrawal) : null,
618+
};
619+
if (data.blockAccessList != null) {
620+
body.blockAccessList = dataToBytes(data.blockAccessList, null);
621+
}
622+
return body;
614623
}
615624

616625
export function serializeExecutionPayloadBody(data: ExecutionPayloadBody | null): ExecutionPayloadBodyRpc | null {
617-
return data
618-
? {
619-
transactions: data.transactions.map((tran) => bytesToData(tran)),
620-
withdrawals: data.withdrawals ? data.withdrawals.map(serializeWithdrawal) : null,
621-
}
622-
: null;
626+
if (data == null) return null;
627+
const body: ExecutionPayloadBodyRpc = {
628+
transactions: data.transactions.map((tran) => bytesToData(tran)),
629+
withdrawals: data.withdrawals ? data.withdrawals.map(serializeWithdrawal) : null,
630+
};
631+
if (data.blockAccessList != null) {
632+
body.blockAccessList = bytesToData(data.blockAccessList);
633+
}
634+
return body;
623635
}
624636

625637
export function deserializeBlobAndProofs(data: BlobAndProofRpc | null): BlobAndProof | null {

0 commit comments

Comments
 (0)