Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
4b3af00
feat: add heze fork boilerplate with EIP-7805 inclusion list types
ensi321 Jun 11, 2026
704a0cf
chore: order heze params after gloas and validate heze specrefs/config
ensi321 Jun 11, 2026
bd9dee2
chore: order hezeForkRelevant after gloas in validator spec params
ensi321 Jun 11, 2026
5de9a2e
chore: validate heze container specrefs
ensi321 Jun 11, 2026
e44ec09
fix: expose heze DOMAIN_INCLUSION_LIST_COMMITTEE and update forkName …
ensi321 Jun 11, 2026
9f70a38
Merge branch 'unstable' into nc/heze-boilerplate
ensi321 Jun 15, 2026
48a8c88
Merge branch 'unstable' into nc/heze-boilerplate
nflaig Jun 21, 2026
0bfc120
fix: route heze bid gossip and SSE payload attributes through heze ssz
ensi321 Jun 22, 2026
9add890
Merge branch 'unstable' into nc/heze-boilerplate
ensi321 Jul 7, 2026
9234c5f
Merge branch 'unstable' into nc/heze-boilerplate
nflaig Jul 8, 2026
bdafb91
fix: remove inclusion_list_bits from heze ExecutionPayloadBid
ensi321 Jul 9, 2026
a61b7b8
Revert "fix: remove inclusion_list_bits from heze ExecutionPayloadBid"
ensi321 Jul 9, 2026
9dbac30
refactor: address heze boilerplate review comments
ensi321 Jul 9, 2026
6e2fcca
Merge branch 'unstable' into nc/heze-boilerplate
ensi321 Jul 25, 2026
bc973a2
feat: update heze definitions to consensus-specs v1.7.0-alpha.12
ensi321 Jul 25, 2026
aa4505c
test: skip eip8148 fork in spec test iterator
ensi321 Jul 25, 2026
fdc6518
test: skip broken eip8148 fork vector under heze/fork
ensi321 Jul 25, 2026
eed31fb
Merge remote-tracking branch 'origin/unstable' into nc/heze-boilerplate
ensi321 Jul 28, 2026
4a80319
feat: add heze BlockContents type
ensi321 Jul 28, 2026
7225740
fix: use heze bid size limit for execution_payload_bid gossip
ensi321 Jul 28, 2026
b2b0fa2
fix: set inclusion list bits on heze self-build bid
ensi321 Jul 28, 2026
814b468
Merge remote-tracking branch 'origin/unstable' into nc/heze-boilerplate
ensi321 Aug 4, 2026
350d13c
feat: update heze definitions to consensus-specs v1.7.0-alpha.13
ensi321 Aug 4, 2026
b705a38
update ethspecify
lodekeeper Aug 4, 2026
a43ac9f
test: skip slow gloas/heze historical_accumulator sanity slots
ensi321 Aug 5, 2026
d3c6af4
refactor: address heze review feedback on bid types
ensi321 Aug 5, 2026
aac3f88
refactor: drop spec reference comments from heze ssz types
ensi321 Aug 5, 2026
d5bc30b
review
nflaig Aug 5, 2026
d388ac1
remove type casts
nflaig Aug 5, 2026
27d2b65
Merge branch 'unstable' into nc/heze-boilerplate
nflaig Aug 5, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions packages/beacon-node/src/api/impl/config/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import {
DOMAIN_BUILDER_DEPOSIT,
DOMAIN_CONTRIBUTION_AND_PROOF,
DOMAIN_DEPOSIT,
DOMAIN_INCLUSION_LIST_COMMITTEE,
DOMAIN_PROPOSER_PREFERENCES,
DOMAIN_PTC_ATTESTER,
DOMAIN_RANDAO,
Expand Down Expand Up @@ -150,6 +151,9 @@ export const specConstants = {
DOMAIN_BUILDER_DEPOSIT,
BUILDER_DEPOSIT_REQUEST_TYPE: toHexByte(BUILDER_DEPOSIT_REQUEST_TYPE),
BUILDER_EXIT_REQUEST_TYPE: toHexByte(BUILDER_EXIT_REQUEST_TYPE),

// heze
DOMAIN_INCLUSION_LIST_COMMITTEE,
};

/** Convert single-byte numbers to hex strings for API spec compliance */
Expand Down
12 changes: 12 additions & 0 deletions packages/beacon-node/src/chain/produceBlock/produceBlockBody.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import {BitArray} from "@chainsafe/ssz";
import {ChainForkConfig} from "@lodestar/config";
import {IForkChoice, ProtoBlock, getSafeExecutionBlockHash} from "@lodestar/fork-choice";
import {
Expand All @@ -10,6 +11,7 @@ import {
ForkPostGloas,
ForkPreGloas,
ForkSeq,
INCLUSION_LIST_COMMITTEE_SIZE,
isForkPostAltair,
isForkPostBellatrix,
isForkPostGloas,
Expand Down Expand Up @@ -49,6 +51,7 @@ import {
electra,
fulu,
gloas,
heze,
ssz,
} from "@lodestar/types";
import {GWEI_TO_WEI, Logger, byteArrayEquals, fromHex, sleep, toHex, toPubkeyHex, toRootHex} from "@lodestar/utils";
Expand Down Expand Up @@ -353,6 +356,10 @@ export async function produceBlockBody<T extends BlockType>(
blobKzgCommitments: blobsBundle.commitments,
executionRequestsRoot: ssz.gloas.ExecutionRequests.hashTreeRoot(executionRequests as gloas.ExecutionRequests),
};
if (ForkSeq[fork] >= ForkSeq.heze) {
// TODO HEZE: populate from inclusion list pool once IL aggregation is wired up.
(bid as heze.ExecutionPayloadBid).inclusionListBits = BitArray.fromBitLen(INCLUSION_LIST_COMMITTEE_SIZE);
}
const signedBid: gloas.SignedExecutionPayloadBid = {
message: bid,
signature: G2_POINT_AT_INFINITY,
Expand Down Expand Up @@ -927,6 +934,11 @@ function preparePayloadAttributes(
);
}

if (ForkSeq[fork] >= ForkSeq.heze) {
// TODO HEZE: populate from inclusion list pool once IL aggregation is wired up.
(payloadAttributes as heze.SSEPayloadAttributes["payloadAttributes"]).inclusionListTransactions = [];
}

return payloadAttributes;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -346,7 +346,7 @@ async function validateExecutionPayloadBid(
// [REJECT] `signed_execution_payload_bid.signature` is valid with respect to the `bid.builder_index`.
const signatureSet = createSingleSignatureSetFromComponents(
PublicKey.fromBytes(builder.pubkey),
getExecutionPayloadBidSigningRoot(chain.config, state.slot, bid),
getExecutionPayloadBidSigningRoot(chain.config, bid),
signedExecutionPayloadBid.signature
);

Expand Down
6 changes: 4 additions & 2 deletions packages/beacon-node/src/network/gossip/topic.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,13 @@ import {
MAX_DATA_COLUMN_SIDECAR_SIZE,
MAX_SIGNED_AGGREGATE_AND_PROOF_SIZE,
MAX_SIGNED_EXECUTION_PAYLOAD_BID_SIZE,
MAX_SIGNED_EXECUTION_PAYLOAD_BID_SIZE_HEZE,
SYNC_COMMITTEE_SUBNET_COUNT,
isForkPostAltair,
isForkPostElectra,
isForkPostFulu,
isForkPostGloas,
isForkPostHeze,
} from "@lodestar/params";
import {Attestation, SingleAttestation, ssz, sszTypesFor} from "@lodestar/types";
import {GossipAction, GossipActionError, GossipErrorCode} from "../../chain/errors/gossipValidation.js";
Expand Down Expand Up @@ -130,7 +132,7 @@ export function getGossipSSZType(topic: GossipTopic) {
case GossipType.payload_attestation_message:
return ssz.gloas.PayloadAttestationMessage;
case GossipType.execution_payload_bid:
return ssz.gloas.SignedExecutionPayloadBid;
return isForkPostGloas(fork) ? sszTypesFor(fork).SignedExecutionPayloadBid : ssz.gloas.SignedExecutionPayloadBid;
Comment thread
ensi321 marked this conversation as resolved.
case GossipType.proposer_preferences:
return ssz.gloas.SignedProposerPreferences;
}
Expand All @@ -154,7 +156,7 @@ export function getGossipSSZMaxSize(topic: GossipTopic, maxPayloadSize: number,
case GossipType.execution_payload:
return maxPayloadSize;
case GossipType.execution_payload_bid:
return MAX_SIGNED_EXECUTION_PAYLOAD_BID_SIZE;
return isForkPostHeze(fork) ? MAX_SIGNED_EXECUTION_PAYLOAD_BID_SIZE_HEZE : MAX_SIGNED_EXECUTION_PAYLOAD_BID_SIZE;
default:
return (sszType ?? getGossipSSZType(topic)).maxSize;
}
Expand Down
3 changes: 3 additions & 0 deletions packages/beacon-node/test/spec/presets/fork.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {
CachedBeaconStateDeneb,
CachedBeaconStateElectra,
CachedBeaconStateFulu,
CachedBeaconStateGloas,
CachedBeaconStatePhase0,
} from "@lodestar/state-transition";
import * as slotFns from "@lodestar/state-transition/slot";
Expand Down Expand Up @@ -44,6 +45,8 @@ const fork: TestRunnerFn<ForkStateCase, BeaconStateAllForks> = (forkNext) => {
return slotFns.upgradeStateToFulu(preState as CachedBeaconStateElectra);
case ForkName.gloas:
return slotFns.upgradeStateToGloas(preState as CachedBeaconStateFulu);
case ForkName.heze:
return slotFns.upgradeStateToHeze(preState as CachedBeaconStateGloas);
}
},
options: {
Expand Down
6 changes: 4 additions & 2 deletions packages/beacon-node/test/spec/presets/operations.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import path from "node:path";
import {getConfig} from "@lodestar/config/test-utils";
import {ACTIVE_PRESET, ForkName, ForkSeq} from "@lodestar/params";
import {ACTIVE_PRESET, ForkName, ForkSeq, isForkPostGloas} from "@lodestar/params";
import {InputType} from "@lodestar/spec-test-util";
import {
BeaconStateAllForks,
Expand Down Expand Up @@ -192,7 +192,9 @@ const operations: TestRunnerFn<OperationsTestCase, BeaconStateAllForks> = (fork,
deposit_request: ssz.electra.DepositRequest,
consolidation_request: ssz.electra.ConsolidationRequest,
payload_attestation: ssz.gloas.PayloadAttestation,
execution_payload_bid: ssz.gloas.SignedExecutionPayloadBid,
execution_payload_bid: isForkPostGloas(fork)
? sszTypesFor(fork).SignedExecutionPayloadBid
: ssz.gloas.SignedExecutionPayloadBid,
builder_deposit_request: ssz.gloas.BuilderDepositRequest,
builder_exit_request: ssz.gloas.BuilderExitRequest,
},
Expand Down
11 changes: 11 additions & 0 deletions packages/beacon-node/test/spec/presets/transition.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,17 @@ function getTransitionConfig(fork: ForkName, forkEpoch: number): Partial<ChainCo
FULU_FORK_EPOCH: 0,
GLOAS_FORK_EPOCH: forkEpoch,
};
case ForkName.heze:
return {
ALTAIR_FORK_EPOCH: 0,
BELLATRIX_FORK_EPOCH: 0,
CAPELLA_FORK_EPOCH: 0,
DENEB_FORK_EPOCH: 0,
ELECTRA_FORK_EPOCH: 0,
FULU_FORK_EPOCH: 0,
GLOAS_FORK_EPOCH: 0,
HEZE_FORK_EPOCH: forkEpoch,
};
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -888,7 +888,7 @@ export const forkChoiceTestRunner =
shouldSkip: (_testcase, name, _index) =>
name.includes("invalid_incorrect_proof") ||
// TODO GLOAS: These tests will be unskipped by https://github.com/ChainSafe/lodestar/pull/9233
(name.includes("gloas") &&
((name.includes("gloas") || name.includes("heze")) &&
(name.includes("simple_attempted_reorg_without_enough_ffg_votes") ||
name.includes("include_votes_another_empty_chain_with_enough_ffg_votes_current_epoch") ||
name.includes("include_votes_another_empty_chain_with_enough_ffg_votes_previous_epoch") ||
Expand Down
16 changes: 15 additions & 1 deletion packages/beacon-node/test/spec/utils/specTestIterator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ const coveredTestRunners = [
// ],
// ```
export const defaultSkipOpts: SkipOpts = {
skippedForks: ["eip7805", "heze"],
skippedForks: ["eip8148"],
skippedTestSuites: [
// Merge transition tests are skipped because we no longer support performing the merge transition.
// All networks have already completed the merge, so this code path is no longer needed.
Expand All @@ -78,27 +78,41 @@ export const defaultSkipOpts: SkipOpts = {
// cell level DAS is ready
/^fulu\/ssz_static\/PartialDataColumn(GroupID|Header|PartsMetadata|Sidecar)\/.*$/,
/^gloas\/ssz_static\/PartialDataColumn(GroupID|PartsMetadata|Sidecar)\/.*$/,
/^heze\/ssz_static\/PartialDataColumn(GroupID|PartsMetadata|Sidecar)\/.*$/,
// TODO-GLOAS: re-enable after Gloas light-client sync deserializes updates by fork digest.
/^gloas\/light_client\/sync\/.*/,
/^heze\/light_client\/sync\/.*/,
// TODO-GLOAS: re-enable after on_payload_attestation_message (PTC) fork choice is implemented.
// New test suite added in v1.7.0-alpha.8 (consensus-specs #5206); gloas PTC fork choice
// handling is not yet implemented in Lodestar.
/^gloas\/fork_choice\/on_payload_attestation_message\/.*$/,
/^heze\/fork_choice\/on_payload_attestation_message\/.*$/,
// TODO-GLOAS: re-enable after the gloas should_apply_proposer_boost rule is implemented.
// New test suite added in v1.7.0-alpha.13 (consensus-specs #5441); Lodestar still applies
// the pre-gloas proposer boost, so the head weight differs by the boost amount.
/^gloas\/fork_choice\/should_apply_proposer_boost\/.*$/,
/^heze\/fork_choice\/should_apply_proposer_boost\/.*$/,
// TODO GLOAS: enable this after gloas fork choice is ready
/^gloas\/fork_choice_compliance\/.*/,
/^heze\/fork_choice_compliance\/.*/,
// TODO-HEZE: re-enable after on_inclusion_list (FOCIL) fork choice is implemented.
/^heze\/fork_choice\/on_inclusion_list\/.*$/,
],
skippedTests: [
// TODO-GLOAS: re-enable after gloas light client is implemented
/\/gloas_fork$/,
/\/heze_fork$/,
// TODO GLOAS: Proposer-boost dependent-root gate uses stale cached head across epoch-boundary ticks;
// boost wrongly denied. Fails identically on every pre-gloas fork.
// Enable this after https://github.com/ChainSafe/lodestar/issues/9666 is resolved
// The case name embeds the generation seed, so it changes whenever comptests are regenerated.
/fork_choice_compliance\/block_tree_test\/pyspec_tests\/block_tree_test_17_381675768_1$/,
// TODO GLOAS: gloas/heze take ~23-24s on the mainnet preset (~7.5x pre-gloas) because every
// post-gloas slot writes into the SLOTS_PER_HISTORICAL_ROOT-wide executionPayloadAvailability
// bitvector, and this suite steps 8192 slots. That is 76-81% of the 30s sanity/slots timeout,
// so skip rather than raise the timeout and hide the regression.
// Enable this after https://github.com/ChainSafe/lodestar/issues/9771 is resolved
/^(gloas|heze)\/sanity\/slots\/pyspec_tests\/historical_accumulator$/,
],
// TODO GLOAS: Investigate why networking tests are failing since alpha.5
skippedRunners: ["networking"],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,15 @@ const DENEB_FORK_EPOCH = 1;
const ELECTRA_FORK_EPOCH = 2;
const FULU_FORK_EPOCH = 3;
const GLOAS_FORK_EPOCH = 4;
const HEZE_FORK_EPOCH = 5;
const config = createChainForkConfig({
...defaultChainConfig,
CAPELLA_FORK_EPOCH,
DENEB_FORK_EPOCH,
ELECTRA_FORK_EPOCH,
FULU_FORK_EPOCH,
GLOAS_FORK_EPOCH,
HEZE_FORK_EPOCH,
});

const slots: Record<ForkPostCapella, number> = {
Expand All @@ -33,6 +35,7 @@ const slots: Record<ForkPostCapella, number> = {
electra: computeStartSlotAtEpoch(ELECTRA_FORK_EPOCH),
fulu: computeStartSlotAtEpoch(FULU_FORK_EPOCH),
gloas: computeStartSlotAtEpoch(GLOAS_FORK_EPOCH),
heze: computeStartSlotAtEpoch(HEZE_FORK_EPOCH),
};

type BlockTestSet<F extends ForkPostCapella> = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ describe("UpgradeLightClientHeader", () => {
ELECTRA_FORK_EPOCH: 5,
FULU_FORK_EPOCH: 6,
GLOAS_FORK_EPOCH: 7,
HEZE_FORK_EPOCH: 8,
});

const genesisValidatorsRoot = Buffer.alloc(32, 0xaa);
Expand All @@ -33,6 +34,7 @@ describe("UpgradeLightClientHeader", () => {
electra: ssz.deneb.LightClientHeader.defaultValue(),
fulu: ssz.deneb.LightClientHeader.defaultValue(),
gloas: ssz.gloas.LightClientHeader.defaultValue(),
heze: ssz.gloas.LightClientHeader.defaultValue(),
};

testSlots = {
Expand All @@ -44,6 +46,7 @@ describe("UpgradeLightClientHeader", () => {
electra: 164,
fulu: 216,
gloas: 235,
heze: 260,
};
});

Expand All @@ -57,7 +60,7 @@ describe("UpgradeLightClientHeader", () => {
lcHeaderByFork[toFork].beacon.slot = testSlots[fromFork];

const expectedHeader =
toFork === ForkName.gloas
ForkSeq[toFork] >= ForkSeq.gloas && ForkSeq[fromFork] < ForkSeq.gloas
? getExpectedGloasHeader(fromFork, lcHeaderByFork[fromFork])
: lcHeaderByFork[toFork];
const updatedHeader = upgradeLightClientHeader(config, toFork, lcHeaderByFork[fromFork]);
Expand Down
13 changes: 12 additions & 1 deletion packages/beacon-node/test/unit/network/fork.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ function getForkConfig({
electra,
fulu,
gloas,
heze,
}: {
phase0: number;
altair: number;
Expand All @@ -21,6 +22,7 @@ function getForkConfig({
electra: number;
fulu: number;
gloas: number;
heze: number;
}): BeaconConfig {
const forks: Record<ForkName, ForkInfo> = {
phase0: {
Expand Down Expand Up @@ -87,6 +89,14 @@ function getForkConfig({
prevVersion: Buffer.from([0, 0, 0, 6]),
prevForkName: ForkName.fulu,
},
heze: {
name: ForkName.heze,
seq: ForkSeq.heze,
epoch: heze,
version: Buffer.from([0, 0, 0, 8]),
prevVersion: Buffer.from([0, 0, 0, 7]),
prevForkName: ForkName.gloas,
},
};
const forksAscendingEpochOrder = Object.values(forks);
const forksDescendingEpochOrder = Object.values(forks).reverse();
Expand Down Expand Up @@ -171,9 +181,10 @@ for (const testScenario of testScenarios) {
const electra = Infinity;
const fulu = Infinity;
const gloas = Infinity;
const heze = Infinity;

describe(`network / fork: phase0: ${phase0}, altair: ${altair}, bellatrix: ${bellatrix} capella: ${capella}`, () => {
const forkConfig = getForkConfig({phase0, altair, bellatrix, capella, deneb, electra, fulu, gloas});
const forkConfig = getForkConfig({phase0, altair, bellatrix, capella, deneb, electra, fulu, gloas, heze});
const forks = forkConfig.forks;
for (const testCase of testCases) {
const {epoch, currentFork, nextFork, activeForks} = testCase;
Expand Down
9 changes: 9 additions & 0 deletions packages/beacon-node/test/unit/network/gossip/topic.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {
MAX_DATA_COLUMN_SIDECAR_SIZE,
MAX_SIGNED_AGGREGATE_AND_PROOF_SIZE,
MAX_SIGNED_EXECUTION_PAYLOAD_BID_SIZE,
MAX_SIGNED_EXECUTION_PAYLOAD_BID_SIZE_HEZE,
ZERO_HASH,
} from "@lodestar/params";
import {DataTransformSnappy} from "../../../../src/network/gossip/encoding.js";
Expand Down Expand Up @@ -281,6 +282,14 @@ describe("network / gossip / topic", () => {
});
});

it("should use the Heze bid size limit post-Heze", () => {
const boundary = {fork: ForkName.heze, epoch: config.HEZE_FORK_EPOCH};

expect(
getGossipSSZMaxSize({type: GossipType.execution_payload_bid, boundary, encoding}, config.MAX_PAYLOAD_SIZE)
).toBe(MAX_SIGNED_EXECUTION_PAYLOAD_BID_SIZE_HEZE);
});

it("should cap Gloas progressive gossip objects below their theoretical SSZ max", () => {
const boundary = {fork: ForkName.gloas, epoch: config.GLOAS_FORK_EPOCH};

Expand Down
7 changes: 5 additions & 2 deletions packages/beacon-node/test/utils/blocksAndData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import {
isForkPostGloas,
} from "@lodestar/params";
import {computeStartSlotAtEpoch, signedBlockToSignedHeader} from "@lodestar/state-transition";
import {BeaconBlockBody, SignedBeaconBlock, Slot, deneb, fulu, gloas, ssz} from "@lodestar/types";
import {BeaconBlockBody, SignedBeaconBlock, Slot, deneb, fulu, gloas, ssz, sszTypesFor} from "@lodestar/types";
import {toRootHex} from "@lodestar/utils";
import {VersionedHashes} from "../../src/execution/index.js";
import {computeNodeIdFromPrivateKey} from "../../src/network/subnets/index.js";
Expand All @@ -36,13 +36,15 @@ export const DENEB_FORK_EPOCH = 10;
export const ELECTRA_FORK_EPOCH = 20;
export const FULU_FORK_EPOCH = 30;
export const GLOAS_FORK_EPOCH = 40;
export const HEZE_FORK_EPOCH = 50;
export const config = createChainForkConfig({
...defaultChainConfig,
CAPELLA_FORK_EPOCH,
DENEB_FORK_EPOCH,
ELECTRA_FORK_EPOCH,
FULU_FORK_EPOCH,
GLOAS_FORK_EPOCH,
HEZE_FORK_EPOCH,
});
export const clock = new Clock({
config,
Expand All @@ -60,6 +62,7 @@ export const slots: Record<ForkPostCapella, number> = {
electra: computeStartSlotAtEpoch(ELECTRA_FORK_EPOCH),
fulu: computeStartSlotAtEpoch(FULU_FORK_EPOCH),
gloas: computeStartSlotAtEpoch(GLOAS_FORK_EPOCH),
heze: computeStartSlotAtEpoch(HEZE_FORK_EPOCH),
};

/**
Expand Down Expand Up @@ -183,7 +186,7 @@ function generateColumnSidecars<F extends ForkPostFulu>(
if (isForkPostGloas(forkName)) {
(block.message.body as gloas.BeaconBlockBody).signedExecutionPayloadBid.message.blobKzgCommitments = kzgCommitments;

const beaconBlockRoot = ssz[forkName as ForkPostGloas].BeaconBlock.hashTreeRoot(
const beaconBlockRoot = sszTypesFor(forkName as ForkPostGloas).BeaconBlock.hashTreeRoot(
block.message as SignedBeaconBlock<ForkPostGloas>["message"]
);
columnSidecars = getGloasDataColumnSidecars(
Expand Down
2 changes: 1 addition & 1 deletion packages/builder/src/services/builderSigner.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ export class BuilderSigner {
}

signExecutionPayloadBid(bid: gloas.ExecutionPayloadBid): gloas.SignedExecutionPayloadBid {
const signingRoot = getExecutionPayloadBidSigningRoot(this.config, bid.slot, bid);
const signingRoot = getExecutionPayloadBidSigningRoot(this.config, bid);

return {
message: bid,
Expand Down
Loading
Loading