Skip to content

Commit caf58d7

Browse files
Add ExecutionLayerWithdrawalRequest for Electra (Consensys#8197)
Co-authored-by: Lucas Saldanha <[email protected]>
1 parent 92996d3 commit caf58d7

File tree

60 files changed

+684
-810
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+684
-810
lines changed

CHANGELOG.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ the [releases page](https://github.com/Consensys/teku/releases).
1616
- Added `peers_direction_current` libp2p metric to track the number of peers by direction (inbound and outbound).
1717
- Deposit tree snapshots will be loaded from database as a default unless custom snapshot has been provided.
1818
- Added hidden option `--Xdeposit-contract-logs-syncing-enabled` to allow disabling the syncing of the deposit contract logs from the EL. This is useful when running a non-validating node. It is advisable to be used alongside with `--Xeth1-missing-deposits-event-logging-enabled=false` to avoid unnecessary logging of missing deposits.
19-
- Updated the bootnodes for Chiado and Gnosis networks
19+
- Updated the bootnodes for Chiado and Gnosis networks.
2020
- Added hidden option `--Xp2p-dumps-to-file-enabled` to enable saving p2p dumps to file.
2121

2222
### Bug Fixes

data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/ExecutionLayerExit.json data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/ExecutionLayerWithdrawalRequest.json

+8-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
2-
"title" : "ExecutionLayerExit",
2+
"title" : "ExecutionLayerWithdrawalRequest",
33
"type" : "object",
4-
"required" : [ "source_address", "validator_pubkey" ],
4+
"required" : [ "source_address", "validator_pubkey", "amount" ],
55
"properties" : {
66
"source_address" : {
77
"type" : "string",
@@ -14,6 +14,12 @@
1414
"pattern" : "^0x[a-fA-F0-9]{2,}$",
1515
"description" : "Bytes48 hexadecimal",
1616
"format" : "bytes"
17+
},
18+
"amount" : {
19+
"type" : "string",
20+
"description" : "unsigned 64 bit integer",
21+
"example" : "1",
22+
"format" : "uint64"
1723
}
1824
}
1925
}

data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/ExecutionPayloadElectra.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"title" : "ExecutionPayloadElectra",
33
"type" : "object",
4-
"required" : [ "parent_hash", "fee_recipient", "state_root", "receipts_root", "logs_bloom", "prev_randao", "block_number", "gas_limit", "gas_used", "timestamp", "extra_data", "base_fee_per_gas", "block_hash", "transactions", "withdrawals", "blob_gas_used", "excess_blob_gas", "deposit_receipts", "exits" ],
4+
"required" : [ "parent_hash", "fee_recipient", "state_root", "receipts_root", "logs_bloom", "prev_randao", "block_number", "gas_limit", "gas_used", "timestamp", "extra_data", "base_fee_per_gas", "block_hash", "transactions", "withdrawals", "blob_gas_used", "excess_blob_gas", "deposit_receipts", "withdrawal_requests" ],
55
"properties" : {
66
"parent_hash" : {
77
"type" : "string",
@@ -114,10 +114,10 @@
114114
"$ref" : "#/components/schemas/DepositReceipt"
115115
}
116116
},
117-
"exits" : {
117+
"withdrawal_requests" : {
118118
"type" : "array",
119119
"items" : {
120-
"$ref" : "#/components/schemas/ExecutionLayerExit"
120+
"$ref" : "#/components/schemas/ExecutionLayerWithdrawalRequest"
121121
}
122122
}
123123
}

data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/ExecutionPayloadHeaderElectra.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"title" : "ExecutionPayloadHeaderElectra",
33
"type" : "object",
4-
"required" : [ "parent_hash", "fee_recipient", "state_root", "receipts_root", "logs_bloom", "prev_randao", "block_number", "gas_limit", "gas_used", "timestamp", "extra_data", "base_fee_per_gas", "block_hash", "transactions_root", "withdrawals_root", "blob_gas_used", "excess_blob_gas", "deposit_receipts_root", "exits_root" ],
4+
"required" : [ "parent_hash", "fee_recipient", "state_root", "receipts_root", "logs_bloom", "prev_randao", "block_number", "gas_limit", "gas_used", "timestamp", "extra_data", "base_fee_per_gas", "block_hash", "transactions_root", "withdrawals_root", "blob_gas_used", "excess_blob_gas", "deposit_receipts_root", "withdrawal_requests_root" ],
55
"properties" : {
66
"parent_hash" : {
77
"type" : "string",
@@ -111,7 +111,7 @@
111111
"example" : "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
112112
"format" : "byte"
113113
},
114-
"exits_root" : {
114+
"withdrawal_requests_root" : {
115115
"type" : "string",
116116
"description" : "Bytes32 hexadecimal",
117117
"example" : "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",

data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/v3/newBlindedBlockELECTRA.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@
216216
"blob_gas_used": "4476638188903342311",
217217
"excess_blob_gas": "4521255257228650249",
218218
"deposit_receipts_root": "0xc7dab83ea972daeec7b1385f04b22e210f708323c38b84160159653a163f259e",
219-
"exits_root": "0x8e77ca3ec98f3c20e7e802dd8917f1b9fc66866da0310ae878d59ae1871cfffd"
219+
"withdrawal_requests_root": "0x8e77ca3ec98f3c20e7e802dd8917f1b9fc66866da0310ae878d59ae1871cfffd"
220220
},
221221
"bls_to_execution_changes": [
222222
{

data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/v3/newBlockContentsELECTRA.json

+1-419
Large diffs are not rendered by default.

data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/ExecutionLayerExit.java data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/ExecutionLayerWithdrawalRequest.java

+22-12
Original file line numberDiff line numberDiff line change
@@ -16,33 +16,43 @@
1616
import com.fasterxml.jackson.annotation.JsonProperty;
1717
import tech.pegasys.teku.bls.BLSPublicKey;
1818
import tech.pegasys.teku.ethereum.execution.types.Eth1Address;
19-
import tech.pegasys.teku.spec.datastructures.execution.versions.electra.ExecutionLayerExitSchema;
19+
import tech.pegasys.teku.infrastructure.unsigned.UInt64;
20+
import tech.pegasys.teku.spec.datastructures.execution.versions.electra.ExecutionLayerWithdrawalRequestSchema;
2021

21-
public class ExecutionLayerExit {
22+
public class ExecutionLayerWithdrawalRequest {
2223

2324
@JsonProperty("source_address")
2425
private final Eth1Address sourceAddress;
2526

2627
@JsonProperty("validator_pubkey")
2728
private final BLSPublicKey validatorPublicKey;
2829

29-
public ExecutionLayerExit(
30+
@JsonProperty("amount")
31+
private final UInt64 amount;
32+
33+
public ExecutionLayerWithdrawalRequest(
3034
@JsonProperty("source_address") final Eth1Address sourceAddress,
31-
@JsonProperty("validator_pubkey") final BLSPublicKey validatorPublicKey) {
35+
@JsonProperty("validator_pubkey") final BLSPublicKey validatorPublicKey,
36+
@JsonProperty("amount") final UInt64 amount) {
3237
this.sourceAddress = sourceAddress;
3338
this.validatorPublicKey = validatorPublicKey;
39+
this.amount = amount;
3440
}
3541

36-
public ExecutionLayerExit(
37-
final tech.pegasys.teku.spec.datastructures.execution.versions.electra.ExecutionLayerExit
38-
executionLayerExit) {
42+
public ExecutionLayerWithdrawalRequest(
43+
final tech.pegasys.teku.spec.datastructures.execution.versions.electra
44+
.ExecutionLayerWithdrawalRequest
45+
executionLayerWithdrawalRequest) {
3946
this.sourceAddress =
40-
Eth1Address.fromBytes(executionLayerExit.getSourceAddress().getWrappedBytes());
41-
this.validatorPublicKey = executionLayerExit.getValidatorPublicKey();
47+
Eth1Address.fromBytes(executionLayerWithdrawalRequest.getSourceAddress().getWrappedBytes());
48+
this.validatorPublicKey = executionLayerWithdrawalRequest.getValidatorPublicKey();
49+
this.amount = executionLayerWithdrawalRequest.getAmount();
4250
}
4351

44-
public final tech.pegasys.teku.spec.datastructures.execution.versions.electra.ExecutionLayerExit
45-
asInternalExecutionLayerExit(final ExecutionLayerExitSchema schema) {
46-
return schema.create(sourceAddress, validatorPublicKey);
52+
public final tech.pegasys.teku.spec.datastructures.execution.versions.electra
53+
.ExecutionLayerWithdrawalRequest
54+
asInternalExecutionLayerWithdrawalRequest(
55+
final ExecutionLayerWithdrawalRequestSchema schema) {
56+
return schema.create(sourceAddress, validatorPublicKey, amount);
4757
}
4858
}

data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/ExecutionPayloadElectra.java

+13-11
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ public class ExecutionPayloadElectra extends ExecutionPayloadDeneb implements Ex
3333
@JsonProperty("deposit_receipts")
3434
public final List<DepositReceipt> depositReceipts;
3535

36-
@JsonProperty("exits")
37-
public final List<ExecutionLayerExit> exits;
36+
@JsonProperty("withdrawal_requests")
37+
public final List<ExecutionLayerWithdrawalRequest> withdrawalRequests;
3838

3939
@JsonCreator
4040
public ExecutionPayloadElectra(
@@ -56,7 +56,8 @@ public ExecutionPayloadElectra(
5656
@JsonProperty("blob_gas_used") final UInt64 blobGasUsed,
5757
@JsonProperty("excess_blob_gas") final UInt64 excessBlobGas,
5858
@JsonProperty("deposit_receipts") final List<DepositReceipt> depositReceipts,
59-
@JsonProperty("exits") final List<ExecutionLayerExit> exits) {
59+
@JsonProperty("withdrawal_requests")
60+
final List<ExecutionLayerWithdrawalRequest> withdrawalRequests) {
6061
super(
6162
parentHash,
6263
feeRecipient,
@@ -76,7 +77,7 @@ public ExecutionPayloadElectra(
7677
blobGasUsed,
7778
excessBlobGas);
7879
this.depositReceipts = depositReceipts;
79-
this.exits = exits;
80+
this.withdrawalRequests = withdrawalRequests;
8081
}
8182

8283
public ExecutionPayloadElectra(
@@ -86,9 +87,9 @@ public ExecutionPayloadElectra(
8687
executionPayload.toVersionElectra().orElseThrow().getDepositReceipts().stream()
8788
.map(DepositReceipt::new)
8889
.toList();
89-
this.exits =
90-
executionPayload.toVersionElectra().orElseThrow().getExits().stream()
91-
.map(ExecutionLayerExit::new)
90+
this.withdrawalRequests =
91+
executionPayload.toVersionElectra().orElseThrow().getWithdrawalRequests().stream()
92+
.map(ExecutionLayerWithdrawalRequest::new)
9293
.toList();
9394
}
9495

@@ -105,13 +106,14 @@ protected ExecutionPayloadBuilder applyToBuilder(
105106
depositReceipt.asInternalDepositReceipt(
106107
executionPayloadSchema.getDepositReceiptSchemaRequired()))
107108
.toList())
108-
.exits(
109+
.withdrawalRequests(
109110
() ->
110-
exits.stream()
111+
withdrawalRequests.stream()
111112
.map(
112113
exit ->
113-
exit.asInternalExecutionLayerExit(
114-
executionPayloadSchema.getExecutionLayerExitSchemaRequired()))
114+
exit.asInternalExecutionLayerWithdrawalRequest(
115+
executionPayloadSchema
116+
.getExecutionLayerWithdrawalRequestSchemaRequired()))
115117
.toList());
116118
}
117119

data/serializer/src/main/java/tech/pegasys/teku/api/schema/electra/ExecutionPayloadHeaderElectra.java

+7-6
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ public class ExecutionPayloadHeaderElectra extends ExecutionPayloadHeaderDeneb {
3030
@JsonProperty("deposit_receipts_root")
3131
public final Bytes32 depositReceiptsRoot;
3232

33-
@JsonProperty("exits_root")
34-
public final Bytes32 exitsRoot;
33+
@JsonProperty("withdrawal_requests_root")
34+
public final Bytes32 withdrawalRequestsRoot;
3535

3636
@JsonCreator
3737
public ExecutionPayloadHeaderElectra(
@@ -53,7 +53,7 @@ public ExecutionPayloadHeaderElectra(
5353
@JsonProperty("blob_gas_used") final UInt64 blobGasUsed,
5454
@JsonProperty("excess_blob_gas") final UInt64 excessBlobGas,
5555
@JsonProperty("deposit_receipts_root") final Bytes32 depositReceiptsRoot,
56-
@JsonProperty("exits_root") final Bytes32 exitsRoot) {
56+
@JsonProperty("withdrawal_requests_root") final Bytes32 withdrawalRequestsRoot) {
5757
super(
5858
parentHash,
5959
feeRecipient,
@@ -73,7 +73,7 @@ public ExecutionPayloadHeaderElectra(
7373
blobGasUsed,
7474
excessBlobGas);
7575
this.depositReceiptsRoot = depositReceiptsRoot;
76-
this.exitsRoot = exitsRoot;
76+
this.withdrawalRequestsRoot = withdrawalRequestsRoot;
7777
}
7878

7979
public ExecutionPayloadHeaderElectra(final ExecutionPayloadHeader executionPayloadHeader) {
@@ -97,7 +97,8 @@ public ExecutionPayloadHeaderElectra(final ExecutionPayloadHeader executionPaylo
9797
executionPayloadHeader.toVersionDeneb().orElseThrow().getExcessBlobGas());
9898
this.depositReceiptsRoot =
9999
executionPayloadHeader.toVersionElectra().orElseThrow().getDepositReceiptsRoot();
100-
this.exitsRoot = executionPayloadHeader.toVersionElectra().orElseThrow().getExitsRoot();
100+
this.withdrawalRequestsRoot =
101+
executionPayloadHeader.toVersionElectra().orElseThrow().getWithdrawalRequestsRoot();
101102
}
102103

103104
@Override
@@ -124,7 +125,7 @@ public ExecutionPayloadHeader asInternalExecutionPayloadHeader(
124125
.blobGasUsed(() -> blobGasUsed)
125126
.excessBlobGas(() -> excessBlobGas)
126127
.depositReceiptsRoot(() -> depositReceiptsRoot)
127-
.exitsRoot(() -> exitsRoot));
128+
.withdrawalRequestsRoot(() -> withdrawalRequestsRoot));
128129
}
129130

130131
@Override

eth-reference-tests/src/referenceTest/java/tech/pegasys/teku/reference/common/operations/DefaultOperationProcessor.java

+9-7
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.electra.BeaconBlockBodySchemaElectra;
2727
import tech.pegasys.teku.spec.datastructures.execution.ExecutionPayloadSummary;
2828
import tech.pegasys.teku.spec.datastructures.execution.versions.electra.DepositReceipt;
29-
import tech.pegasys.teku.spec.datastructures.execution.versions.electra.ExecutionLayerExit;
29+
import tech.pegasys.teku.spec.datastructures.execution.versions.electra.ExecutionLayerWithdrawalRequest;
3030
import tech.pegasys.teku.spec.datastructures.operations.Attestation;
3131
import tech.pegasys.teku.spec.datastructures.operations.AttesterSlashing;
3232
import tech.pegasys.teku.spec.datastructures.operations.Deposit;
@@ -154,19 +154,21 @@ public void processDepositReceipt(
154154
}
155155

156156
@Override
157-
public void processExecutionLayerExit(
158-
final MutableBeaconState state, final ExecutionLayerExit executionLayerExit)
157+
public void processExecutionLayerWithdrawalRequest(
158+
final MutableBeaconState state,
159+
final ExecutionLayerWithdrawalRequest executionLayerWithdrawalRequest)
159160
throws BlockProcessingException {
160-
final SszList<ExecutionLayerExit> exits =
161+
final SszList<ExecutionLayerWithdrawalRequest> withdrawalRequests =
161162
BeaconBlockBodySchemaElectra.required(beaconBlockBodySchema)
162163
.getExecutionPayloadSchema()
163-
.getExecutionLayerExitsSchemaRequired()
164-
.of(executionLayerExit);
164+
.getExecutionLayerWithdrawalRequestsSchemaRequired()
165+
.of(executionLayerWithdrawalRequest);
165166
final Supplier<ValidatorExitContext> validatorExitContextSupplier =
166167
spec.atSlot(state.getSlot())
167168
.beaconStateMutators()
168169
.createValidatorExitContextSupplier(state);
169170
spec.getBlockProcessor(state.getSlot())
170-
.processExecutionLayerExits(state, exits, validatorExitContextSupplier);
171+
.processExecutionLayerWithdrawalRequests(
172+
state, withdrawalRequests, validatorExitContextSupplier);
171173
}
172174
}

eth-reference-tests/src/referenceTest/java/tech/pegasys/teku/reference/common/operations/OperationProcessor.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.altair.SyncAggregate;
2020
import tech.pegasys.teku.spec.datastructures.execution.ExecutionPayloadSummary;
2121
import tech.pegasys.teku.spec.datastructures.execution.versions.electra.DepositReceipt;
22-
import tech.pegasys.teku.spec.datastructures.execution.versions.electra.ExecutionLayerExit;
22+
import tech.pegasys.teku.spec.datastructures.execution.versions.electra.ExecutionLayerWithdrawalRequest;
2323
import tech.pegasys.teku.spec.datastructures.operations.Attestation;
2424
import tech.pegasys.teku.spec.datastructures.operations.AttesterSlashing;
2525
import tech.pegasys.teku.spec.datastructures.operations.Deposit;
@@ -68,6 +68,7 @@ void processWithdrawals(MutableBeaconState state, ExecutionPayloadSummary payloa
6868
void processDepositReceipt(final MutableBeaconState state, final DepositReceipt depositReceipt)
6969
throws BlockProcessingException;
7070

71-
void processExecutionLayerExit(MutableBeaconState state, ExecutionLayerExit executionLayerExit)
71+
void processExecutionLayerWithdrawalRequest(
72+
MutableBeaconState state, ExecutionLayerWithdrawalRequest executionLayerWithdrawalRequest)
7273
throws BlockProcessingException;
7374
}

eth-reference-tests/src/referenceTest/java/tech/pegasys/teku/reference/common/operations/OperationsTestExecutor.java

+12-10
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
import tech.pegasys.teku.spec.datastructures.blocks.blockbody.versions.altair.SyncAggregate;
3636
import tech.pegasys.teku.spec.datastructures.execution.ExecutionPayload;
3737
import tech.pegasys.teku.spec.datastructures.execution.versions.electra.DepositReceipt;
38-
import tech.pegasys.teku.spec.datastructures.execution.versions.electra.ExecutionLayerExit;
38+
import tech.pegasys.teku.spec.datastructures.execution.versions.electra.ExecutionLayerWithdrawalRequest;
3939
import tech.pegasys.teku.spec.datastructures.operations.Attestation;
4040
import tech.pegasys.teku.spec.datastructures.operations.AttesterSlashing;
4141
import tech.pegasys.teku.spec.datastructures.operations.Deposit;
@@ -75,7 +75,7 @@ private enum Operation {
7575
BLS_TO_EXECUTION_CHANGE,
7676
WITHDRAWAL,
7777
DEPOSIT_RECEIPT,
78-
EXECUTION_LAYER_EXIT
78+
EXECUTION_LAYER_WITHDRAWAL_REQUEST
7979
}
8080

8181
public static final ImmutableMap<String, TestExecutor> OPERATIONS_TEST_TYPES =
@@ -120,9 +120,10 @@ private enum Operation {
120120
"operations/deposit_receipt",
121121
new OperationsTestExecutor<>("deposit_receipt.ssz_snappy", Operation.DEPOSIT_RECEIPT))
122122
.put(
123-
"operations/execution_layer_exit",
123+
"operations/execution_layer_withdrawal_request",
124124
new OperationsTestExecutor<>(
125-
"execution_layer_exit.ssz_snappy", Operation.EXECUTION_LAYER_EXIT))
125+
"execution_layer_withdrawal_request.ssz_snappy",
126+
Operation.EXECUTION_LAYER_WITHDRAWAL_REQUEST))
126127
.build();
127128

128129
private final String dataFileName;
@@ -310,7 +311,8 @@ private void processOperation(
310311
case BLS_TO_EXECUTION_CHANGE -> processBlsToExecutionChange(testDefinition, state, processor);
311312
case WITHDRAWAL -> processWithdrawal(testDefinition, state, processor);
312313
case DEPOSIT_RECEIPT -> processDepositReceipt(testDefinition, state, processor);
313-
case EXECUTION_LAYER_EXIT -> processExecutionLayerExit(testDefinition, state, processor);
314+
case EXECUTION_LAYER_WITHDRAWAL_REQUEST -> processExecutionLayerWithdrawalRequest(
315+
testDefinition, state, processor);
314316
default -> throw new UnsupportedOperationException(
315317
"Operation " + operation + " not implemented in OperationTestExecutor");
316318
}
@@ -348,14 +350,14 @@ private void processDepositReceipt(
348350
processor.processDepositReceipt(state, depositReceipt);
349351
}
350352

351-
private void processExecutionLayerExit(
353+
private void processExecutionLayerWithdrawalRequest(
352354
final TestDefinition testDefinition,
353355
final MutableBeaconState state,
354356
final OperationProcessor processor)
355357
throws BlockProcessingException {
356-
final ExecutionLayerExit executionLayerExit =
357-
loadSsz(testDefinition, dataFileName, ExecutionLayerExit.SSZ_SCHEMA);
358-
processor.processExecutionLayerExit(state, executionLayerExit);
358+
final ExecutionLayerWithdrawalRequest executionLayerWithdrawalRequest =
359+
loadSsz(testDefinition, dataFileName, ExecutionLayerWithdrawalRequest.SSZ_SCHEMA);
360+
processor.processExecutionLayerWithdrawalRequest(state, executionLayerWithdrawalRequest);
359361
}
360362

361363
private SignedVoluntaryExit loadVoluntaryExit(final TestDefinition testDefinition) {
@@ -422,7 +424,7 @@ public void checkBlockInclusionValidation(
422424
EXECUTION_PAYLOAD,
423425
WITHDRAWAL,
424426
DEPOSIT_RECEIPT,
425-
EXECUTION_LAYER_EXIT -> {}
427+
EXECUTION_LAYER_WITHDRAWAL_REQUEST -> {}
426428
}
427429
}
428430

ethereum/executionclient/src/integration-test/java/tech/pegasys/teku/ethereum/executionclient/web3j/Web3JExecutionEngineClientTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -347,9 +347,9 @@ public void newPayloadV4_shouldBuildRequestAndResponseSuccessfully() {
347347
assertThat(executionPayloadV4Parameter.get("depositReceipts"))
348348
.asInstanceOf(InstanceOfAssertFactories.LIST)
349349
.hasSameSizeAs(executionPayloadV4.depositReceipts);
350-
assertThat(executionPayloadV4Parameter.get("exits"))
350+
assertThat(executionPayloadV4Parameter.get("withdrawalRequests"))
351351
.asInstanceOf(InstanceOfAssertFactories.LIST)
352-
.hasSameSizeAs(executionPayloadV4.exits);
352+
.hasSameSizeAs(executionPayloadV4.withdrawalRequests);
353353
assertThat(((List<Object>) requestData.get("params")).get(1))
354354
.asInstanceOf(LIST)
355355
.containsExactlyElementsOf(

0 commit comments

Comments
 (0)