Skip to content

Commit

Permalink
feat: rename pre/post fork designations and fork guards (#7441)
Browse files Browse the repository at this point in the history
**Motivation**

Start of resolution to #7183. Driven by peerDAS branch. `isForkBlobs` is
not longer semantically correct in `fulu` because that branch does not
have blobs, it has columns. Is the first major feature that was removed
so the types/typeguard naming semantics we were using kinda broke.
Updated to reflect pre/post fork instead of post"Feature".

**Description**

Rename pre/post fork names and type guards.

---------

Co-authored-by: Nico Flaig <nflaig@protonmail.com>
  • Loading branch information
matthewkeil and nflaig authored Feb 12, 2025
1 parent 2247c16 commit 7347056
Show file tree
Hide file tree
Showing 53 changed files with 392 additions and 304 deletions.
40 changes: 20 additions & 20 deletions packages/api/src/beacon/routes/beacon/block.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {ContainerType, ListCompositeType, ValueOf} from "@chainsafe/ssz";
import {ChainForkConfig} from "@lodestar/config";
import {ForkName, ForkPreElectra, ForkPreExecution, isForkBlobs, isForkExecution} from "@lodestar/params";
import {ForkName, ForkPreBellatrix, ForkPreElectra, isForkPostBellatrix, isForkPostDeneb} from "@lodestar/params";
import {
BeaconBlockBody,
RootHex,
Expand All @@ -15,7 +15,7 @@ import {
sszTypesFor,
} from "@lodestar/types";
import {EmptyMeta, EmptyResponseCodec, EmptyResponseData, WithVersion} from "../../../utils/codecs.js";
import {getExecutionForkTypes, toForkName} from "../../../utils/fork.js";
import {getPostBellatrixForkTypes, toForkName} from "../../../utils/fork.js";
import {fromHeaders} from "../../../utils/headers.js";
import {Endpoint, RequestCodec, RouteDefinitions, Schema} from "../../../utils/index.js";
import {
Expand Down Expand Up @@ -88,7 +88,7 @@ export type Endpoints = {
"GET",
BlockArgs,
{params: {block_id: string}},
SignedBlindedBeaconBlock | SignedBeaconBlock<ForkPreExecution>,
SignedBlindedBeaconBlock | SignedBeaconBlock<ForkPreBellatrix>,
ExecutionOptimisticFinalizedAndVersionMeta
>;

Expand Down Expand Up @@ -248,7 +248,7 @@ export function getDefinitions(config: ChainForkConfig): RouteDefinitions<Endpoi
req: blockIdOnlyReq,
resp: {
data: WithVersion((fork) =>
isForkExecution(fork) ? ssz[fork].SignedBlindedBeaconBlock : ssz[fork].SignedBeaconBlock
isForkPostBellatrix(fork) ? ssz[fork].SignedBlindedBeaconBlock : ssz[fork].SignedBeaconBlock
),
meta: ExecutionOptimisticFinalizedAndVersionCodec,
},
Expand Down Expand Up @@ -313,7 +313,7 @@ export function getDefinitions(config: ChainForkConfig): RouteDefinitions<Endpoi
const fork = config.getForkName(slot);

return {
body: isForkBlobs(fork)
body: isForkPostDeneb(fork)
? sszTypesFor(fork).SignedBlockContents.toJson(signedBlockOrContents as SignedBlockContents)
: sszTypesFor(fork).SignedBeaconBlock.toJson(signedBlockOrContents as SignedBeaconBlock),
headers: {
Expand All @@ -336,7 +336,7 @@ export function getDefinitions(config: ChainForkConfig): RouteDefinitions<Endpoi
);
}
return {
signedBlockOrContents: isForkBlobs(forkName)
signedBlockOrContents: isForkPostDeneb(forkName)
? sszTypesFor(forkName).SignedBlockContents.fromJson(body)
: ssz[forkName].SignedBeaconBlock.fromJson(body),
};
Expand All @@ -348,7 +348,7 @@ export function getDefinitions(config: ChainForkConfig): RouteDefinitions<Endpoi
const fork = config.getForkName(slot);

return {
body: isForkBlobs(fork)
body: isForkPostDeneb(fork)
? sszTypesFor(fork).SignedBlockContents.serialize(signedBlockOrContents as SignedBlockContents)
: sszTypesFor(fork).SignedBeaconBlock.serialize(signedBlockOrContents as SignedBeaconBlock),
headers: {
Expand All @@ -359,7 +359,7 @@ export function getDefinitions(config: ChainForkConfig): RouteDefinitions<Endpoi
parseReqSsz: ({body, headers}) => {
const forkName = toForkName(fromHeaders(headers, MetaHeader.Version));
return {
signedBlockOrContents: isForkBlobs(forkName)
signedBlockOrContents: isForkPostDeneb(forkName)
? sszTypesFor(forkName).SignedBlockContents.deserialize(body)
: ssz[forkName].SignedBeaconBlock.deserialize(body),
};
Expand All @@ -384,7 +384,7 @@ export function getDefinitions(config: ChainForkConfig): RouteDefinitions<Endpoi
: signedBlockOrContents.message.slot;
const fork = config.getForkName(slot);
return {
body: isForkBlobs(fork)
body: isForkPostDeneb(fork)
? sszTypesFor(fork).SignedBlockContents.toJson(signedBlockOrContents as SignedBlockContents)
: sszTypesFor(fork).SignedBeaconBlock.toJson(signedBlockOrContents as SignedBeaconBlock),
headers: {
Expand All @@ -396,7 +396,7 @@ export function getDefinitions(config: ChainForkConfig): RouteDefinitions<Endpoi
parseReqJson: ({body, headers, query}) => {
const forkName = toForkName(fromHeaders(headers, MetaHeader.Version));
return {
signedBlockOrContents: isForkBlobs(forkName)
signedBlockOrContents: isForkPostDeneb(forkName)
? sszTypesFor(forkName).SignedBlockContents.fromJson(body)
: ssz[forkName].SignedBeaconBlock.fromJson(body),
broadcastValidation: query.broadcast_validation as BroadcastValidation,
Expand All @@ -409,7 +409,7 @@ export function getDefinitions(config: ChainForkConfig): RouteDefinitions<Endpoi
const fork = config.getForkName(slot);

return {
body: isForkBlobs(fork)
body: isForkPostDeneb(fork)
? sszTypesFor(fork).SignedBlockContents.serialize(signedBlockOrContents as SignedBlockContents)
: sszTypesFor(fork).SignedBeaconBlock.serialize(signedBlockOrContents as SignedBeaconBlock),
headers: {
Expand All @@ -421,7 +421,7 @@ export function getDefinitions(config: ChainForkConfig): RouteDefinitions<Endpoi
parseReqSsz: ({body, headers, query}) => {
const forkName = toForkName(fromHeaders(headers, MetaHeader.Version));
return {
signedBlockOrContents: isForkBlobs(forkName)
signedBlockOrContents: isForkPostDeneb(forkName)
? sszTypesFor(forkName).SignedBlockContents.deserialize(body)
: ssz[forkName].SignedBeaconBlock.deserialize(body),
broadcastValidation: query.broadcast_validation as BroadcastValidation,
Expand All @@ -445,7 +445,7 @@ export function getDefinitions(config: ChainForkConfig): RouteDefinitions<Endpoi
writeReqJson: ({signedBlindedBlock}) => {
const fork = config.getForkName(signedBlindedBlock.message.slot);
return {
body: getExecutionForkTypes(fork).SignedBlindedBeaconBlock.toJson(signedBlindedBlock),
body: getPostBellatrixForkTypes(fork).SignedBlindedBeaconBlock.toJson(signedBlindedBlock),
headers: {
[MetaHeader.Version]: fork,
},
Expand All @@ -463,13 +463,13 @@ export function getDefinitions(config: ChainForkConfig): RouteDefinitions<Endpoi
}

return {
signedBlindedBlock: getExecutionForkTypes(fork).SignedBlindedBeaconBlock.fromJson(body),
signedBlindedBlock: getPostBellatrixForkTypes(fork).SignedBlindedBeaconBlock.fromJson(body),
};
},
writeReqSsz: ({signedBlindedBlock}) => {
const fork = config.getForkName(signedBlindedBlock.message.slot);
return {
body: getExecutionForkTypes(fork).SignedBlindedBeaconBlock.serialize(signedBlindedBlock),
body: getPostBellatrixForkTypes(fork).SignedBlindedBeaconBlock.serialize(signedBlindedBlock),
headers: {
[MetaHeader.Version]: fork,
},
Expand All @@ -478,7 +478,7 @@ export function getDefinitions(config: ChainForkConfig): RouteDefinitions<Endpoi
parseReqSsz: ({body, headers}) => {
const fork = toForkName(fromHeaders(headers, MetaHeader.Version));
return {
signedBlindedBlock: getExecutionForkTypes(fork).SignedBlindedBeaconBlock.deserialize(body),
signedBlindedBlock: getPostBellatrixForkTypes(fork).SignedBlindedBeaconBlock.deserialize(body),
};
},
schema: {
Expand All @@ -498,7 +498,7 @@ export function getDefinitions(config: ChainForkConfig): RouteDefinitions<Endpoi
writeReqJson: ({signedBlindedBlock, broadcastValidation}) => {
const fork = config.getForkName(signedBlindedBlock.message.slot);
return {
body: getExecutionForkTypes(fork).SignedBlindedBeaconBlock.toJson(signedBlindedBlock),
body: getPostBellatrixForkTypes(fork).SignedBlindedBeaconBlock.toJson(signedBlindedBlock),
headers: {
[MetaHeader.Version]: fork,
},
Expand All @@ -508,14 +508,14 @@ export function getDefinitions(config: ChainForkConfig): RouteDefinitions<Endpoi
parseReqJson: ({body, headers, query}) => {
const fork = toForkName(fromHeaders(headers, MetaHeader.Version));
return {
signedBlindedBlock: getExecutionForkTypes(fork).SignedBlindedBeaconBlock.fromJson(body),
signedBlindedBlock: getPostBellatrixForkTypes(fork).SignedBlindedBeaconBlock.fromJson(body),
broadcastValidation: query.broadcast_validation as BroadcastValidation,
};
},
writeReqSsz: ({signedBlindedBlock, broadcastValidation}) => {
const fork = config.getForkName(signedBlindedBlock.message.slot);
return {
body: getExecutionForkTypes(fork).SignedBlindedBeaconBlock.serialize(signedBlindedBlock),
body: getPostBellatrixForkTypes(fork).SignedBlindedBeaconBlock.serialize(signedBlindedBlock),
headers: {
[MetaHeader.Version]: fork,
},
Expand All @@ -525,7 +525,7 @@ export function getDefinitions(config: ChainForkConfig): RouteDefinitions<Endpoi
parseReqSsz: ({body, headers, query}) => {
const fork = toForkName(fromHeaders(headers, MetaHeader.Version));
return {
signedBlindedBlock: getExecutionForkTypes(fork).SignedBlindedBeaconBlock.deserialize(body),
signedBlindedBlock: getPostBellatrixForkTypes(fork).SignedBlindedBeaconBlock.deserialize(body),
broadcastValidation: query.broadcast_validation as BroadcastValidation,
};
},
Expand Down
8 changes: 4 additions & 4 deletions packages/api/src/beacon/routes/events.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import {
} from "@lodestar/types";

import {EmptyMeta, EmptyResponseCodec, EmptyResponseData} from "../../utils/codecs.js";
import {getExecutionForkTypes, getLightClientForkTypes} from "../../utils/fork.js";
import {getPostAltairForkTypes, getPostBellatrixForkTypes} from "../../utils/fork.js";
import {Endpoint, RouteDefinitions, Schema} from "../../utils/index.js";
import {VersionType} from "../../utils/metadata.js";

Expand Down Expand Up @@ -296,14 +296,14 @@ export function getTypeByEvent(config: ChainForkConfig): {[K in EventType]: Type
),

[EventType.contributionAndProof]: ssz.altair.SignedContributionAndProof,
[EventType.payloadAttributes]: WithVersion((fork) => getExecutionForkTypes(fork).SSEPayloadAttributes),
[EventType.payloadAttributes]: WithVersion((fork) => getPostBellatrixForkTypes(fork).SSEPayloadAttributes),
[EventType.blobSidecar]: blobSidecarSSE,

[EventType.lightClientOptimisticUpdate]: WithVersion(
(fork) => getLightClientForkTypes(fork).LightClientOptimisticUpdate
(fork) => getPostAltairForkTypes(fork).LightClientOptimisticUpdate
),
[EventType.lightClientFinalityUpdate]: WithVersion(
(fork) => getLightClientForkTypes(fork).LightClientFinalityUpdate
(fork) => getPostAltairForkTypes(fork).LightClientFinalityUpdate
),
};
}
Expand Down
16 changes: 8 additions & 8 deletions packages/api/src/beacon/routes/lightclient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import {
EmptyRequestCodec,
WithVersion,
} from "../../utils/codecs.js";
import {getLightClientForkTypes, toForkName} from "../../utils/fork.js";
import {getPostAltairForkTypes, toForkName} from "../../utils/fork.js";
import {Endpoint, RouteDefinitions, Schema} from "../../utils/index.js";
import {MetaHeader, VersionCodec, VersionMeta} from "../../utils/metadata.js";

Expand Down Expand Up @@ -117,7 +117,7 @@ export function getDefinitions(config: ChainForkConfig): RouteDefinitions<Endpoi
toJson: (data, meta) => {
const json: unknown[] = [];
for (const [i, update] of data.entries()) {
json.push(getLightClientForkTypes(meta.versions[i]).LightClientUpdate.toJson(update));
json.push(getPostAltairForkTypes(meta.versions[i]).LightClientUpdate.toJson(update));
}
return json;
},
Expand All @@ -126,7 +126,7 @@ export function getDefinitions(config: ChainForkConfig): RouteDefinitions<Endpoi
const value: LightClientUpdate[] = [];
for (let i = 0; i < updates.length; i++) {
const version = meta.versions[i];
value.push(getLightClientForkTypes(version).LightClientUpdate.fromJson(updates[i]));
value.push(getPostAltairForkTypes(version).LightClientUpdate.fromJson(updates[i]));
}
return value;
},
Expand All @@ -135,7 +135,7 @@ export function getDefinitions(config: ChainForkConfig): RouteDefinitions<Endpoi
for (const [i, update] of data.entries()) {
const version = meta.versions[i];
const forkDigest = cachedBeaconConfig().forkName2ForkDigest(version);
const serialized = getLightClientForkTypes(version).LightClientUpdate.serialize(update);
const serialized = getPostAltairForkTypes(version).LightClientUpdate.serialize(update);
const length = ssz.UintNum64.serialize(4 + serialized.length);
chunks.push(length, forkDigest, serialized);
}
Expand All @@ -149,7 +149,7 @@ export function getDefinitions(config: ChainForkConfig): RouteDefinitions<Endpoi
const forkDigest = ssz.ForkDigest.deserialize(data.subarray(offset + 8, offset + 12));
const version = cachedBeaconConfig().forkDigest2ForkName(forkDigest);
updates.push(
getLightClientForkTypes(version).LightClientUpdate.deserialize(
getPostAltairForkTypes(version).LightClientUpdate.deserialize(
data.subarray(offset + 12, offset + 8 + length)
)
);
Expand Down Expand Up @@ -198,7 +198,7 @@ export function getDefinitions(config: ChainForkConfig): RouteDefinitions<Endpoi
method: "GET",
req: EmptyRequestCodec,
resp: {
data: WithVersion((fork) => getLightClientForkTypes(fork).LightClientOptimisticUpdate),
data: WithVersion((fork) => getPostAltairForkTypes(fork).LightClientOptimisticUpdate),
meta: VersionCodec,
},
},
Expand All @@ -207,7 +207,7 @@ export function getDefinitions(config: ChainForkConfig): RouteDefinitions<Endpoi
method: "GET",
req: EmptyRequestCodec,
resp: {
data: WithVersion((fork) => getLightClientForkTypes(fork).LightClientFinalityUpdate),
data: WithVersion((fork) => getPostAltairForkTypes(fork).LightClientFinalityUpdate),
meta: VersionCodec,
},
},
Expand All @@ -220,7 +220,7 @@ export function getDefinitions(config: ChainForkConfig): RouteDefinitions<Endpoi
schema: {params: {block_root: Schema.StringRequired}},
},
resp: {
data: WithVersion((fork) => getLightClientForkTypes(fork).LightClientBootstrap),
data: WithVersion((fork) => getPostAltairForkTypes(fork).LightClientBootstrap),
meta: VersionCodec,
},
},
Expand Down
14 changes: 8 additions & 6 deletions packages/api/src/beacon/routes/validator.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {ContainerType, Type, ValueOf} from "@chainsafe/ssz";
import {ChainForkConfig} from "@lodestar/config";
import {isForkBlobs, isForkPostElectra} from "@lodestar/params";
import {isForkPostDeneb, isForkPostElectra} from "@lodestar/params";
import {
Attestation,
BLSSignature,
Expand Down Expand Up @@ -30,7 +30,7 @@ import {
WithMeta,
WithVersion,
} from "../../utils/codecs.js";
import {getExecutionForkTypes, toForkName} from "../../utils/fork.js";
import {getPostBellatrixForkTypes, toForkName} from "../../utils/fork.js";
import {fromHeaders} from "../../utils/headers.js";
import {Endpoint, RouteDefinitions, Schema} from "../../utils/index.js";
import {
Expand Down Expand Up @@ -652,7 +652,9 @@ export function getDefinitions(config: ChainForkConfig): RouteDefinitions<Endpoi
resp: {
data: WithVersion(
(fork) =>
(isForkBlobs(fork) ? sszTypesFor(fork).BlockContents : ssz[fork].BeaconBlock) as Type<BeaconBlockOrContents>
(isForkPostDeneb(fork)
? sszTypesFor(fork).BlockContents
: ssz[fork].BeaconBlock) as Type<BeaconBlockOrContents>
),
meta: VersionCodec,
},
Expand Down Expand Up @@ -713,8 +715,8 @@ export function getDefinitions(config: ChainForkConfig): RouteDefinitions<Endpoi
data: WithMeta(
({version, executionPayloadBlinded}) =>
(executionPayloadBlinded
? getExecutionForkTypes(version).BlindedBeaconBlock
: isForkBlobs(version)
? getPostBellatrixForkTypes(version).BlindedBeaconBlock
: isForkPostDeneb(version)
? sszTypesFor(version).BlockContents
: ssz[version].BeaconBlock) as Type<BeaconBlockOrContents | BlindedBeaconBlock>
),
Expand Down Expand Up @@ -781,7 +783,7 @@ export function getDefinitions(config: ChainForkConfig): RouteDefinitions<Endpoi
},
},
resp: {
data: WithVersion((fork) => getExecutionForkTypes(fork).BlindedBeaconBlock),
data: WithVersion((fork) => getPostBellatrixForkTypes(fork).BlindedBeaconBlock),
meta: VersionCodec,
},
},
Expand Down
Loading

0 comments on commit 7347056

Please sign in to comment.