Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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 @@ -332,16 +332,16 @@
],
"signed_execution_payload_bid": {
"message": {
"parent_block_hash": "0x0c15f142b0175c6e8491002de9596cba91433934b44834491c80e04920a257ea",
"parent_block_root": "0xd3b10243d034be9fa5c8caaa6ebf2e537e3a3c7e91eeb91a93fc15f1917f314a",
"block_hash": "0xe6d2fc4270809de49a0b32d641484320853d3b1047b7e2d4c07d59b96ce0e8d4",
"prev_randao": "0x4678df4290faf93c645a36af63f4a921a44c36ead7a2ae77a503aba2afc47d8a",
"fee_recipient": "0x5999d9423046d981599d9dda377dbeeeaa4f357c",
"gas_limit": "4822007335809147728",
"builder_index": "740284",
"slot": "1310451960",
"value": "4820354852592463600",
"execution_payment": "4759212943510379790",
"parent_block_hash": "0xf9f3f64210cc7c298f4e990115d157ed8b403aa2fe7f0b8feefe9c814641a05f",
"parent_block_root": "0x4678df4290faf93c645a36af63f4a921a44c36ead7a2ae77a503aba2afc47d8a",
"block_hash": "0x5999d9423046d981599d9dda377dbeeeaa4f357c8d6bd731d384ee6a8a253515",
"prev_randao": "0x2036eb4250633bb379d46758bce28087974638c66a115d034a012412fb020f75",
"fee_recipient": "0x3357e542f0ae1af86f17cf83906b95549e493758",
"gas_limit": "4759212943510379790",
"builder_index": "1125033",
"slot": "21512915928",
"value": "4826964785459200112",
"execution_payment": "4833574722620903920",
"blob_kzg_commitments_root": "0x08400642aee83f31d60723f5fabaa1c58bbc110432a5935f43af6c943fc4fe96"
},
"signature": "0xb58eaaba3ba51d7098d65fbec3829ace78576a2276fd9c97c293aabdb634a2c50f52611f48088da5d4a5b5fa2c5f4c0513d8dd91c8534b50a7b8ae0072583612610ada0c81a261641c66ac542428cedf20f1b954ad03505fc058b40ce0bf4182"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ public class Constants {
// Target holding two slots worth of aggregators (16 aggregators, 64 committees and 2 slots)
public static final int VALID_AGGREGATE_SET_SIZE = 16 * 64 * 2;
// Target 2 different attestation data (aggregators normally agree) for two slots
public static final int SEEN_EXECUTION_PAYLOAD_BID_SET_SIZE = 10000;
public static final int HIGHEST_BID_SET_SIZE = 10;
public static final int VALID_ATTESTATION_DATA_SET_SIZE = 2 * 64 * 2;
public static final int VALID_VALIDATOR_SET_SIZE = 10000;
// Only need to maintain a cache for the current slot, so just needs to be as large as the
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import tech.pegasys.teku.spec.datastructures.epbs.versions.gloas.ExecutionPayloadEnvelope;
import tech.pegasys.teku.spec.datastructures.epbs.versions.gloas.SignedExecutionPayloadEnvelope;
import tech.pegasys.teku.spec.datastructures.execution.BlobAndCellProofs;
import tech.pegasys.teku.spec.datastructures.state.Validator;
import tech.pegasys.teku.spec.datastructures.state.beaconstate.BeaconState;
import tech.pegasys.teku.spec.logic.common.helpers.MiscHelpers;
import tech.pegasys.teku.spec.logic.versions.fulu.helpers.MiscHelpersFulu;
Expand All @@ -51,11 +52,14 @@ public static MiscHelpersGloas required(final MiscHelpers miscHelpers) {
+ miscHelpers.getClass().getSimpleName()));
}

private final PredicatesGloas predicates;

public MiscHelpersGloas(
final SpecConfigGloas specConfig,
final PredicatesGloas predicates,
final SchemaDefinitionsGloas schemaDefinitions) {
super(specConfig, predicates, schemaDefinitions);
this.predicates = predicates;
}

/**
Expand Down Expand Up @@ -149,6 +153,10 @@ public List<DataColumnSidecar> constructDataColumnSidecars(
extendedMatrix);
}

public boolean hasBuilderWithdrawalCredential(final Validator validator) {
return predicates.hasBuilderWithdrawalCredential(validator);
}

@Override
public Optional<MiscHelpersGloas> toVersionGloas() {
return Optional.of(this);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ public void shouldSignExecutionPayloadBid() {
final BLSSignature expectedSignature =
BLSSignature.fromBytesCompressed(
Bytes.fromBase64String(
"jKXnVjb5vBjxXDb3SDaoU0nXkfZEvbHjtUlR5X4YQxpjECxhGCbuWDU736kvV5C2BUD7aGjk6iHMPv3qyr/YNcbnoyZczx5c9hKy5nLZAxbkQLIhsVUElFDn0TfolUy2"));
"uf0Y3WpY34xCgIPgpuAxf7WlHAcusR6Es3QyFJSpZCX3euwieDweuMUs7nRpFgL8D809lF72Pyr4lYbS7wrGFYuqUcOmFQzscW55zqODVW/iEZo6krNQUnv4DLOT12WC"));

final SafeFuture<BLSSignature> result = signer.signExecutionPayloadBid(bid, fork);
asyncRunner.executeQueuedActions();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3133,31 +3133,70 @@ public IndexedPayloadAttestation randomIndexedPayloadAttestation() {
}

public ExecutionPayloadBid randomExecutionPayloadBid() {
return randomExecutionPayloadBid(randomSlot(), randomBuilderIndex());
return randomExecutionPayloadBid(randomUInt64());
}

public ExecutionPayloadBid randomExecutionPayloadBid(final UInt64 executionPayment) {
return randomExecutionPayloadBid(
randomBytes32(), randomSlot(), randomBuilderIndex(), randomUInt64(), executionPayment);
}

public ExecutionPayloadBid randomExecutionPayloadBid(
final UInt64 slot, final UInt64 builderIndex) {
return randomExecutionPayloadBid(
randomBytes32(), slot, builderIndex, randomUInt64(), randomUInt64());
}

private ExecutionPayloadBid randomExecutionPayloadBid(
final UInt64 value, final Bytes32 parentBlockHash) {
return randomExecutionPayloadBid(
parentBlockHash, randomSlot(), randomBuilderIndex(), value, randomUInt64());
}

public ExecutionPayloadBid randomExecutionPayloadBid(
final Bytes32 parentBlockHash,
final UInt64 slot,
final UInt64 builderIndex,
final UInt64 value,
final UInt64 executionPayment) {
return getGloasSchemaDefinitions()
.getExecutionPayloadBidSchema()
.create(
randomBytes32(),
parentBlockHash,
randomBytes32(),
randomBytes32(),
randomBytes32(),
randomEth1Address(),
randomUInt64(),
builderIndex,
slot,
randomUInt64(),
randomUInt64(),
value,
executionPayment,
randomBytes32());
}

public SignedExecutionPayloadBid randomSignedExecutionPayloadBid() {
return randomSignedExecutionPayloadBid(randomUInt64());
}

public SignedExecutionPayloadBid randomSignedExecutionPayloadBid(final UInt64 executionPayment) {
return getGloasSchemaDefinitions()
.getSignedExecutionPayloadBidSchema()
.create(randomExecutionPayloadBid(executionPayment), randomSignature());
}

public SignedExecutionPayloadBid randomSignedExecutionPayloadBid(
final UInt64 value, final Bytes32 parentBlockHash) {
return getGloasSchemaDefinitions()
.getSignedExecutionPayloadBidSchema()
.create(randomExecutionPayloadBid(value, parentBlockHash), randomSignature());
}

public SignedExecutionPayloadBid randomSignedExecutionPayloadBid(
final ExecutionPayloadBid executionPayloadBid) {
return getGloasSchemaDefinitions()
.getSignedExecutionPayloadBidSchema()
.create(randomExecutionPayloadBid(), randomSignature());
.create(executionPayloadBid, randomSignature());
}

public ExecutionPayloadEnvelope randomExecutionPayloadEnvelope() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,23 +31,37 @@
import tech.pegasys.teku.spec.datastructures.execution.GetPayloadResponse;
import tech.pegasys.teku.spec.datastructures.state.beaconstate.BeaconState;
import tech.pegasys.teku.spec.schemas.SchemaDefinitionsGloas;
import tech.pegasys.teku.statetransition.validation.ExecutionPayloadBidGossipValidator;
import tech.pegasys.teku.statetransition.validation.InternalValidationResult;

public class DefaultExecutionPayloadBidManager implements ExecutionPayloadBidManager {

private static final Logger LOG = LogManager.getLogger();

private final Spec spec;
private final ExecutionPayloadBidGossipValidator executionPayloadBidGossipValidator;

public DefaultExecutionPayloadBidManager(final Spec spec) {
public DefaultExecutionPayloadBidManager(
final Spec spec,
final ExecutionPayloadBidGossipValidator executionPayloadBidGossipValidator) {
this.spec = spec;
this.executionPayloadBidGossipValidator = executionPayloadBidGossipValidator;
}

// TODO-GLOAS: https://github.com/Consensys/teku/issues/9960 (not required for devnet-0)
@Override
@SuppressWarnings("FutureReturnValueIgnored")
public SafeFuture<InternalValidationResult> validateAndAddBid(
final SignedExecutionPayloadBid signedBid, final RemoteBidOrigin remoteBidOrigin) {
return SafeFuture.failedFuture(new UnsupportedOperationException("Not yet implemented"));
final SafeFuture<InternalValidationResult> validationResult =
executionPayloadBidGossipValidator.validate(signedBid);
validationResult.thenAccept(
result -> {
switch (result.code()) {
// TODO-GLOAS handle bids
case ACCEPT, REJECT, SAVE_FOR_FUTURE, IGNORE -> {}
}
});
return validationResult;
}

@Override
Expand Down
Loading
Loading