refactor: remove use of getExecutionFromBlockRoot in node client

This commit is contained in:
Derrick Hammer 2023-07-11 01:30:22 -04:00
parent 4dbd3fc51d
commit f24fdc5489
Signed by: pcfreak30
GPG Key ID: C997C339BE476FF2
1 changed files with 5 additions and 33 deletions

View File

@ -107,10 +107,11 @@ export default class Client extends BaseClient {
console.error(`Invalid Optimistic Update: ${verify?.reason}`); console.error(`Invalid Optimistic Update: ${verify?.reason}`);
return null; return null;
} }
return this.getExecutionFromBlockRoot(
updateJSON.data.attested_header.beacon.slot, return {
updateJSON.data.attested_header.beacon.body_root, blockHash: toHexString(update.attestedHeader.execution.blockHash),
); blockNumber: update.attestedHeader.execution.blockNumber,
};
} }
protected async syncFromGenesis(): Promise<Uint8Array[]> { protected async syncFromGenesis(): Promise<Uint8Array[]> {
@ -177,33 +178,4 @@ export default class Client extends BaseClient {
return false; return false;
} }
} }
private async getExecutionFromBlockRoot(
slot: bigint,
expectedBlockRoot: Bytes32,
): Promise<ExecutionInfo> {
const res = await axios.get(`/eth/v2/beacon/blocks/${slot}`);
if (!res.data) {
throw Error(`fetching block failed`);
}
const block = capella.ssz.BeaconBlock.fromJson(res.data.message);
const blockRoot = toHexString(
capella.ssz.BeaconBlockBody.hashTreeRoot(block.body),
);
if (blockRoot !== expectedBlockRoot) {
throw Error(
`block provided by the beacon chain api doesn't match the expected block root`,
);
}
this.blockCache.set<any>(Number(slot), block);
this.blockHashCache.set<Bytes32>(Number(slot), expectedBlockRoot);
return {
blockHash: toHexString(block.body.executionPayload.blockHash),
blockNumber: block.body.executionPayload.blockNumber,
};
}
} }