Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Notify new payload #9111

Merged
merged 37 commits into from
Feb 13, 2025
Merged
Show file tree
Hide file tree
Changes from 35 commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
765015b
focil spec config (#8945)
mehdi-aouadi Dec 20, 2024
4630900
fix spotless (#8947)
mehdi-aouadi Dec 20, 2024
87a6d18
8944 focil spec config (#8948)
mehdi-aouadi Dec 20, 2024
ade3991
8944 focil spec config (#8949)
mehdi-aouadi Dec 20, 2024
aff31d5
fix focil spec loader (#8973)
mehdi-aouadi Jan 8, 2025
5c1bf38
8944 focil spec config (#8977)
mehdi-aouadi Jan 9, 2025
1eab849
8944 focil spec config (#8978)
mehdi-aouadi Jan 9, 2025
69920ad
fix assemble (#8979)
mehdi-aouadi Jan 9, 2025
ab4d32d
8933 containers (#8986)
mehdi-aouadi Jan 13, 2025
8578b25
add property tests (#8989)
mehdi-aouadi Jan 13, 2025
dab5ff2
spotless (#8990)
mehdi-aouadi Jan 13, 2025
9a2d518
add Beacon State Accessors (#8993)
mehdi-aouadi Jan 14, 2025
d7abdae
add inclusion committee assignment helper (#8996)
mehdi-aouadi Jan 14, 2025
d7c7a8b
add inclusion list signature verification (#8999)
mehdi-aouadi Jan 15, 2025
b79ff98
8934 focil gossip (#9006)
mehdi-aouadi Jan 16, 2025
c54aee2
remove unused logger
mehdi-aouadi Jan 16, 2025
ea5366a
fix spotless
mehdi-aouadi Jan 16, 2025
18a3286
8934 inclusion list pool (#9013)
mehdi-aouadi Jan 17, 2025
3d1744e
add inclusion list manager (#9034)
mehdi-aouadi Jan 24, 2025
4d2ca38
Update FOCIL branch with master changes (#9037)
mehdi-aouadi Jan 27, 2025
0a05231
use concurrent hash map for IL pool (#9038)
mehdi-aouadi Jan 27, 2025
7fcae17
rename preset variable (#9040)
mehdi-aouadi Jan 27, 2025
b3db00f
fix missing preset renaming (#9041)
mehdi-aouadi Jan 27, 2025
37d7ff0
add inclusion list rpc (#9055)
mehdi-aouadi Jan 28, 2025
32b409a
add inclusion lists pool logic (#9058)
mehdi-aouadi Jan 29, 2025
7f3d03d
merge branch master
mehdi-aouadi Jan 29, 2025
e43e71a
9039 il pool (#9062)
mehdi-aouadi Jan 30, 2025
01be1ab
Add engine get inclusion list exeution api method (#9069)
mehdi-aouadi Jan 31, 2025
dc90a57
add engine new payload V5 (#9071)
mehdi-aouadi Jan 31, 2025
ce11129
add update payload with inclusion list egine api method (#9073)
mehdi-aouadi Jan 31, 2025
7df8786
Merge remote-tracking branch 'refs/remotes/consensys/focil' into noti…
gfukushima Feb 11, 2025
bff733a
pipe IL supplier all the way down to BlockProcessorEip7805
gfukushima Feb 12, 2025
8f994b9
spotless
gfukushima Feb 12, 2025
67aa6a5
spotless
gfukushima Feb 12, 2025
f397bf8
add finals
gfukushima Feb 12, 2025
0ba8662
modify methods signature to accept the Optional<List<IL>> instead of …
gfukushima Feb 12, 2025
e6b4df6
spotless
gfukushima Feb 12, 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
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,9 @@ private void processUpgrade(final TestDefinition testDefinition, final MetaData

final BLSSignatureVerifier signatureVerifier =
metadata.blsSetting == 2 ? BLSSignatureVerifier.NO_OP : BLSSignatureVerifier.SIMPLE;
result = spec.processBlock(result, block, signatureVerifier, Optional.empty());
result =
spec.processBlock(
result, block, signatureVerifier, Optional.empty(), __ -> Optional.empty());
} catch (final StateTransitionException e) {
Assertions.fail(
"Failed to process block " + i + " at slot " + block.getSlot() + ": " + e.getMessage(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,12 @@

import java.util.List;
import java.util.Optional;
import java.util.function.Function;
import java.util.function.Supplier;
import tech.pegasys.teku.bls.BLSSignatureVerifier;
import tech.pegasys.teku.spec.Spec;
import tech.pegasys.teku.spec.datastructures.blocks.BeaconBlockSummary;
import tech.pegasys.teku.spec.datastructures.blocks.SlotAndBlockRoot;
import tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBody;
import tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBodySchema;
import tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.altair.SyncAggregate;
Expand All @@ -30,6 +32,7 @@
import tech.pegasys.teku.spec.datastructures.operations.Attestation;
import tech.pegasys.teku.spec.datastructures.operations.AttesterSlashing;
import tech.pegasys.teku.spec.datastructures.operations.Deposit;
import tech.pegasys.teku.spec.datastructures.operations.InclusionList;
import tech.pegasys.teku.spec.datastructures.operations.ProposerSlashing;
import tech.pegasys.teku.spec.datastructures.operations.SignedBlsToExecutionChange;
import tech.pegasys.teku.spec.datastructures.operations.SignedVoluntaryExit;
Expand Down Expand Up @@ -115,10 +118,11 @@ public void processSyncCommittee(final MutableBeaconState state, final SyncAggre
public void processExecutionPayload(
final MutableBeaconState state,
final BeaconBlockBody beaconBlockBody,
final Optional<? extends OptimisticExecutionPayloadExecutor> payloadExecutor)
final Optional<? extends OptimisticExecutionPayloadExecutor> payloadExecutor,
final Function<SlotAndBlockRoot, Optional<List<InclusionList>>> inclusionListSupplier)
throws BlockProcessingException {
spec.getBlockProcessor(state.getSlot())
.processExecutionPayload(state, beaconBlockBody, payloadExecutor);
.processExecutionPayload(state, beaconBlockBody, payloadExecutor, inclusionListSupplier);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@

import java.util.List;
import java.util.Optional;
import java.util.function.Function;
import tech.pegasys.teku.spec.datastructures.blocks.BeaconBlockSummary;
import tech.pegasys.teku.spec.datastructures.blocks.SlotAndBlockRoot;
import tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBody;
import tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.altair.SyncAggregate;
import tech.pegasys.teku.spec.datastructures.execution.ExecutionPayloadSummary;
Expand All @@ -25,6 +27,7 @@
import tech.pegasys.teku.spec.datastructures.operations.Attestation;
import tech.pegasys.teku.spec.datastructures.operations.AttesterSlashing;
import tech.pegasys.teku.spec.datastructures.operations.Deposit;
import tech.pegasys.teku.spec.datastructures.operations.InclusionList;
import tech.pegasys.teku.spec.datastructures.operations.ProposerSlashing;
import tech.pegasys.teku.spec.datastructures.operations.SignedBlsToExecutionChange;
import tech.pegasys.teku.spec.datastructures.operations.SignedVoluntaryExit;
Expand Down Expand Up @@ -57,7 +60,8 @@ void processSyncCommittee(MutableBeaconState state, SyncAggregate aggregate)
void processExecutionPayload(
MutableBeaconState state,
BeaconBlockBody beaconBlockBody,
Optional<? extends OptimisticExecutionPayloadExecutor> payloadExecutor)
Optional<? extends OptimisticExecutionPayloadExecutor> payloadExecutor,
Function<SlotAndBlockRoot, Optional<List<InclusionList>>> inclusionListSupplier)
throws BlockProcessingException;

void processBlsToExecutionChange(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -314,7 +314,8 @@ private void processOperation(
state,
beaconBlockBody,
Optional.of(
(latestExecutionPayloadHeader, payloadToExecute) -> executionMeta.executionValid));
(latestExecutionPayloadHeader, payloadToExecute) -> executionMeta.executionValid),
__ -> Optional.empty());
}
case BLS_TO_EXECUTION_CHANGE -> processBlsToExecutionChange(testDefinition, state, processor);
case WITHDRAWAL -> processWithdrawal(testDefinition, state, processor);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,8 @@ private BeaconState applyBlocks(
metaData.getBlsSetting() == IGNORED
? BLSSignatureVerifier.NO_OP
: BLSSignatureVerifier.SIMPLE,
Optional.empty());
Optional.empty(),
__ -> Optional.empty());
}
return result;
} catch (StateTransitionException e) {
Expand Down
10 changes: 7 additions & 3 deletions ethereum/spec/src/main/java/tech/pegasys/teku/spec/Spec.java
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@
import tech.pegasys.teku.spec.datastructures.blocks.SignedBeaconBlock;
import tech.pegasys.teku.spec.datastructures.blocks.SignedBeaconBlockUnblinder;
import tech.pegasys.teku.spec.datastructures.blocks.SignedBlockContainer;
import tech.pegasys.teku.spec.datastructures.blocks.SlotAndBlockRoot;
import tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBodyBuilder;
import tech.pegasys.teku.spec.datastructures.execution.ExecutionPayloadHeader;
import tech.pegasys.teku.spec.datastructures.execution.versions.capella.Withdrawal;
Expand Down Expand Up @@ -793,7 +794,8 @@ public BeaconState processBlock(
final BeaconState preState,
final SignedBeaconBlock block,
final BLSSignatureVerifier signatureVerifier,
final Optional<OptimisticExecutionPayloadExecutor> payloadExecutor)
final Optional<OptimisticExecutionPayloadExecutor> payloadExecutor,
final Function<SlotAndBlockRoot, Optional<List<InclusionList>>> inclusionListSupplier)
throws StateTransitionException {
try {
final BeaconState blockSlotState = stateTransition.processSlots(preState, block.getSlot());
Expand All @@ -803,7 +805,8 @@ public BeaconState processBlock(
blockSlotState,
IndexedAttestationCache.NOOP,
signatureVerifier,
payloadExecutor);
payloadExecutor,
inclusionListSupplier);
} catch (SlotProcessingException | EpochProcessingException e) {
throw new StateTransitionException(e);
}
Expand All @@ -819,7 +822,8 @@ public BeaconState replayValidatedBlock(final BeaconState preState, final Signed
block.getMessage(),
IndexedAttestationCache.NOOP,
BLSSignatureVerifier.NO_OP,
Optional.empty());
Optional.empty(),
__ -> Optional.empty());
} catch (SlotProcessingException | EpochProcessingException | BlockProcessingException e) {
throw new StateTransitionException(e);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public class NewPayloadRequest {
private final Optional<List<VersionedHash>> versionedHashes;
private final Optional<Bytes32> parentBeaconBlockRoot;
private final Optional<List<Bytes>> executionRequests;
private final Optional<List<Bytes>> inclusionList;
private final Optional<List<Transaction>> inclusionList;

public NewPayloadRequest(final ExecutionPayload executionPayload) {
this.executionPayload = executionPayload;
Expand Down Expand Up @@ -65,7 +65,7 @@ public NewPayloadRequest(
final List<VersionedHash> versionedHashes,
final Bytes32 parentBeaconBlockRoot,
final List<Bytes> executionRequests,
final List<Bytes> inclusionList) {
final List<Transaction> inclusionList) {
this.executionPayload = executionPayload;
this.versionedHashes = Optional.of(versionedHashes);
this.parentBeaconBlockRoot = Optional.of(parentBeaconBlockRoot);
Expand All @@ -89,7 +89,7 @@ public Optional<List<Bytes>> getExecutionRequests() {
return executionRequests;
}

public Optional<List<Bytes>> getInclusionList() {
public Optional<List<Transaction>> getInclusionList() {
return inclusionList;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.function.Function;
import java.util.function.Supplier;
import javax.annotation.CheckReturnValue;
import org.apache.logging.log4j.LogManager;
Expand All @@ -44,6 +45,7 @@
import tech.pegasys.teku.spec.datastructures.blocks.BeaconBlockSummary;
import tech.pegasys.teku.spec.datastructures.blocks.Eth1Data;
import tech.pegasys.teku.spec.datastructures.blocks.SignedBeaconBlock;
import tech.pegasys.teku.spec.datastructures.blocks.SlotAndBlockRoot;
import tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBody;
import tech.pegasys.teku.spec.datastructures.execution.versions.electra.ConsolidationRequest;
import tech.pegasys.teku.spec.datastructures.execution.versions.electra.DepositRequest;
Expand All @@ -53,6 +55,7 @@
import tech.pegasys.teku.spec.datastructures.operations.AttesterSlashing;
import tech.pegasys.teku.spec.datastructures.operations.Deposit;
import tech.pegasys.teku.spec.datastructures.operations.DepositData;
import tech.pegasys.teku.spec.datastructures.operations.InclusionList;
import tech.pegasys.teku.spec.datastructures.operations.IndexedAttestation;
import tech.pegasys.teku.spec.datastructures.operations.ProposerSlashing;
import tech.pegasys.teku.spec.datastructures.operations.SignedVoluntaryExit;
Expand Down Expand Up @@ -134,7 +137,8 @@ public BeaconState processAndValidateBlock(
final SignedBeaconBlock signedBlock,
final BeaconState blockSlotState,
final IndexedAttestationCache indexedAttestationCache,
final Optional<? extends OptimisticExecutionPayloadExecutor> payloadExecutor)
final Optional<? extends OptimisticExecutionPayloadExecutor> payloadExecutor,
final Function<SlotAndBlockRoot, Optional<List<InclusionList>>> inclusionListSupplier)
throws StateTransitionException {
final BatchSignatureVerifier signatureVerifier = new BatchSignatureVerifier();
final BeaconState result =
Expand All @@ -143,7 +147,8 @@ public BeaconState processAndValidateBlock(
blockSlotState,
indexedAttestationCache,
signatureVerifier,
payloadExecutor);
payloadExecutor,
inclusionListSupplier);
if (!signatureVerifier.batchVerify()) {
throw new StateTransitionException(
"Batch signature verification failed for block " + signedBlock.toLogString());
Expand All @@ -157,7 +162,8 @@ public BeaconState processAndValidateBlock(
final BeaconState blockSlotState,
final IndexedAttestationCache indexedAttestationCache,
final BLSSignatureVerifier signatureVerifier,
final Optional<? extends OptimisticExecutionPayloadExecutor> payloadExecutor)
final Optional<? extends OptimisticExecutionPayloadExecutor> payloadExecutor,
final Function<SlotAndBlockRoot, Optional<List<InclusionList>>> inclusionListSupplier)
throws StateTransitionException {
try {
final BlockValidationResult preValidationResult =
Expand All @@ -173,7 +179,8 @@ public BeaconState processAndValidateBlock(
signedBlock.getMessage(),
indexedAttestationCache,
signatureVerifier,
payloadExecutor);
payloadExecutor,
inclusionListSupplier);

BlockValidationResult blockValidationResult =
validateBlockPostProcessing(
Expand Down Expand Up @@ -320,11 +327,18 @@ public BeaconState processUnsignedBlock(
final BeaconBlock block,
final IndexedAttestationCache indexedAttestationCache,
final BLSSignatureVerifier signatureVerifier,
final Optional<? extends OptimisticExecutionPayloadExecutor> payloadExecutor)
final Optional<? extends OptimisticExecutionPayloadExecutor> payloadExecutor,
final Function<SlotAndBlockRoot, Optional<List<InclusionList>>> inclusionListSupplier)
throws BlockProcessingException {
return preState.updated(
state -> {
processBlock(state, block, indexedAttestationCache, signatureVerifier, payloadExecutor);
processBlock(
state,
block,
indexedAttestationCache,
signatureVerifier,
payloadExecutor,
inclusionListSupplier);
BeaconStateCache.getSlotCaches(state).onBlockProcessed();
});
}
Expand All @@ -334,7 +348,8 @@ protected void processBlock(
final BeaconBlock block,
final IndexedAttestationCache indexedAttestationCache,
final BLSSignatureVerifier signatureVerifier,
final Optional<? extends OptimisticExecutionPayloadExecutor> payloadExecutor)
final Optional<? extends OptimisticExecutionPayloadExecutor> payloadExecutor,
final Function<SlotAndBlockRoot, Optional<List<InclusionList>>> inclusionListSupplier)
throws BlockProcessingException {
processBlockHeader(state, block);
processRandaoNoValidation(state, block.getBody());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import it.unimi.dsi.fastutil.objects.Object2IntMap;
import java.util.List;
import java.util.Optional;
import java.util.function.Function;
import java.util.function.Supplier;
import tech.pegasys.teku.bls.BLSPublicKey;
import tech.pegasys.teku.bls.BLSSignatureVerifier;
Expand All @@ -26,6 +27,7 @@
import tech.pegasys.teku.spec.datastructures.blocks.BeaconBlockSummary;
import tech.pegasys.teku.spec.datastructures.blocks.Eth1Data;
import tech.pegasys.teku.spec.datastructures.blocks.SignedBeaconBlock;
import tech.pegasys.teku.spec.datastructures.blocks.SlotAndBlockRoot;
import tech.pegasys.teku.spec.datastructures.blocks.blockbody.BeaconBlockBody;
import tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.altair.SyncAggregate;
import tech.pegasys.teku.spec.datastructures.execution.ExecutionPayloadHeader;
Expand All @@ -39,6 +41,7 @@
import tech.pegasys.teku.spec.datastructures.operations.AttestationData;
import tech.pegasys.teku.spec.datastructures.operations.AttesterSlashing;
import tech.pegasys.teku.spec.datastructures.operations.Deposit;
import tech.pegasys.teku.spec.datastructures.operations.InclusionList;
import tech.pegasys.teku.spec.datastructures.operations.ProposerSlashing;
import tech.pegasys.teku.spec.datastructures.operations.SignedBlsToExecutionChange;
import tech.pegasys.teku.spec.datastructures.operations.SignedVoluntaryExit;
Expand All @@ -60,7 +63,8 @@ BeaconState processAndValidateBlock(
SignedBeaconBlock signedBlock,
BeaconState blockSlotState,
IndexedAttestationCache indexedAttestationCache,
Optional<? extends OptimisticExecutionPayloadExecutor> payloadExecutor)
Optional<? extends OptimisticExecutionPayloadExecutor> payloadExecutor,
Function<SlotAndBlockRoot, Optional<List<InclusionList>>> inclusionListSupplier)
throws StateTransitionException;

/**
Expand All @@ -80,15 +84,17 @@ BeaconState processAndValidateBlock(
BeaconState blockSlotState,
IndexedAttestationCache indexedAttestationCache,
BLSSignatureVerifier signatureVerifier,
Optional<? extends OptimisticExecutionPayloadExecutor> payloadExecutor)
Optional<? extends OptimisticExecutionPayloadExecutor> payloadExecutor,
Function<SlotAndBlockRoot, Optional<List<InclusionList>>> inclusionListSupplier)
throws StateTransitionException;

BeaconState processUnsignedBlock(
BeaconState preState,
BeaconBlock block,
IndexedAttestationCache indexedAttestationCache,
BLSSignatureVerifier signatureVerifier,
Optional<? extends OptimisticExecutionPayloadExecutor> payloadExecutor)
Optional<? extends OptimisticExecutionPayloadExecutor> payloadExecutor,
Function<SlotAndBlockRoot, Optional<List<InclusionList>>> inclusionListSupplier)
throws BlockProcessingException;

void processBlockHeader(MutableBeaconState state, BeaconBlockSummary blockHeader)
Expand Down Expand Up @@ -144,16 +150,21 @@ void processSyncAggregate(
void processExecutionPayload(
MutableBeaconState state,
BeaconBlockBody beaconBlockBody,
Optional<? extends OptimisticExecutionPayloadExecutor> payloadExecutor)
Optional<? extends OptimisticExecutionPayloadExecutor> payloadExecutor,
Function<SlotAndBlockRoot, Optional<List<InclusionList>>> inclusionListSupplier)
throws BlockProcessingException;

void validateExecutionPayload(
BeaconState state,
BeaconBlockBody beaconBlockBody,
Optional<? extends OptimisticExecutionPayloadExecutor> payloadExecutor)
Optional<? extends OptimisticExecutionPayloadExecutor> payloadExecutor,
Function<SlotAndBlockRoot, Optional<List<InclusionList>>> inclusionListSupplier)
throws BlockProcessingException;

NewPayloadRequest computeNewPayloadRequest(BeaconState state, BeaconBlockBody beaconBlockBody)
NewPayloadRequest computeNewPayloadRequest(
BeaconState state,
BeaconBlockBody beaconBlockBody,
Function<SlotAndBlockRoot, Optional<List<InclusionList>>> inclusionListSupplier)
throws BlockProcessingException;

void validateExecutionPayloadHeader(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,8 @@ public SafeFuture<BeaconBlockAndState> createNewUnsignedBlock(
block,
IndexedAttestationCache.NOOP,
BLSSignatureVerifier.NO_OP,
Optional.empty());
Optional.empty(),
__ -> Optional.empty());

blockProductionPerformance.stateTransition();

Expand Down
Loading