From 39e9961a4d239d2066ad5b5094aace3bff6a1dbc Mon Sep 17 00:00:00 2001 From: Enrico Del Fante Date: Wed, 18 Sep 2024 18:03:25 +0200 Subject: [PATCH] provide schema registry in schema definitions --- .../tech/pegasys/teku/spec/SpecVersion.java | 75 ++++++++++++++----- .../schemas/AbstractSchemaDefinitions.java | 18 ++++- .../teku/spec/schemas/SchemaDefinitions.java | 3 + .../spec/schemas/SchemaDefinitionsAltair.java | 5 +- .../schemas/SchemaDefinitionsBellatrix.java | 6 +- .../schemas/SchemaDefinitionsCapella.java | 5 +- .../spec/schemas/SchemaDefinitionsDeneb.java | 5 +- .../schemas/SchemaDefinitionsElectra.java | 5 +- .../spec/schemas/SchemaDefinitionsPhase0.java | 5 +- .../pegasys/teku/spec/ForkScheduleTest.java | 30 ++++---- .../pegasys/teku/spec/SpecVersionTest.java | 20 +++-- .../BeaconStateAccessorsElectraTest.java | 2 +- 12 files changed, 125 insertions(+), 54 deletions(-) diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/SpecVersion.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/SpecVersion.java index 029d0b247e8..d62ac4a475c 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/SpecVersion.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/SpecVersion.java @@ -37,6 +37,8 @@ import tech.pegasys.teku.spec.schemas.SchemaDefinitionsDeneb; import tech.pegasys.teku.spec.schemas.SchemaDefinitionsElectra; import tech.pegasys.teku.spec.schemas.SchemaDefinitionsPhase0; +import tech.pegasys.teku.spec.schemas.SchemaRegistry; +import tech.pegasys.teku.spec.schemas.SchemaRegistryBuilder; public class SpecVersion extends DelegatingSpecLogic { private final SpecMilestone milestone; @@ -56,53 +58,90 @@ private SpecVersion( public static Optional create( final SpecMilestone milestone, final SpecConfig specConfig) { + final SchemaRegistryBuilder schemaRegistryBuilder = SchemaRegistryBuilder.create(); return switch (milestone) { - case PHASE0 -> Optional.of(createPhase0(specConfig)); - case ALTAIR -> specConfig.toVersionAltair().map(SpecVersion::createAltair); - case BELLATRIX -> specConfig.toVersionBellatrix().map(SpecVersion::createBellatrix); - case CAPELLA -> specConfig.toVersionCapella().map(SpecVersion::createCapella); - case DENEB -> specConfig.toVersionDeneb().map(SpecVersion::createDeneb); - case ELECTRA -> specConfig.toVersionElectra().map(SpecVersion::createElectra); + case PHASE0 -> Optional.of(createPhase0(specConfig, schemaRegistryBuilder)); + case ALTAIR -> + specConfig + .toVersionAltair() + .map(specConfigAltair -> createAltair(specConfigAltair, schemaRegistryBuilder)); + case BELLATRIX -> + specConfig + .toVersionBellatrix() + .map( + specConfigBellatrix -> + createBellatrix(specConfigBellatrix, schemaRegistryBuilder)); + case CAPELLA -> + specConfig + .toVersionCapella() + .map(specConfigCapella -> createCapella(specConfigCapella, schemaRegistryBuilder)); + case DENEB -> + specConfig + .toVersionDeneb() + .map(specConfigDeneb -> createDeneb(specConfigDeneb, schemaRegistryBuilder)); + case ELECTRA -> + specConfig + .toVersionElectra() + .map(specConfigElectra -> createElectra(specConfigElectra, schemaRegistryBuilder)); }; } - static SpecVersion createPhase0(final SpecConfig specConfig) { - final SchemaDefinitions schemaDefinitions = new SchemaDefinitionsPhase0(specConfig); + static SpecVersion createPhase0( + final SpecConfig specConfig, final SchemaRegistryBuilder schemaRegistryBuilder) { + final SchemaRegistry schemaRegistry = + schemaRegistryBuilder.build(SpecMilestone.PHASE0, specConfig); + final SchemaDefinitions schemaDefinitions = new SchemaDefinitionsPhase0(schemaRegistry); final SpecLogic specLogic = SpecLogicPhase0.create(specConfig, schemaDefinitions, SYSTEM_TIME_PROVIDER); return new SpecVersion(SpecMilestone.PHASE0, specConfig, schemaDefinitions, specLogic); } - static SpecVersion createAltair(final SpecConfigAltair specConfig) { - final SchemaDefinitionsAltair schemaDefinitions = new SchemaDefinitionsAltair(specConfig); + static SpecVersion createAltair( + final SpecConfigAltair specConfig, final SchemaRegistryBuilder schemaRegistryBuilder) { + final SchemaRegistry schemaRegistry = + schemaRegistryBuilder.build(SpecMilestone.ALTAIR, specConfig); + final SchemaDefinitionsAltair schemaDefinitions = new SchemaDefinitionsAltair(schemaRegistry); final SpecLogic specLogic = SpecLogicAltair.create(specConfig, schemaDefinitions, SYSTEM_TIME_PROVIDER); return new SpecVersion(SpecMilestone.ALTAIR, specConfig, schemaDefinitions, specLogic); } - static SpecVersion createBellatrix(final SpecConfigBellatrix specConfig) { - final SchemaDefinitionsBellatrix schemaDefinitions = new SchemaDefinitionsBellatrix(specConfig); + static SpecVersion createBellatrix( + final SpecConfigBellatrix specConfig, final SchemaRegistryBuilder schemaRegistryBuilder) { + final SchemaRegistry schemaRegistry = + schemaRegistryBuilder.build(SpecMilestone.BELLATRIX, specConfig); + final SchemaDefinitionsBellatrix schemaDefinitions = + new SchemaDefinitionsBellatrix(schemaRegistry); final SpecLogic specLogic = SpecLogicBellatrix.create(specConfig, schemaDefinitions, SYSTEM_TIME_PROVIDER); return new SpecVersion(SpecMilestone.BELLATRIX, specConfig, schemaDefinitions, specLogic); } - static SpecVersion createCapella(final SpecConfigCapella specConfig) { - final SchemaDefinitionsCapella schemaDefinitions = new SchemaDefinitionsCapella(specConfig); + static SpecVersion createCapella( + final SpecConfigCapella specConfig, final SchemaRegistryBuilder schemaRegistryBuilder) { + final SchemaRegistry schemaRegistry = + schemaRegistryBuilder.build(SpecMilestone.CAPELLA, specConfig); + final SchemaDefinitionsCapella schemaDefinitions = new SchemaDefinitionsCapella(schemaRegistry); final SpecLogicCapella specLogic = SpecLogicCapella.create(specConfig, schemaDefinitions, SYSTEM_TIME_PROVIDER); return new SpecVersion(SpecMilestone.CAPELLA, specConfig, schemaDefinitions, specLogic); } - static SpecVersion createDeneb(final SpecConfigDeneb specConfig) { - final SchemaDefinitionsDeneb schemaDefinitions = new SchemaDefinitionsDeneb(specConfig); + static SpecVersion createDeneb( + final SpecConfigDeneb specConfig, final SchemaRegistryBuilder schemaRegistryBuilder) { + final SchemaRegistry schemaRegistry = + schemaRegistryBuilder.build(SpecMilestone.DENEB, specConfig); + final SchemaDefinitionsDeneb schemaDefinitions = new SchemaDefinitionsDeneb(schemaRegistry); final SpecLogicDeneb specLogic = SpecLogicDeneb.create(specConfig, schemaDefinitions, SYSTEM_TIME_PROVIDER); return new SpecVersion(SpecMilestone.DENEB, specConfig, schemaDefinitions, specLogic); } - static SpecVersion createElectra(final SpecConfigElectra specConfig) { - final SchemaDefinitionsElectra schemaDefinitions = new SchemaDefinitionsElectra(specConfig); + static SpecVersion createElectra( + final SpecConfigElectra specConfig, final SchemaRegistryBuilder schemaRegistryBuilder) { + final SchemaRegistry schemaRegistry = + schemaRegistryBuilder.build(SpecMilestone.ELECTRA, specConfig); + final SchemaDefinitionsElectra schemaDefinitions = new SchemaDefinitionsElectra(schemaRegistry); final SpecLogicElectra specLogic = SpecLogicElectra.create(specConfig, schemaDefinitions, SYSTEM_TIME_PROVIDER); return new SpecVersion(SpecMilestone.ELECTRA, specConfig, schemaDefinitions, specLogic); diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/AbstractSchemaDefinitions.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/AbstractSchemaDefinitions.java index d2f9551a4d7..eebf171d2bf 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/AbstractSchemaDefinitions.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/AbstractSchemaDefinitions.java @@ -21,6 +21,7 @@ import tech.pegasys.teku.spec.datastructures.state.HistoricalBatch.HistoricalBatchSchema; public abstract class AbstractSchemaDefinitions implements SchemaDefinitions { + protected SchemaRegistry schemaRegistry; final SszBitvectorSchema attnetsENRFieldSchema; final SszBitvectorSchema syncnetsENRFieldSchema = @@ -29,16 +30,25 @@ public abstract class AbstractSchemaDefinitions implements SchemaDefinitions { private final BeaconBlocksByRootRequestMessage.BeaconBlocksByRootRequestMessageSchema beaconBlocksByRootRequestMessageSchema; - public AbstractSchemaDefinitions(final SpecConfig specConfig) { - this.historicalBatchSchema = new HistoricalBatchSchema(specConfig.getSlotsPerHistoricalRoot()); + public AbstractSchemaDefinitions(final SchemaRegistry schemaRegistry) { + this.schemaRegistry = schemaRegistry; + this.historicalBatchSchema = + new HistoricalBatchSchema(schemaRegistry.getSpecConfig().getSlotsPerHistoricalRoot()); this.beaconBlocksByRootRequestMessageSchema = - new BeaconBlocksByRootRequestMessage.BeaconBlocksByRootRequestMessageSchema(specConfig); - this.attnetsENRFieldSchema = SszBitvectorSchema.create(specConfig.getAttestationSubnetCount()); + new BeaconBlocksByRootRequestMessage.BeaconBlocksByRootRequestMessageSchema( + schemaRegistry.getSpecConfig()); + this.attnetsENRFieldSchema = + SszBitvectorSchema.create(schemaRegistry.getSpecConfig().getAttestationSubnetCount()); } abstract long getMaxValidatorPerAttestation(SpecConfig specConfig); + @Override + public SchemaRegistry getSchemaRegistry() { + return schemaRegistry; + } + @Override public SszBitvectorSchema getAttnetsENRFieldSchema() { return attnetsENRFieldSchema; diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitions.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitions.java index f9af34bf087..c2b1eb0a21f 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitions.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitions.java @@ -89,6 +89,9 @@ public interface SchemaDefinitions { @NonSchema BeaconBlockBodyBuilder createBeaconBlockBodyBuilder(); + @NonSchema + SchemaRegistry getSchemaRegistry(); + @NonSchema default Optional toVersionAltair() { return Optional.empty(); diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitionsAltair.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitionsAltair.java index 735fc4d1e2b..608912e7f15 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitionsAltair.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitionsAltair.java @@ -72,8 +72,9 @@ public class SchemaDefinitionsAltair extends AbstractSchemaDefinitions { private final LightClientUpdateSchema lightClientUpdateSchema; private final LightClientUpdateResponseSchema lightClientUpdateResponseSchema; - public SchemaDefinitionsAltair(final SpecConfigAltair specConfig) { - super(specConfig); + public SchemaDefinitionsAltair(final SchemaRegistry schemaRegistry) { + super(schemaRegistry); + final SpecConfigAltair specConfig = SpecConfigAltair.required(schemaRegistry.getSpecConfig()); this.indexedAttestationSchema = new IndexedAttestationPhase0Schema(getMaxValidatorPerAttestation(specConfig)) .castTypeToIndexedAttestationSchema(); diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitionsBellatrix.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitionsBellatrix.java index 29534d8b1f4..f0e53338dea 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitionsBellatrix.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitionsBellatrix.java @@ -52,8 +52,10 @@ public class SchemaDefinitionsBellatrix extends SchemaDefinitionsAltair { private final BuilderBidSchema builderBidSchema; private final SignedBuilderBidSchema signedBuilderBidSchema; - public SchemaDefinitionsBellatrix(final SpecConfigBellatrix specConfig) { - super(specConfig); + public SchemaDefinitionsBellatrix(final SchemaRegistry schemaRegistry) { + super(schemaRegistry); + final SpecConfigBellatrix specConfig = + SpecConfigBellatrix.required(schemaRegistry.getSpecConfig()); final long maxValidatorsPerAttestation = getMaxValidatorPerAttestation(specConfig); this.beaconStateSchema = BeaconStateSchemaBellatrix.create(specConfig); this.executionPayloadHeaderSchema = beaconStateSchema.getLastExecutionPayloadHeaderSchema(); diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitionsCapella.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitionsCapella.java index ce3e9e02041..525fc16928b 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitionsCapella.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitionsCapella.java @@ -70,8 +70,9 @@ public class SchemaDefinitionsCapella extends SchemaDefinitionsBellatrix { private final HistoricalSummary.HistoricalSummarySchema historicalSummarySchema; - public SchemaDefinitionsCapella(final SpecConfigCapella specConfig) { - super(specConfig); + public SchemaDefinitionsCapella(final SchemaRegistry schemaRegistry) { + super(schemaRegistry); + final SpecConfigCapella specConfig = SpecConfigCapella.required(schemaRegistry.getSpecConfig()); this.executionPayloadSchemaCapella = new ExecutionPayloadSchemaCapella(specConfig); this.blsToExecutionChangeSchema = new BlsToExecutionChangeSchema(); this.signedBlsToExecutionChangeSchema = new SignedBlsToExecutionChangeSchema(); diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitionsDeneb.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitionsDeneb.java index 05effc1ed3d..1164a7f86f8 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitionsDeneb.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitionsDeneb.java @@ -82,8 +82,9 @@ public class SchemaDefinitionsDeneb extends SchemaDefinitionsCapella { private final ExecutionPayloadAndBlobsBundleSchema executionPayloadAndBlobsBundleSchema; private final BlobSidecarsByRootRequestMessageSchema blobSidecarsByRootRequestMessageSchema; - public SchemaDefinitionsDeneb(final SpecConfigDeneb specConfig) { - super(specConfig); + public SchemaDefinitionsDeneb(final SchemaRegistry schemaRegistry) { + super(schemaRegistry); + final SpecConfigDeneb specConfig = SpecConfigDeneb.required(schemaRegistry.getSpecConfig()); this.executionPayloadSchemaDeneb = new ExecutionPayloadSchemaDeneb(specConfig); this.beaconStateSchema = BeaconStateSchemaDeneb.create(specConfig); diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitionsElectra.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitionsElectra.java index 4d6ecfd09eb..1b791791b73 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitionsElectra.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitionsElectra.java @@ -107,8 +107,9 @@ public class SchemaDefinitionsElectra extends SchemaDefinitionsDeneb { pendingPartialWithdrawalSchema; private final PendingConsolidation.PendingConsolidationSchema pendingConsolidationSchema; - public SchemaDefinitionsElectra(final SpecConfigElectra specConfig) { - super(specConfig); + public SchemaDefinitionsElectra(final SchemaRegistry schemaRegistry) { + super(schemaRegistry); + final SpecConfigElectra specConfig = SpecConfigElectra.required(schemaRegistry.getSpecConfig()); final long maxValidatorsPerAttestation = getMaxValidatorPerAttestation(specConfig); this.indexedAttestationSchema = diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitionsPhase0.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitionsPhase0.java index 83cb6ceb615..ca9bc3da180 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitionsPhase0.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitionsPhase0.java @@ -52,8 +52,9 @@ public class SchemaDefinitionsPhase0 extends AbstractSchemaDefinitions { private final BeaconBlockSchema beaconBlockSchema; private final SignedBeaconBlockSchema signedBeaconBlockSchema; - public SchemaDefinitionsPhase0(final SpecConfig specConfig) { - super(specConfig); + public SchemaDefinitionsPhase0(final SchemaRegistry schemaRegistry) { + super(schemaRegistry); + final SpecConfig specConfig = schemaRegistry.getSpecConfig(); this.indexedAttestationSchema = new IndexedAttestationPhase0Schema(getMaxValidatorPerAttestation(specConfig)) .castTypeToIndexedAttestationSchema(); diff --git a/ethereum/spec/src/test/java/tech/pegasys/teku/spec/ForkScheduleTest.java b/ethereum/spec/src/test/java/tech/pegasys/teku/spec/ForkScheduleTest.java index 76203ec6c0e..b0fd8a64430 100644 --- a/ethereum/spec/src/test/java/tech/pegasys/teku/spec/ForkScheduleTest.java +++ b/ethereum/spec/src/test/java/tech/pegasys/teku/spec/ForkScheduleTest.java @@ -25,6 +25,7 @@ import tech.pegasys.teku.spec.datastructures.state.Fork; import tech.pegasys.teku.spec.datastructures.util.ForkAndSpecMilestone; import tech.pegasys.teku.spec.networks.Eth2Network; +import tech.pegasys.teku.spec.schemas.SchemaRegistryBuilder; public class ForkScheduleTest { private static final SpecConfig MINIMAL_CONFIG = @@ -57,10 +58,12 @@ public class ForkScheduleTest { TRANSITION_CONFIG.toVersionAltair().orElseThrow().getAltairForkVersion(); static final Bytes4 UNKNOWN_FORK_VERSION = Bytes4.fromHexStringLenient("0xFFFFFFFF"); + static final SchemaRegistryBuilder SCHEMA_REGISTRY_BUILDER = SchemaRegistryBuilder.create(); + @Test public void build_validScheduleWithAltairTransition() { - final SpecVersion phase0 = SpecVersion.createPhase0(TRANSITION_CONFIG); - final SpecVersion altair = SpecVersion.createAltair(TRANSITION_CONFIG); + final SpecVersion phase0 = SpecVersion.createPhase0(TRANSITION_CONFIG, SCHEMA_REGISTRY_BUILDER); + final SpecVersion altair = SpecVersion.createAltair(TRANSITION_CONFIG, SCHEMA_REGISTRY_BUILDER); final ForkSchedule forkSchedule = ForkSchedule.builder().addNextMilestone(phase0).addNextMilestone(altair).build(); @@ -70,8 +73,8 @@ public void build_validScheduleWithAltairTransition() { @Test public void build_validScheduleWithAltairAtGenesis_phase0AndAltairSupplied() { - final SpecVersion phase0 = SpecVersion.createPhase0(ALTAIR_CONFIG); - final SpecVersion altair = SpecVersion.createAltair(ALTAIR_CONFIG); + final SpecVersion phase0 = SpecVersion.createPhase0(ALTAIR_CONFIG, SCHEMA_REGISTRY_BUILDER); + final SpecVersion altair = SpecVersion.createAltair(ALTAIR_CONFIG, SCHEMA_REGISTRY_BUILDER); final ForkSchedule forkSchedule = ForkSchedule.builder().addNextMilestone(phase0).addNextMilestone(altair).build(); @@ -82,7 +85,7 @@ public void build_validScheduleWithAltairAtGenesis_phase0AndAltairSupplied() { @Test public void build_validScheduleWithAltairAtGenesis_onlyAltairSupplied() { - final SpecVersion altair = SpecVersion.createAltair(ALTAIR_CONFIG); + final SpecVersion altair = SpecVersion.createAltair(ALTAIR_CONFIG, SCHEMA_REGISTRY_BUILDER); final ForkSchedule forkSchedule = ForkSchedule.builder().addNextMilestone(altair).build(); @@ -92,7 +95,7 @@ public void build_validScheduleWithAltairAtGenesis_onlyAltairSupplied() { @Test public void build_validPhase0Schedule() { - final SpecVersion phase0 = SpecVersion.createPhase0(PHASE0_CONFIG); + final SpecVersion phase0 = SpecVersion.createPhase0(PHASE0_CONFIG, SCHEMA_REGISTRY_BUILDER); final ForkSchedule forkSchedule = ForkSchedule.builder().addNextMilestone(phase0).build(); @@ -102,7 +105,7 @@ public void build_validPhase0Schedule() { @Test public void builder_milestonesSuppliedOutOfOrder_altairProcessedAtNonZeroSlot() { - final SpecVersion altair = SpecVersion.createAltair(TRANSITION_CONFIG); + final SpecVersion altair = SpecVersion.createAltair(TRANSITION_CONFIG, SCHEMA_REGISTRY_BUILDER); final ForkSchedule.Builder builder = ForkSchedule.builder(); assertThatThrownBy(() -> builder.addNextMilestone(altair)) @@ -112,8 +115,8 @@ public void builder_milestonesSuppliedOutOfOrder_altairProcessedAtNonZeroSlot() @Test public void builder_milestonesSuppliedOutOfOrder_processAltairBeforePhase0() { - final SpecVersion altair = SpecVersion.createAltair(ALTAIR_CONFIG); - final SpecVersion phase0 = SpecVersion.createPhase0(ALTAIR_CONFIG); + final SpecVersion altair = SpecVersion.createAltair(ALTAIR_CONFIG, SCHEMA_REGISTRY_BUILDER); + final SpecVersion phase0 = SpecVersion.createPhase0(ALTAIR_CONFIG, SCHEMA_REGISTRY_BUILDER); final ForkSchedule.Builder builder = ForkSchedule.builder(); builder.addNextMilestone(altair); @@ -132,7 +135,7 @@ public void getSupportedMilestones_withTransition() { @Test public void getSupportedMilestones_onlyAltairConfigured() { - final SpecVersion altair = SpecVersion.createAltair(ALTAIR_CONFIG); + final SpecVersion altair = SpecVersion.createAltair(ALTAIR_CONFIG, SCHEMA_REGISTRY_BUILDER); final ForkSchedule forkSchedule = ForkSchedule.builder().addNextMilestone(altair).build(); @@ -142,7 +145,7 @@ public void getSupportedMilestones_onlyAltairConfigured() { @Test public void getSupportedMilestones_onlyPhase0Configured() { - final SpecVersion phase0 = SpecVersion.createPhase0(PHASE0_CONFIG); + final SpecVersion phase0 = SpecVersion.createPhase0(PHASE0_CONFIG, SCHEMA_REGISTRY_BUILDER); final ForkSchedule forkSchedule = ForkSchedule.builder().addNextMilestone(phase0).build(); @@ -398,10 +401,11 @@ public void getGenesisFork_withTransition() { private ForkSchedule buildForkSchedule(final SpecConfig specConfig) { final ForkSchedule.Builder builder = ForkSchedule.builder(); - builder.addNextMilestone(SpecVersion.createPhase0(specConfig)); + builder.addNextMilestone(SpecVersion.createPhase0(specConfig, SCHEMA_REGISTRY_BUILDER)); specConfig .toVersionAltair() - .ifPresent(a -> builder.addNextMilestone(SpecVersion.createAltair(a))); + .ifPresent( + a -> builder.addNextMilestone(SpecVersion.createAltair(a, SCHEMA_REGISTRY_BUILDER))); return builder.build(); } diff --git a/ethereum/spec/src/test/java/tech/pegasys/teku/spec/SpecVersionTest.java b/ethereum/spec/src/test/java/tech/pegasys/teku/spec/SpecVersionTest.java index 1794982f102..9c13369a4d8 100644 --- a/ethereum/spec/src/test/java/tech/pegasys/teku/spec/SpecVersionTest.java +++ b/ethereum/spec/src/test/java/tech/pegasys/teku/spec/SpecVersionTest.java @@ -24,14 +24,17 @@ import tech.pegasys.teku.spec.config.SpecConfigElectra; import tech.pegasys.teku.spec.config.SpecConfigLoader; import tech.pegasys.teku.spec.networks.Eth2Network; +import tech.pegasys.teku.spec.schemas.SchemaRegistryBuilder; class SpecVersionTest { + private final SchemaRegistryBuilder schemaRegistryBuilder = SchemaRegistryBuilder.create(); private final SpecConfigAltair minimalConfig = SpecConfigAltair.required(SpecConfigLoader.loadConfig(Eth2Network.MINIMAL.configName())); @Test void shouldCreatePhase0Spec() { - final SpecVersion expectedVersion = SpecVersion.createPhase0(minimalConfig); + final SpecVersion expectedVersion = + SpecVersion.createPhase0(minimalConfig, schemaRegistryBuilder); final Optional actualVersion = SpecVersion.create(SpecMilestone.PHASE0, minimalConfig); assertThat(actualVersion).isPresent(); @@ -43,7 +46,8 @@ void shouldCreatePhase0Spec() { @Test void shouldCreateAltairSpec() { final SpecConfigAltair altairSpecConfig = SpecConfigAltair.required(minimalConfig); - final SpecVersion expectedVersion = SpecVersion.createAltair(altairSpecConfig); + final SpecVersion expectedVersion = + SpecVersion.createAltair(altairSpecConfig, schemaRegistryBuilder); final Optional actualVersion = SpecVersion.create(SpecMilestone.ALTAIR, minimalConfig); assertThat(actualVersion).isPresent(); @@ -55,7 +59,8 @@ void shouldCreateAltairSpec() { @Test void shouldCreateBellatrixSpec() { final SpecConfigBellatrix bellatrixSpecConfig = SpecConfigBellatrix.required(minimalConfig); - final SpecVersion expectedVersion = SpecVersion.createBellatrix(bellatrixSpecConfig); + final SpecVersion expectedVersion = + SpecVersion.createBellatrix(bellatrixSpecConfig, schemaRegistryBuilder); final Optional actualVersion = SpecVersion.create(SpecMilestone.BELLATRIX, minimalConfig); assertThat(actualVersion).isPresent(); @@ -67,7 +72,8 @@ void shouldCreateBellatrixSpec() { @Test void shouldCreateCapellaSpec() { final SpecConfigCapella capellaSpecConfig = SpecConfigCapella.required(minimalConfig); - final SpecVersion expectedVersion = SpecVersion.createCapella(capellaSpecConfig); + final SpecVersion expectedVersion = + SpecVersion.createCapella(capellaSpecConfig, schemaRegistryBuilder); final Optional actualVersion = SpecVersion.create(SpecMilestone.CAPELLA, minimalConfig); assertThat(actualVersion).isPresent(); @@ -79,7 +85,8 @@ void shouldCreateCapellaSpec() { @Test void shouldCreateDenebSpec() { final SpecConfigDeneb denebSpecConfig = SpecConfigDeneb.required(minimalConfig); - final SpecVersion expectedVersion = SpecVersion.createDeneb(denebSpecConfig); + final SpecVersion expectedVersion = + SpecVersion.createDeneb(denebSpecConfig, schemaRegistryBuilder); final Optional actualVersion = SpecVersion.create(SpecMilestone.DENEB, minimalConfig); assertThat(actualVersion).isPresent(); @@ -91,7 +98,8 @@ void shouldCreateDenebSpec() { @Test void shouldCreateElectraSpec() { final SpecConfigElectra electraSpecConfig = SpecConfigElectra.required(minimalConfig); - final SpecVersion expectedVersion = SpecVersion.createElectra(electraSpecConfig); + final SpecVersion expectedVersion = + SpecVersion.createElectra(electraSpecConfig, schemaRegistryBuilder); final Optional actualVersion = SpecVersion.create(SpecMilestone.ELECTRA, minimalConfig); assertThat(actualVersion).isPresent(); diff --git a/ethereum/spec/src/test/java/tech/pegasys/teku/spec/logic/versions/electra/helpers/BeaconStateAccessorsElectraTest.java b/ethereum/spec/src/test/java/tech/pegasys/teku/spec/logic/versions/electra/helpers/BeaconStateAccessorsElectraTest.java index 3a6eb21c073..43617a81f10 100644 --- a/ethereum/spec/src/test/java/tech/pegasys/teku/spec/logic/versions/electra/helpers/BeaconStateAccessorsElectraTest.java +++ b/ethereum/spec/src/test/java/tech/pegasys/teku/spec/logic/versions/electra/helpers/BeaconStateAccessorsElectraTest.java @@ -35,7 +35,7 @@ class BeaconStateAccessorsElectraTest { spy(SpecConfigElectra.required(spec.atSlot(UInt64.ZERO).getConfig())); private final PredicatesElectra predicatesElectra = new PredicatesElectra(specConfig); private final SchemaDefinitionsElectra schemaDefinitionsElectra = - new SchemaDefinitionsElectra(SpecConfigElectra.required(specConfig)); + spec.getGenesisSchemaDefinitions().toVersionElectra().orElseThrow(); private final MiscHelpersElectra miscHelpersElectra = new MiscHelpersElectra( SpecConfigElectra.required(specConfig), predicatesElectra, schemaDefinitionsElectra);