Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
130 commits
Select commit Hold shift + click to select a range
43d8b7d
add fulu state and new state container field
gfukushima May 21, 2025
d98cee5
remove @Override annotation
gfukushima May 21, 2025
5391a7f
spotless
gfukushima May 21, 2025
515fe06
temp commit
gfukushima May 21, 2025
74c240a
Add BeaconStateSchemaFulu extending electra
gfukushima May 23, 2025
2a98575
Add new misc helpers function
gfukushima May 23, 2025
7fe6993
Add new epoch processing function
gfukushima May 23, 2025
afcf6a9
Add new epoch processing function
gfukushima May 23, 2025
ec76ec5
Add new and modified beacon accessor methods for fulu
gfukushima May 23, 2025
5fadb04
spotless
gfukushima May 23, 2025
e2a695d
fix assemble
gfukushima May 23, 2025
67d7447
create a list with existing plus newly calculated proposers
gfukushima May 23, 2025
a50aab9
rename method
gfukushima May 26, 2025
bb0a05c
fix exception message
gfukushima May 26, 2025
3ec0e54
fix proposer computation
gfukushima May 26, 2025
fc8c590
refactor of method name
gfukushima May 26, 2025
3eb195d
register beacon state schema for fulu
gfukushima May 26, 2025
8ae3bc1
fix getBeaconProposerIndex logic
gfukushima May 27, 2025
8faeaa5
add comment to explain that this call to the beacon accessor is a lit…
gfukushima May 27, 2025
f018d3a
add initializeProposerLookahead to MiscHelpersFulu
gfukushima May 27, 2025
daa48bd
add mischelper to FuluStateUpgrade
gfukushima May 27, 2025
67c2154
use initializeProposerLookahead on state upgrade
gfukushima May 27, 2025
7e1be52
Merge branch 'master' into eip7917
gfukushima May 30, 2025
f435f42
fix speclogic fulu to use EpochProcessorFulu
gfukushima May 30, 2025
7b31667
add support methods for BeaconStateBuilderFulu
gfukushima May 30, 2025
7945df5
add test for `computeProposerIndices` method in miscHelperFulu
gfukushima May 30, 2025
fc40b50
fix DataStructureUtil to create BeaconStateBuilderFulu for fulu
gfukushima May 30, 2025
d45873d
remove comments
gfukushima May 30, 2025
5dd6348
spotless
gfukushima May 30, 2025
b6ac5da
Merge branch 'master' into eip7917
gfukushima May 30, 2025
b18ae25
fix open api integration tests
gfukushima Jun 1, 2025
46642f4
fix genesis generator for fulu after introducing proposer_lookahead
gfukushima Jun 2, 2025
a07843e
state builder to create proposerlookahead based on maxLenght defined …
gfukushima Jun 2, 2025
ed41dfb
spotless
gfukushima Jun 2, 2025
4dc9ad2
Merge remote-tracking branch 'origin/eip7917' into eip7917
gfukushima Jun 2, 2025
25b36f5
fix state transition
gfukushima Jun 2, 2025
185c2b4
spotless
gfukushima Jun 2, 2025
a2564cc
add SszUInt64Vector and schema
gfukushima Jun 3, 2025
62720fb
change implementation to use SszUInt64Vector rather than SszUInt64List
gfukushima Jun 3, 2025
1567397
spotless
gfukushima Jun 3, 2025
acccbde
fix schema creation
gfukushima Jun 3, 2025
d1bd9dc
spotless
gfukushima Jun 3, 2025
fe793a1
Removing ProposerLookahead container
lucassaldanha Jun 3, 2025
81a78c7
fix genesis generator
gfukushima Jun 3, 2025
bbec664
spotless
gfukushima Jun 3, 2025
f3ce867
Merge branch 'master' into eip7917
gfukushima Jun 3, 2025
5e46651
update ref test to alpha.1
gfukushima Jun 3, 2025
f39d400
Merge remote-tracking branch 'origin/eip7917' into eip7917
gfukushima Jun 3, 2025
08fce08
fix state upgrade for fulu
gfukushima Jun 4, 2025
bbf72b7
spotless
gfukushima Jun 4, 2025
f9401c2
add fulu state and new state container field
gfukushima May 21, 2025
14b71e0
remove @Override annotation
gfukushima May 21, 2025
7afdfdf
spotless
gfukushima May 21, 2025
68dea68
temp commit
gfukushima May 21, 2025
dc03860
Add BeaconStateSchemaFulu extending electra
gfukushima May 23, 2025
31c886b
Add new misc helpers function
gfukushima May 23, 2025
8b4cb69
Add new epoch processing function
gfukushima May 23, 2025
378dbb2
Add new epoch processing function
gfukushima May 23, 2025
a59d671
Add new and modified beacon accessor methods for fulu
gfukushima May 23, 2025
fe646f3
spotless
gfukushima May 23, 2025
4add834
fix assemble
gfukushima May 23, 2025
b94070a
create a list with existing plus newly calculated proposers
gfukushima May 23, 2025
c2bde03
rename method
gfukushima May 26, 2025
31b4a2f
fix exception message
gfukushima May 26, 2025
76c199d
fix proposer computation
gfukushima May 26, 2025
014047b
refactor of method name
gfukushima May 26, 2025
9a309a5
register beacon state schema for fulu
gfukushima May 26, 2025
c08af8f
fix getBeaconProposerIndex logic
gfukushima May 27, 2025
c361221
add comment to explain that this call to the beacon accessor is a lit…
gfukushima May 27, 2025
cb995f4
add initializeProposerLookahead to MiscHelpersFulu
gfukushima May 27, 2025
dd5b007
add mischelper to FuluStateUpgrade
gfukushima May 27, 2025
5a4891f
use initializeProposerLookahead on state upgrade
gfukushima May 27, 2025
65211c5
fix speclogic fulu to use EpochProcessorFulu
gfukushima May 30, 2025
ca98d56
add support methods for BeaconStateBuilderFulu
gfukushima May 30, 2025
c04ddc4
add test for `computeProposerIndices` method in miscHelperFulu
gfukushima May 30, 2025
b144777
fix DataStructureUtil to create BeaconStateBuilderFulu for fulu
gfukushima May 30, 2025
46ff9b4
remove comments
gfukushima May 30, 2025
a5694d4
spotless
gfukushima May 30, 2025
06bee44
fix open api integration tests
gfukushima Jun 1, 2025
314cb6d
fix genesis generator for fulu after introducing proposer_lookahead
gfukushima Jun 2, 2025
2bfbab3
state builder to create proposerlookahead based on maxLenght defined …
gfukushima Jun 2, 2025
e719d73
spotless
gfukushima Jun 2, 2025
16454b3
fix state transition
gfukushima Jun 2, 2025
769146b
spotless
gfukushima Jun 2, 2025
1cc1132
add SszUInt64Vector and schema
gfukushima Jun 3, 2025
221b87b
change implementation to use SszUInt64Vector rather than SszUInt64List
gfukushima Jun 3, 2025
619c65b
spotless
gfukushima Jun 3, 2025
15f7ef1
fix schema creation
gfukushima Jun 3, 2025
9ec7a22
spotless
gfukushima Jun 3, 2025
846795e
Removing ProposerLookahead container
lucassaldanha Jun 3, 2025
15f83db
fix genesis generator
gfukushima Jun 3, 2025
7314642
spotless
gfukushima Jun 3, 2025
d31725f
update ref test to alpha.1
gfukushima Jun 3, 2025
b5364bb
fix state upgrade for fulu
gfukushima Jun 4, 2025
31406bc
spotless
gfukushima Jun 4, 2025
e69016d
fix duplication
StefanBratanov Jun 4, 2025
96480d5
use beaconstatefulu on proposerindice calculation
gfukushima Jun 4, 2025
0d58cf5
refactor + maybe fix
StefanBratanov Jun 4, 2025
5244e18
spotless
gfukushima Jun 4, 2025
e013ad0
spotless
StefanBratanov Jun 4, 2025
facb661
better
StefanBratanov Jun 4, 2025
5199331
Merge remote-tracking branch 'origin/eip7917' into eip7917
gfukushima Jun 4, 2025
1d92236
trying a fix
StefanBratanov Jun 4, 2025
a3e7aa0
spotless
StefanBratanov Jun 4, 2025
ac13dce
small optimization
StefanBratanov Jun 4, 2025
e19a773
refactor
StefanBratanov Jun 4, 2025
970ad3f
Merge remote-tracking branch 'origin/eip7917' into eip7917
gfukushima Jun 5, 2025
266748a
adding support to new ref tests
gfukushima Jun 5, 2025
8eda1f5
spotless
gfukushima Jun 5, 2025
4c1e9a5
Merge branch 'master' into eip7917
gfukushima Jun 5, 2025
f5b80b9
Add proposer_lookahead to epoch processing executor
gfukushima Jun 5, 2025
c972143
adding epoch processing ref test
StefanBratanov Jun 5, 2025
3f74977
Merge branch 'eip7917' of https://github.com/gfukushima/teku
StefanBratanov Jun 5, 2025
dd4ccd4
remove from ref test
StefanBratanov Jun 5, 2025
8e96d17
Merge branch 'master' into eip7917
StefanBratanov Jun 5, 2025
4103b5c
re-add reference tests for Fulu
StefanBratanov Jun 5, 2025
3147338
small build.gradle change to trigger redownload of ref tests
StefanBratanov Jun 5, 2025
cca3284
test a fix
StefanBratanov Jun 5, 2025
db7bb15
slight refactor
StefanBratanov Jun 5, 2025
0cd1d74
spotless
StefanBratanov Jun 5, 2025
24d10bd
slight refactor
StefanBratanov Jun 5, 2025
6a8ac17
spotless
StefanBratanov Jun 5, 2025
4c952ce
fix ref tests
StefanBratanov Jun 5, 2025
b40541f
small refactor
StefanBratanov Jun 5, 2025
bd12740
cleanup
StefanBratanov Jun 5, 2025
7a6b1f3
improve ref test verify progressive balance skip
tbenr Jun 5, 2025
57ade4e
spotlessly
tbenr Jun 5, 2025
86b3b26
nit
StefanBratanov Jun 5, 2025
4822c56
spotless
StefanBratanov Jun 5, 2025
dd4594f
Merge branch 'master' into eip7917
gfukushima Jun 6, 2025
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: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ buildscript {
}

plugins {
id 'com.diffplug.spotless' version '7.0.3'
id 'com.diffplug.spotless' version '7.0.4'
id 'com.github.ben-manes.versions' version '0.52.0'
id 'com.github.jk1.dependency-license-report' version '2.9'
id 'io.spring.dependency-management' version '1.1.7'
Expand Down Expand Up @@ -327,7 +327,7 @@ allprojects {
}

def nightly = System.getenv("NIGHTLY") != null
def refTestVersion = nightly ? "nightly" : "v1.6.0-alpha.0"
def refTestVersion = nightly ? "nightly" : "v1.6.0-alpha.1"
def blsRefTestVersion = 'v0.1.2'
def slashingProtectionInterchangeRefTestVersion = 'v5.3.0'
def refTestBaseUrl = 'https://github.com/ethereum/consensus-spec-tests/releases/download'
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,238 @@
{
"title" : "BeaconStateFulu",
"type" : "object",
"required" : [ "genesis_time", "genesis_validators_root", "slot", "fork", "latest_block_header", "block_roots", "state_roots", "historical_roots", "eth1_data", "eth1_data_votes", "eth1_deposit_index", "validators", "balances", "randao_mixes", "slashings", "previous_epoch_participation", "current_epoch_participation", "justification_bits", "previous_justified_checkpoint", "current_justified_checkpoint", "finalized_checkpoint", "inactivity_scores", "current_sync_committee", "next_sync_committee", "latest_execution_payload_header", "next_withdrawal_index", "next_withdrawal_validator_index", "historical_summaries", "deposit_requests_start_index", "deposit_balance_to_consume", "exit_balance_to_consume", "earliest_exit_epoch", "consolidation_balance_to_consume", "earliest_consolidation_epoch", "pending_deposits", "pending_partial_withdrawals", "pending_consolidations", "proposer_lookahead" ],
"properties" : {
"genesis_time" : {
"type" : "string",
"description" : "unsigned 64 bit integer",
"example" : "1",
"format" : "uint64"
},
"genesis_validators_root" : {
"type" : "string",
"description" : "Bytes32 hexadecimal",
"example" : "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
"format" : "byte"
},
"slot" : {
"type" : "string",
"description" : "unsigned 64 bit integer",
"example" : "1",
"format" : "uint64"
},
"fork" : {
"$ref" : "#/components/schemas/Fork"
},
"latest_block_header" : {
"$ref" : "#/components/schemas/BeaconBlockHeader"
},
"block_roots" : {
"type" : "array",
"items" : {
"type" : "string",
"description" : "Bytes32 hexadecimal",
"example" : "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
"format" : "byte"
}
},
"state_roots" : {
"type" : "array",
"items" : {
"type" : "string",
"description" : "Bytes32 hexadecimal",
"example" : "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
"format" : "byte"
}
},
"historical_roots" : {
"type" : "array",
"items" : {
"type" : "string",
"description" : "Bytes32 hexadecimal",
"example" : "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
"format" : "byte"
}
},
"eth1_data" : {
"$ref" : "#/components/schemas/Eth1Data"
},
"eth1_data_votes" : {
"type" : "array",
"items" : {
"$ref" : "#/components/schemas/Eth1Data"
}
},
"eth1_deposit_index" : {
"type" : "string",
"description" : "unsigned 64 bit integer",
"example" : "1",
"format" : "uint64"
},
"validators" : {
"type" : "array",
"items" : {
"$ref" : "#/components/schemas/Validator"
}
},
"balances" : {
"type" : "array",
"items" : {
"type" : "string",
"description" : "unsigned 64 bit integer",
"example" : "1",
"format" : "uint64"
}
},
"randao_mixes" : {
"type" : "array",
"items" : {
"type" : "string",
"description" : "Bytes32 hexadecimal",
"example" : "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
"format" : "byte"
}
},
"slashings" : {
"type" : "array",
"items" : {
"type" : "string",
"description" : "unsigned 64 bit integer",
"example" : "1",
"format" : "uint64"
}
},
"previous_epoch_participation" : {
"type" : "array",
"items" : {
"type" : "string",
"example" : "1",
"description" : "unsigned 8 bit integer, max value 255",
"format" : "uint8"
}
},
"current_epoch_participation" : {
"type" : "array",
"items" : {
"type" : "string",
"example" : "1",
"description" : "unsigned 8 bit integer, max value 255",
"format" : "uint8"
}
},
"justification_bits" : {
"type" : "string",
"pattern" : "^0x[a-fA-F0-9]{2,}$",
"description" : "SSZ hexadecimal",
"format" : "bytes"
},
"previous_justified_checkpoint" : {
"$ref" : "#/components/schemas/Checkpoint"
},
"current_justified_checkpoint" : {
"$ref" : "#/components/schemas/Checkpoint"
},
"finalized_checkpoint" : {
"$ref" : "#/components/schemas/Checkpoint"
},
"inactivity_scores" : {
"type" : "array",
"items" : {
"type" : "string",
"description" : "unsigned 64 bit integer",
"example" : "1",
"format" : "uint64"
}
},
"current_sync_committee" : {
"$ref" : "#/components/schemas/SyncCommittee"
},
"next_sync_committee" : {
"$ref" : "#/components/schemas/SyncCommittee"
},
"latest_execution_payload_header" : {
"$ref" : "#/components/schemas/ExecutionPayloadHeaderDeneb"
},
"next_withdrawal_index" : {
"type" : "string",
"description" : "unsigned 64 bit integer",
"example" : "1",
"format" : "uint64"
},
"next_withdrawal_validator_index" : {
"type" : "string",
"description" : "unsigned 64 bit integer",
"example" : "1",
"format" : "uint64"
},
"historical_summaries" : {
"type" : "array",
"items" : {
"$ref" : "#/components/schemas/HistoricalSummary"
}
},
"deposit_requests_start_index" : {
"type" : "string",
"description" : "unsigned 64 bit integer",
"example" : "1",
"format" : "uint64"
},
"deposit_balance_to_consume" : {
"type" : "string",
"description" : "unsigned 64 bit integer",
"example" : "1",
"format" : "uint64"
},
"exit_balance_to_consume" : {
"type" : "string",
"description" : "unsigned 64 bit integer",
"example" : "1",
"format" : "uint64"
},
"earliest_exit_epoch" : {
"type" : "string",
"description" : "unsigned 64 bit integer",
"example" : "1",
"format" : "uint64"
},
"consolidation_balance_to_consume" : {
"type" : "string",
"description" : "unsigned 64 bit integer",
"example" : "1",
"format" : "uint64"
},
"earliest_consolidation_epoch" : {
"type" : "string",
"description" : "unsigned 64 bit integer",
"example" : "1",
"format" : "uint64"
},
"pending_deposits" : {
"type" : "array",
"items" : {
"$ref" : "#/components/schemas/PendingDeposit"
}
},
"pending_partial_withdrawals" : {
"type" : "array",
"items" : {
"$ref" : "#/components/schemas/PendingPartialWithdrawal"
}
},
"pending_consolidations" : {
"type" : "array",
"items" : {
"$ref" : "#/components/schemas/PendingConsolidation"
}
},
"proposer_lookahead" : {
"type" : "array",
"items" : {
"type" : "string",
"description" : "unsigned 64 bit integer",
"example" : "1",
"format" : "uint64"
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@
"$ref" : "#/components/schemas/BeaconStateDeneb"
}, {
"$ref" : "#/components/schemas/BeaconStateElectra"
},{
"$ref" : "#/components/schemas/BeaconStateFulu"
} ]
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,6 @@ public enum EpochOperation {
PROCESS_HISTORICAL_SUMMARIES_UPDATE,
PENDING_DEPOSITS,
PENDING_CONSOLIDATIONS,
INACTIVITY_UPDATES
INACTIVITY_UPDATES,
PROPOSER_LOOKAHEAD
}
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ public void executeOperation(final EpochOperation operation, final MutableBeacon
case INACTIVITY_UPDATES -> processInactivityUpdates(state);
case PENDING_DEPOSITS -> processPendingDeposits(state);
case PENDING_CONSOLIDATIONS -> processPendingConsolidations(state);
case PROPOSER_LOOKAHEAD -> epochProcessor.processProposerLookahead(state);
default ->
throw new UnsupportedOperationException(
"Attempted to execute unknown operation type: " + operation);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,9 @@ public class EpochProcessingTestExecutor implements TestExecutor {
.put(
"epoch_processing/pending_deposits",
new EpochProcessingTestExecutor(EpochOperation.PENDING_DEPOSITS))
.put(
"epoch_processing/proposer_lookahead",
new EpochProcessingTestExecutor(EpochOperation.PROPOSER_LOOKAHEAD))
.build();

private final EpochOperation operation;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -204,18 +204,37 @@ private void initProgressiveBalances(
private void verifyProgressiveBalances(
final TestDefinition testDefinition, final BeaconState result)
throws SlotProcessingException, EpochProcessingException {
if (testDefinition.getSpec().atSlot(result.getSlot()).getMilestone() == SpecMilestone.PHASE0) {
// Progressive balances not used in Phase0
final Spec spec = testDefinition.getSpec();
if (shouldSkipProgressiveBalancesVerification(spec, result)) {
// Skip verification if progressive balances are not used
return;
}
final Spec spec = testDefinition.getSpec();

assertTotalBalances(spec, result);
final UInt64 firstSlotOfNextEpoch =
spec.computeStartSlotAtEpoch(spec.computeEpochAtSlot(result.getSlot()).plus(1));
final UInt64 nextEpoch = spec.computeEpochAtSlot(result.getSlot()).plus(1);
final UInt64 firstSlotOfNextEpoch = spec.computeStartSlotAtEpoch(nextEpoch);
final BeaconState nextEpochState = spec.processSlots(result, firstSlotOfNextEpoch);
assertTotalBalances(spec, nextEpochState);
}

private boolean shouldSkipProgressiveBalancesVerification(
final Spec spec, final BeaconState state) {
if (spec.atSlot(state.getSlot()).getMilestone() == SpecMilestone.PHASE0) {
// Progressive balances not used in Phase0
return true;
}

if (spec.atSlot(state.getSlot())
.beaconStateAccessors()
.getActiveValidatorIndices(state, spec.getCurrentEpoch(state))
.isEmpty()) {
// No active validators, we can't check, epoch transition will break
return true;
}

return false;
}

private void assertTotalBalances(final Spec spec, final BeaconState state) {
final Optional<TotalBalances> maybeProgressiveBalances =
BeaconStateCache.getTransitionCaches(state)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,15 +29,15 @@ public class ReferenceTestFinder {
// Can be overridden with -Dteku.ref-test-module.override-root="<path>"
private static final Path TEST_PATH_FROM_MODULE =
Path.of("src", "referenceTest", "resources", "consensus-spec-tests", "tests");
// TODO: re-add Fulu in https://github.com/Consensys/teku/pull/9501
private static final List<String> SUPPORTED_FORKS =
List.of(
TestFork.PHASE0,
TestFork.ALTAIR,
TestFork.BELLATRIX,
TestFork.CAPELLA,
TestFork.DENEB,
TestFork.ELECTRA);
TestFork.ELECTRA,
TestFork.FULU);

@MustBeClosed
public static Stream<TestDefinition> findReferenceTests() throws IOException {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
import tech.pegasys.teku.spec.datastructures.state.beaconstate.versions.capella.BeaconStateCapella;
import tech.pegasys.teku.spec.datastructures.state.beaconstate.versions.deneb.BeaconStateDeneb;
import tech.pegasys.teku.spec.datastructures.state.beaconstate.versions.electra.BeaconStateElectra;
import tech.pegasys.teku.spec.datastructures.state.beaconstate.versions.fulu.BeaconStateFulu;
import tech.pegasys.teku.spec.datastructures.state.beaconstate.versions.phase0.BeaconStatePhase0;

public interface BeaconState extends SszContainer, ValidatorStats {
Expand Down Expand Up @@ -192,4 +193,8 @@ default Optional<BeaconStateDeneb> toVersionDeneb() {
default Optional<BeaconStateElectra> toVersionElectra() {
return Optional.empty();
}

default Optional<BeaconStateFulu> toVersionFulu() {
return Optional.empty();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
import tech.pegasys.teku.spec.datastructures.state.beaconstate.versions.capella.MutableBeaconStateCapella;
import tech.pegasys.teku.spec.datastructures.state.beaconstate.versions.deneb.MutableBeaconStateDeneb;
import tech.pegasys.teku.spec.datastructures.state.beaconstate.versions.electra.MutableBeaconStateElectra;
import tech.pegasys.teku.spec.datastructures.state.beaconstate.versions.fulu.MutableBeaconStateFulu;
import tech.pegasys.teku.spec.datastructures.state.beaconstate.versions.phase0.MutableBeaconStatePhase0;

public interface MutableBeaconState extends BeaconState, SszMutableRefContainer {
Expand Down Expand Up @@ -223,4 +224,8 @@ default Optional<MutableBeaconStateDeneb> toMutableVersionDeneb() {
default Optional<MutableBeaconStateElectra> toMutableVersionElectra() {
return Optional.empty();
}

default Optional<MutableBeaconStateFulu> toMutableVersionFulu() {
return Optional.empty();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,9 @@ public enum BeaconStateFields implements SszFieldName {
EARLIEST_CONSOLIDATION_EPOCH,
PENDING_DEPOSITS,
PENDING_PARTIAL_WITHDRAWALS,
PENDING_CONSOLIDATIONS;
PENDING_CONSOLIDATIONS,
// Fulu fields
PROPOSER_LOOKAHEAD;

private final String sszFieldName;

Expand Down
Loading