Skip to content

Commit

Permalink
Merge branch 'master' into 8672-rpc-return-types
Browse files Browse the repository at this point in the history
  • Loading branch information
mehdi-aouadi authored Oct 7, 2024
2 parents 33c8f60 + d2a4df6 commit 4019aaf
Show file tree
Hide file tree
Showing 11 changed files with 191 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,10 @@ public class SszTestExecutor<T extends SszData> implements TestExecutor {
new SszTestExecutor<>(
schemas ->
SchemaDefinitionsElectra.required(schemas).getPendingBalanceDepositSchema()))
.put(
"ssz_static/PendingDeposit",
new SszTestExecutor<>(
schemas -> SchemaDefinitionsElectra.required(schemas).getPendingDepositSchema()))
.put(
"ssz_static/PendingConsolidation",
new SszTestExecutor<>(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ static SpecConfigElectra required(final SpecConfig specConfig) {

UInt64 getMaxEffectiveBalanceElectra();

int getPendingBalanceDepositsLimit();
int getPendingDepositsLimit();

int getPendingPartialWithdrawalsLimit();

Expand All @@ -64,6 +64,8 @@ static SpecConfigElectra required(final SpecConfig specConfig) {

int getMaxPendingPartialsPerWithdrawalsSweep();

int getMaxPendingDepositsPerEpoch();

@Override
Optional<SpecConfigElectra> toVersionElectra();
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public class SpecConfigElectraImpl extends DelegatingSpecConfigDeneb implements

private final UInt64 minActivationBalance;
private final UInt64 maxEffectiveBalanceElectra;
private final int pendingBalanceDepositsLimit;
private final int pendingDepositsLimit;
private final int pendingPartialWithdrawalsLimit;
private final int pendingConsolidationsLimit;
private final int minSlashingPenaltyQuotientElectra;
Expand All @@ -38,6 +38,7 @@ public class SpecConfigElectraImpl extends DelegatingSpecConfigDeneb implements
private final int maxDepositRequestsPerPayload;
private final int maxWithdrawalRequestsPerPayload;
private final int maxPendingPartialsPerWithdrawalsSweep;
private final int maxPendingDepositsPerEpoch;

public SpecConfigElectraImpl(
final SpecConfigDeneb specConfig,
Expand All @@ -46,7 +47,7 @@ public SpecConfigElectraImpl(
final UInt64 minPerEpochChurnLimitElectra,
final UInt64 minActivationBalance,
final UInt64 maxEffectiveBalanceElectra,
final int pendingBalanceDepositsLimit,
final int pendingDepositsLimit,
final int pendingPartialWithdrawalsLimit,
final int pendingConsolidationsLimit,
final int minSlashingPenaltyQuotientElectra,
Expand All @@ -56,14 +57,15 @@ public SpecConfigElectraImpl(
final int maxConsolidationRequestsPerPayload,
final int maxDepositRequestsPerPayload,
final int maxWithdrawalRequestsPerPayload,
final int maxPendingPartialsPerWithdrawalsSweep) {
final int maxPendingPartialsPerWithdrawalsSweep,
final int maxPendingDepositsPerEpoch) {
super(specConfig);
this.electraForkVersion = electraForkVersion;
this.electraForkEpoch = electraForkEpoch;
this.minPerEpochChurnLimitElectra = minPerEpochChurnLimitElectra;
this.minActivationBalance = minActivationBalance;
this.maxEffectiveBalanceElectra = maxEffectiveBalanceElectra;
this.pendingBalanceDepositsLimit = pendingBalanceDepositsLimit;
this.pendingDepositsLimit = pendingDepositsLimit;
this.pendingPartialWithdrawalsLimit = pendingPartialWithdrawalsLimit;
this.pendingConsolidationsLimit = pendingConsolidationsLimit;
this.minSlashingPenaltyQuotientElectra = minSlashingPenaltyQuotientElectra;
Expand All @@ -74,6 +76,7 @@ public SpecConfigElectraImpl(
this.maxDepositRequestsPerPayload = maxDepositRequestsPerPayload;
this.maxWithdrawalRequestsPerPayload = maxWithdrawalRequestsPerPayload;
this.maxPendingPartialsPerWithdrawalsSweep = maxPendingPartialsPerWithdrawalsSweep;
this.maxPendingDepositsPerEpoch = maxPendingDepositsPerEpoch;
}

@Override
Expand Down Expand Up @@ -102,8 +105,8 @@ public UInt64 getMaxEffectiveBalanceElectra() {
}

@Override
public int getPendingBalanceDepositsLimit() {
return pendingBalanceDepositsLimit;
public int getPendingDepositsLimit() {
return pendingDepositsLimit;
}

@Override
Expand Down Expand Up @@ -156,6 +159,11 @@ public int getMaxPendingPartialsPerWithdrawalsSweep() {
return maxPendingPartialsPerWithdrawalsSweep;
}

@Override
public int getMaxPendingDepositsPerEpoch() {
return maxPendingDepositsPerEpoch;
}

@Override
public Optional<SpecConfigElectra> toVersionElectra() {
return Optional.of(this);
Expand All @@ -176,7 +184,7 @@ public boolean equals(final Object o) {
&& Objects.equals(minPerEpochChurnLimitElectra, that.minPerEpochChurnLimitElectra)
&& Objects.equals(minActivationBalance, that.minActivationBalance)
&& Objects.equals(maxEffectiveBalanceElectra, that.maxEffectiveBalanceElectra)
&& pendingBalanceDepositsLimit == that.pendingBalanceDepositsLimit
&& pendingDepositsLimit == that.pendingDepositsLimit
&& pendingPartialWithdrawalsLimit == that.pendingPartialWithdrawalsLimit
&& pendingConsolidationsLimit == that.pendingConsolidationsLimit
&& minSlashingPenaltyQuotientElectra == that.minSlashingPenaltyQuotientElectra
Expand All @@ -186,7 +194,8 @@ public boolean equals(final Object o) {
&& maxConsolidationRequestsPerPayload == that.maxConsolidationRequestsPerPayload
&& maxDepositRequestsPerPayload == that.maxDepositRequestsPerPayload
&& maxWithdrawalRequestsPerPayload == that.maxWithdrawalRequestsPerPayload
&& maxPendingPartialsPerWithdrawalsSweep == that.maxPendingPartialsPerWithdrawalsSweep;
&& maxPendingPartialsPerWithdrawalsSweep == that.maxPendingPartialsPerWithdrawalsSweep
&& maxPendingDepositsPerEpoch == that.maxPendingDepositsPerEpoch;
}

@Override
Expand All @@ -198,7 +207,7 @@ public int hashCode() {
minPerEpochChurnLimitElectra,
minActivationBalance,
maxEffectiveBalanceElectra,
pendingBalanceDepositsLimit,
pendingDepositsLimit,
pendingPartialWithdrawalsLimit,
pendingConsolidationsLimit,
minSlashingPenaltyQuotientElectra,
Expand All @@ -208,6 +217,7 @@ public int hashCode() {
maxConsolidationRequestsPerPayload,
maxDepositRequestsPerPayload,
maxWithdrawalRequestsPerPayload,
maxPendingPartialsPerWithdrawalsSweep);
maxPendingPartialsPerWithdrawalsSweep,
maxPendingDepositsPerEpoch);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public class ElectraBuilder implements ForkConfigBuilder<SpecConfigDeneb, SpecCo
private UInt64 minPerEpochChurnLimitElectra;
private UInt64 minActivationBalance;
private UInt64 maxEffectiveBalanceElectra;
private Integer pendingBalanceDepositsLimit;
private Integer pendingDepositsLimit;
private Integer pendingPartialWithdrawalsLimit;
private Integer pendingConsolidationsLimit;
private Integer minSlashingPenaltyQuotientElectra;
Expand All @@ -45,6 +45,7 @@ public class ElectraBuilder implements ForkConfigBuilder<SpecConfigDeneb, SpecCo
private Integer maxDepositRequestsPerPayload;
private Integer maxWithdrawalRequestsPerPayload;
private Integer maxPendingPartialsPerWithdrawalsSweep;
private Integer maxPendingDepositsPerEpoch;

ElectraBuilder() {}

Expand All @@ -57,7 +58,7 @@ public SpecConfigElectra build(final SpecConfigDeneb specConfig) {
minPerEpochChurnLimitElectra,
minActivationBalance,
maxEffectiveBalanceElectra,
pendingBalanceDepositsLimit,
pendingDepositsLimit,
pendingPartialWithdrawalsLimit,
pendingConsolidationsLimit,
minSlashingPenaltyQuotientElectra,
Expand All @@ -67,7 +68,8 @@ public SpecConfigElectra build(final SpecConfigDeneb specConfig) {
maxConsolidationRequestsPerPayload,
maxDepositRequestsPerPayload,
maxWithdrawalRequestsPerPayload,
maxPendingPartialsPerWithdrawalsSweep);
maxPendingPartialsPerWithdrawalsSweep,
maxPendingDepositsPerEpoch);
}

public ElectraBuilder electraForkEpoch(final UInt64 electraForkEpoch) {
Expand Down Expand Up @@ -100,9 +102,9 @@ public ElectraBuilder maxEffectiveBalanceElectra(final UInt64 maxEffectiveBalanc
return this;
}

public ElectraBuilder pendingBalanceDepositsLimit(final Integer pendingBalanceDepositsLimit) {
checkNotNull(pendingBalanceDepositsLimit);
this.pendingBalanceDepositsLimit = pendingBalanceDepositsLimit;
public ElectraBuilder pendingDepositsLimit(final Integer pendingDepositsLimit) {
checkNotNull(pendingDepositsLimit);
this.pendingDepositsLimit = pendingDepositsLimit;
return this;
}

Expand Down Expand Up @@ -172,6 +174,12 @@ public ElectraBuilder maxPendingPartialsPerWithdrawalsSweep(
return this;
}

public ElectraBuilder maxPendingDepositsPerEpoch(final Integer maxPendingDepositsPerEpoch) {
checkNotNull(maxPendingDepositsPerEpoch);
this.maxPendingDepositsPerEpoch = maxPendingDepositsPerEpoch;
return this;
}

@Override
public void validate() {
if (electraForkEpoch == null) {
Expand All @@ -196,7 +204,7 @@ public Map<String, Object> getValidationMap() {
constants.put("minPerEpochChurnLimitElectra", minPerEpochChurnLimitElectra);
constants.put("minActivationBalance", minActivationBalance);
constants.put("maxEffectiveBalanceElectra", maxEffectiveBalanceElectra);
constants.put("pendingBalanceDepositsLimit", pendingBalanceDepositsLimit);
constants.put("pendingDepositsLimit", pendingDepositsLimit);
constants.put("pendingPartialWithdrawalsLimit", pendingPartialWithdrawalsLimit);
constants.put("pendingConsolidationsLimit", pendingConsolidationsLimit);
constants.put("minSlashingPenaltyQuotientElectra", minSlashingPenaltyQuotientElectra);
Expand All @@ -207,6 +215,7 @@ public Map<String, Object> getValidationMap() {
constants.put("maxDepositRequestsPerPayload", maxDepositRequestsPerPayload);
constants.put("maxWithdrawalRequestsPerPayload", maxWithdrawalRequestsPerPayload);
constants.put("maxPendingPartialsPerWithdrawalsSweep", maxPendingPartialsPerWithdrawalsSweep);
constants.put("maxPendingDepositsPerEpoch", maxPendingDepositsPerEpoch);

return constants;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,8 +128,7 @@ private static List<SszField> getUniqueFields(final SpecConfig specConfig) {
BeaconStateFields.PENDING_BALANCE_DEPOSITS,
() ->
SszListSchema.create(
pendingBalanceDepositSchema,
specConfigElectra.getPendingBalanceDepositsLimit()));
pendingBalanceDepositSchema, specConfigElectra.getPendingDepositsLimit()));
final SszField pendingPartialWithdrawalsField =
new SszField(
PENDING_PARTIAL_WITHDRAWALS_INDEX,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
/*
* Copyright Consensys Software Inc., 2024
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*/

package tech.pegasys.teku.spec.datastructures.state.versions.electra;

import org.apache.tuweni.bytes.Bytes32;
import tech.pegasys.teku.bls.BLSPublicKey;
import tech.pegasys.teku.bls.BLSSignature;
import tech.pegasys.teku.infrastructure.ssz.containers.Container5;
import tech.pegasys.teku.infrastructure.ssz.containers.ContainerSchema5;
import tech.pegasys.teku.infrastructure.ssz.primitive.SszBytes32;
import tech.pegasys.teku.infrastructure.ssz.primitive.SszUInt64;
import tech.pegasys.teku.infrastructure.ssz.schema.SszPrimitiveSchemas;
import tech.pegasys.teku.infrastructure.ssz.tree.TreeNode;
import tech.pegasys.teku.infrastructure.unsigned.UInt64;
import tech.pegasys.teku.spec.datastructures.type.SszPublicKey;
import tech.pegasys.teku.spec.datastructures.type.SszPublicKeySchema;
import tech.pegasys.teku.spec.datastructures.type.SszSignature;
import tech.pegasys.teku.spec.datastructures.type.SszSignatureSchema;

public class PendingDeposit
extends Container5<
PendingDeposit, SszPublicKey, SszBytes32, SszUInt64, SszSignature, SszUInt64> {

public static class PendingDepositSchema
extends ContainerSchema5<
PendingDeposit, SszPublicKey, SszBytes32, SszUInt64, SszSignature, SszUInt64> {

public PendingDepositSchema() {
super(
"PendingDeposit",
namedSchema("pubkey", SszPublicKeySchema.INSTANCE),
namedSchema("withdrawal_credentials", SszPrimitiveSchemas.BYTES32_SCHEMA),
namedSchema("amount", SszPrimitiveSchemas.UINT64_SCHEMA),
namedSchema("signature", SszSignatureSchema.INSTANCE),
namedSchema("slot", SszPrimitiveSchemas.UINT64_SCHEMA));
}

@Override
public PendingDeposit createFromBackingNode(final TreeNode node) {
return new PendingDeposit(this, node);
}

public PendingDeposit create(
final SszPublicKey publicKey,
final SszBytes32 withdrawalCredentials,
final SszUInt64 amount,
final SszSignature signature,
final SszUInt64 slot) {
return new PendingDeposit(this, publicKey, withdrawalCredentials, amount, signature, slot);
}

public SszPublicKey getPublicKeySchema() {
return (SszPublicKey) getFieldSchema0();
}

public SszBytes32 getWithdrawalCredentialsSchema() {
return (SszBytes32) getFieldSchema1();
}

public SszUInt64 getAmountSchema() {
return (SszUInt64) getFieldSchema2();
}

public SszSignatureSchema getSignatureSchema() {
return (SszSignatureSchema) getFieldSchema3();
}

public SszUInt64 getSlotSchema() {
return (SszUInt64) getFieldSchema4();
}
}

private PendingDeposit(final PendingDepositSchema type, final TreeNode backingNode) {
super(type, backingNode);
}

private PendingDeposit(
final PendingDepositSchema type,
final SszPublicKey publicKey,
final SszBytes32 withdrawalCredentials,
final SszUInt64 amount,
final SszSignature signature,
final SszUInt64 slot) {
super(type, publicKey, withdrawalCredentials, amount, signature, slot);
}

public BLSPublicKey getPublicKey() {
return ((SszPublicKey) get(0)).getBLSPublicKey();
}

public Bytes32 getWithdrawalCredentials() {
return ((SszBytes32) get(1)).get();
}

public UInt64 getAmount() {
return ((SszUInt64) get(2)).get();
}

public BLSSignature getSignature() {
return ((SszSignature) get(3)).getSignature();
}

public UInt64 getSlot() {
return ((SszUInt64) get(4)).get();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@
import tech.pegasys.teku.spec.datastructures.state.beaconstate.versions.electra.MutableBeaconStateElectra;
import tech.pegasys.teku.spec.datastructures.state.versions.electra.PendingBalanceDeposit;
import tech.pegasys.teku.spec.datastructures.state.versions.electra.PendingConsolidation;
import tech.pegasys.teku.spec.datastructures.state.versions.electra.PendingDeposit;
import tech.pegasys.teku.spec.datastructures.state.versions.electra.PendingPartialWithdrawal;
import tech.pegasys.teku.spec.schemas.registry.SchemaRegistry;

Expand Down Expand Up @@ -97,6 +98,7 @@ public class SchemaDefinitionsElectra extends SchemaDefinitionsDeneb {
private final ConsolidationRequestSchema consolidationRequestSchema;

private final PendingBalanceDeposit.PendingBalanceDepositSchema pendingBalanceDepositSchema;
private final PendingDeposit.PendingDepositSchema pendingDepositSchema;

private final PendingPartialWithdrawal.PendingPartialWithdrawalSchema
pendingPartialWithdrawalSchema;
Expand Down Expand Up @@ -170,6 +172,7 @@ public SchemaDefinitionsElectra(final SchemaRegistry schemaRegistry) {
this.withdrawalRequestSchema = WithdrawalRequest.SSZ_SCHEMA;
this.consolidationRequestSchema = ConsolidationRequest.SSZ_SCHEMA;
this.pendingBalanceDepositSchema = new PendingBalanceDeposit.PendingBalanceDepositSchema();
this.pendingDepositSchema = new PendingDeposit.PendingDepositSchema();
this.pendingPartialWithdrawalSchema =
new PendingPartialWithdrawal.PendingPartialWithdrawalSchema();
this.pendingConsolidationSchema = new PendingConsolidation.PendingConsolidationSchema();
Expand Down Expand Up @@ -321,6 +324,10 @@ public PendingBalanceDeposit.PendingBalanceDepositSchema getPendingBalanceDeposi
return pendingBalanceDepositSchema;
}

public PendingDeposit.PendingDepositSchema getPendingDepositSchema() {
return pendingDepositSchema;
}

public SszListSchema<PendingBalanceDeposit, ?> getPendingBalanceDepositsSchema() {
return beaconStateSchema.getPendingBalanceDepositsSchema();
}
Expand Down
Loading

0 comments on commit 4019aaf

Please sign in to comment.