Merge pull request #3791 from prestonvanloon/rename-executionlayer-objs
Electra: Rename objects with prefix ExecutionLayerXXX
This commit is contained in:
commit
e53c10edb0
|
@ -27,8 +27,8 @@
|
|||
- [`DepositRequest`](#depositrequest)
|
||||
- [`PendingBalanceDeposit`](#pendingbalancedeposit)
|
||||
- [`PendingPartialWithdrawal`](#pendingpartialwithdrawal)
|
||||
- [`ExecutionLayerWithdrawalRequest`](#executionlayerwithdrawalrequest)
|
||||
- [`ExecutionLayerConsolidationRequest`](#executionlayerconsolidationrequest)
|
||||
- [`WithdrawalRequest`](#withdrawalrequest)
|
||||
- [`ConsolidationRequest`](#consolidationrequest)
|
||||
- [`PendingConsolidation`](#pendingconsolidation)
|
||||
- [Modified Containers](#modified-containers)
|
||||
- [`AttesterSlashing`](#attesterslashing)
|
||||
|
@ -91,11 +91,11 @@
|
|||
- [Voluntary exits](#voluntary-exits)
|
||||
- [Updated `process_voluntary_exit`](#updated-process_voluntary_exit)
|
||||
- [Execution layer withdrawal requests](#execution-layer-withdrawal-requests)
|
||||
- [New `process_execution_layer_withdrawal_request`](#new-process_execution_layer_withdrawal_request)
|
||||
- [New `process_withdrawal_request`](#new-process_withdrawal_request)
|
||||
- [Deposit requests](#deposit-requests)
|
||||
- [New `process_deposit_request`](#new-process_deposit_request)
|
||||
- [Execution layer consolidation requests](#execution-layer-consolidation-requests)
|
||||
- [New `process_execution_layer_consolidation_request`](#new-process_execution_layer_consolidation_request)
|
||||
- [New `process_consolidation_request`](#new-process_consolidation_request)
|
||||
- [Testing](#testing)
|
||||
|
||||
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
|
||||
|
@ -227,23 +227,23 @@ class PendingPartialWithdrawal(Container):
|
|||
amount: Gwei
|
||||
withdrawable_epoch: Epoch
|
||||
```
|
||||
#### `ExecutionLayerWithdrawalRequest`
|
||||
#### `WithdrawalRequest`
|
||||
|
||||
*Note*: The container is new in EIP7251:EIP7002.
|
||||
|
||||
```python
|
||||
class ExecutionLayerWithdrawalRequest(Container):
|
||||
class WithdrawalRequest(Container):
|
||||
source_address: ExecutionAddress
|
||||
validator_pubkey: BLSPubkey
|
||||
amount: Gwei
|
||||
```
|
||||
|
||||
#### `ExecutionLayerConsolidationRequest`
|
||||
#### `ConsolidationRequest`
|
||||
|
||||
*Note*: The container is new in EIP7251.
|
||||
|
||||
```python
|
||||
class ExecutionLayerConsolidationRequest(Container):
|
||||
class ConsolidationRequest(Container):
|
||||
source_address: ExecutionAddress
|
||||
source_pubkey: BLSPubkey
|
||||
target_pubkey: BLSPubkey
|
||||
|
@ -336,9 +336,9 @@ class ExecutionPayload(Container):
|
|||
excess_blob_gas: uint64
|
||||
deposit_requests: List[DepositRequest, MAX_DEPOSIT_REQUESTS_PER_PAYLOAD] # [New in Electra:EIP6110]
|
||||
# [New in Electra:EIP7002:EIP7251]
|
||||
withdrawal_requests: List[ExecutionLayerWithdrawalRequest, MAX_WITHDRAWAL_REQUESTS_PER_PAYLOAD]
|
||||
withdrawal_requests: List[WithdrawalRequest, MAX_WITHDRAWAL_REQUESTS_PER_PAYLOAD]
|
||||
# [New in Electra:EIP7251]
|
||||
consolidation_requests: List[ExecutionLayerConsolidationRequest, MAX_CONSOLIDATION_REQUESTS_PER_PAYLOAD]
|
||||
consolidation_requests: List[ConsolidationRequest, MAX_CONSOLIDATION_REQUESTS_PER_PAYLOAD]
|
||||
```
|
||||
|
||||
#### `ExecutionPayloadHeader`
|
||||
|
@ -1075,9 +1075,9 @@ def process_operations(state: BeaconState, body: BeaconBlockBody) -> None:
|
|||
for_ops(body.bls_to_execution_changes, process_bls_to_execution_change)
|
||||
for_ops(body.execution_payload.deposit_requests, process_deposit_request) # [New in Electra:EIP6110]
|
||||
# [New in Electra:EIP7002:EIP7251]
|
||||
for_ops(body.execution_payload.withdrawal_requests, process_execution_layer_withdrawal_request)
|
||||
for_ops(body.execution_payload.withdrawal_requests, process_withdrawal_request)
|
||||
# [New in Electra:EIP7251]
|
||||
for_ops(body.execution_payload.consolidation_requests, process_execution_layer_consolidation_request)
|
||||
for_ops(body.execution_payload.consolidation_requests, process_consolidation_request)
|
||||
```
|
||||
|
||||
##### Attestations
|
||||
|
@ -1236,16 +1236,16 @@ def process_voluntary_exit(state: BeaconState, signed_voluntary_exit: SignedVolu
|
|||
|
||||
##### Execution layer withdrawal requests
|
||||
|
||||
###### New `process_execution_layer_withdrawal_request`
|
||||
###### New `process_withdrawal_request`
|
||||
|
||||
*Note*: This function is new in Electra following EIP-7002 and EIP-7251.
|
||||
|
||||
```python
|
||||
def process_execution_layer_withdrawal_request(
|
||||
def process_withdrawal_request(
|
||||
state: BeaconState,
|
||||
execution_layer_withdrawal_request: ExecutionLayerWithdrawalRequest
|
||||
withdrawal_request: WithdrawalRequest
|
||||
) -> None:
|
||||
amount = execution_layer_withdrawal_request.amount
|
||||
amount = withdrawal_request.amount
|
||||
is_full_exit_request = amount == FULL_EXIT_REQUEST_AMOUNT
|
||||
|
||||
# If partial withdrawal queue is full, only full exits are processed
|
||||
|
@ -1254,7 +1254,7 @@ def process_execution_layer_withdrawal_request(
|
|||
|
||||
validator_pubkeys = [v.pubkey for v in state.validators]
|
||||
# Verify pubkey exists
|
||||
request_pubkey = execution_layer_withdrawal_request.validator_pubkey
|
||||
request_pubkey = withdrawal_request.validator_pubkey
|
||||
if request_pubkey not in validator_pubkeys:
|
||||
return
|
||||
index = ValidatorIndex(validator_pubkeys.index(request_pubkey))
|
||||
|
@ -1263,7 +1263,7 @@ def process_execution_layer_withdrawal_request(
|
|||
# Verify withdrawal credentials
|
||||
has_correct_credential = has_execution_withdrawal_credential(validator)
|
||||
is_correct_source_address = (
|
||||
validator.withdrawal_credentials[12:] == execution_layer_withdrawal_request.source_address
|
||||
validator.withdrawal_credentials[12:] == withdrawal_request.source_address
|
||||
)
|
||||
if not (has_correct_credential and is_correct_source_address):
|
||||
return
|
||||
|
@ -1326,12 +1326,12 @@ def process_deposit_request(state: BeaconState, deposit_request: DepositRequest)
|
|||
|
||||
##### Execution layer consolidation requests
|
||||
|
||||
###### New `process_execution_layer_consolidation_request`
|
||||
###### New `process_consolidation_request`
|
||||
|
||||
```python
|
||||
def process_execution_layer_consolidation_request(
|
||||
def process_consolidation_request(
|
||||
state: BeaconState,
|
||||
execution_layer_consolidation_request: ExecutionLayerConsolidationRequest
|
||||
consolidation_request: ConsolidationRequest
|
||||
) -> None:
|
||||
# If the pending consolidations queue is full, consolidation requests are ignored
|
||||
if len(state.pending_consolidations) == PENDING_CONSOLIDATIONS_LIMIT:
|
||||
|
@ -1342,8 +1342,8 @@ def process_execution_layer_consolidation_request(
|
|||
|
||||
validator_pubkeys = [v.pubkey for v in state.validators]
|
||||
# Verify pubkeys exists
|
||||
request_source_pubkey = execution_layer_consolidation_request.source_pubkey
|
||||
request_target_pubkey = execution_layer_consolidation_request.target_pubkey
|
||||
request_source_pubkey = consolidation_request.source_pubkey
|
||||
request_target_pubkey = consolidation_request.target_pubkey
|
||||
if request_source_pubkey not in validator_pubkeys:
|
||||
return
|
||||
if request_target_pubkey not in validator_pubkeys:
|
||||
|
@ -1360,7 +1360,7 @@ def process_execution_layer_consolidation_request(
|
|||
# Verify source withdrawal credentials
|
||||
has_correct_credential = has_execution_withdrawal_credential(source_validator)
|
||||
is_correct_source_address = (
|
||||
source_validator.withdrawal_credentials[12:] == execution_layer_consolidation_request.source_address
|
||||
source_validator.withdrawal_credentials[12:] == consolidation_request.source_address
|
||||
)
|
||||
if not (has_correct_credential and is_correct_source_address):
|
||||
return
|
||||
|
|
|
@ -39,7 +39,7 @@ def test_basic_consolidation_in_current_consolidation_epoch(spec, state):
|
|||
spec, state, source_index, address=source_address
|
||||
)
|
||||
# Make consolidation with source address
|
||||
consolidation = spec.ExecutionLayerConsolidationRequest(
|
||||
consolidation = spec.ConsolidationRequest(
|
||||
source_address=source_address,
|
||||
source_pubkey=state.validators[source_index].pubkey,
|
||||
target_pubkey=state.validators[target_index].pubkey,
|
||||
|
@ -88,7 +88,7 @@ def test_basic_consolidation_in_new_consolidation_epoch(spec, state):
|
|||
spec, state, source_index, address=source_address
|
||||
)
|
||||
# Make consolidation with source address
|
||||
consolidation = spec.ExecutionLayerConsolidationRequest(
|
||||
consolidation = spec.ConsolidationRequest(
|
||||
source_address=source_address,
|
||||
source_pubkey=state.validators[source_index].pubkey,
|
||||
target_pubkey=state.validators[target_index].pubkey,
|
||||
|
@ -131,7 +131,7 @@ def test_basic_consolidation_with_preexisting_churn(spec, state):
|
|||
spec, state, source_index, address=source_address
|
||||
)
|
||||
# Make consolidation with source address
|
||||
consolidation = spec.ExecutionLayerConsolidationRequest(
|
||||
consolidation = spec.ConsolidationRequest(
|
||||
source_address=source_address,
|
||||
source_pubkey=state.validators[source_index].pubkey,
|
||||
target_pubkey=state.validators[target_index].pubkey,
|
||||
|
@ -178,7 +178,7 @@ def test_basic_consolidation_with_insufficient_preexisting_churn(spec, state):
|
|||
spec, state, source_index, address=source_address
|
||||
)
|
||||
# Make consolidation with source address
|
||||
consolidation = spec.ExecutionLayerConsolidationRequest(
|
||||
consolidation = spec.ConsolidationRequest(
|
||||
source_address=source_address,
|
||||
source_pubkey=state.validators[source_index].pubkey,
|
||||
target_pubkey=state.validators[target_index].pubkey,
|
||||
|
@ -229,7 +229,7 @@ def test_basic_consolidation_with_compounding_credentials(spec, state):
|
|||
spec, state, source_index, address=source_address
|
||||
)
|
||||
# Make consolidation with source address
|
||||
consolidation = spec.ExecutionLayerConsolidationRequest(
|
||||
consolidation = spec.ConsolidationRequest(
|
||||
source_address=source_address,
|
||||
source_pubkey=state.validators[source_index].pubkey,
|
||||
target_pubkey=state.validators[target_index].pubkey,
|
||||
|
@ -274,7 +274,7 @@ def test_consolidation_churn_limit_balance(spec, state):
|
|||
spec, state, source_index, address=source_address
|
||||
)
|
||||
# Make consolidation with source address
|
||||
consolidation = spec.ExecutionLayerConsolidationRequest(
|
||||
consolidation = spec.ConsolidationRequest(
|
||||
source_address=source_address,
|
||||
source_pubkey=state.validators[source_index].pubkey,
|
||||
target_pubkey=state.validators[target_index].pubkey,
|
||||
|
@ -322,7 +322,7 @@ def test_consolidation_balance_larger_than_churn_limit(spec, state):
|
|||
spec, state, source_index, address=source_address
|
||||
)
|
||||
# Make consolidation with source address
|
||||
consolidation = spec.ExecutionLayerConsolidationRequest(
|
||||
consolidation = spec.ConsolidationRequest(
|
||||
source_address=source_address,
|
||||
source_pubkey=state.validators[source_index].pubkey,
|
||||
target_pubkey=state.validators[target_index].pubkey,
|
||||
|
@ -369,7 +369,7 @@ def test_consolidation_balance_through_two_churn_epochs(spec, state):
|
|||
spec, state, source_index, address=source_address
|
||||
)
|
||||
# Make consolidation with source address
|
||||
consolidation = spec.ExecutionLayerConsolidationRequest(
|
||||
consolidation = spec.ConsolidationRequest(
|
||||
source_address=source_address,
|
||||
source_pubkey=state.validators[source_index].pubkey,
|
||||
target_pubkey=state.validators[target_index].pubkey,
|
||||
|
@ -415,7 +415,7 @@ def test_incorrect_source_equals_target(spec, state):
|
|||
spec, state, source_index, address=source_address
|
||||
)
|
||||
# Make consolidation from source to source
|
||||
consolidation = spec.ExecutionLayerConsolidationRequest(
|
||||
consolidation = spec.ConsolidationRequest(
|
||||
source_address=source_address,
|
||||
source_pubkey=state.validators[source_index].pubkey,
|
||||
target_pubkey=state.validators[source_index].pubkey,
|
||||
|
@ -447,7 +447,7 @@ def test_incorrect_exceed_pending_consolidations_limit(spec, state):
|
|||
set_eth1_withdrawal_credential_with_balance(
|
||||
spec, state, source_index, address=source_address
|
||||
)
|
||||
consolidation = spec.ExecutionLayerConsolidationRequest(
|
||||
consolidation = spec.ConsolidationRequest(
|
||||
source_address=source_address,
|
||||
source_pubkey=state.validators[source_index].pubkey,
|
||||
target_pubkey=state.validators[target_index].pubkey,
|
||||
|
@ -476,7 +476,7 @@ def test_incorrect_not_enough_consolidation_churn_available(spec, state):
|
|||
set_eth1_withdrawal_credential_with_balance(
|
||||
spec, state, source_index, address=source_address
|
||||
)
|
||||
consolidation = spec.ExecutionLayerConsolidationRequest(
|
||||
consolidation = spec.ConsolidationRequest(
|
||||
source_address=source_address,
|
||||
source_pubkey=state.validators[source_index].pubkey,
|
||||
target_pubkey=state.validators[target_index].pubkey,
|
||||
|
@ -504,7 +504,7 @@ def test_incorrect_exited_source(spec, state):
|
|||
set_eth1_withdrawal_credential_with_balance(
|
||||
spec, state, source_index, address=source_address
|
||||
)
|
||||
consolidation = spec.ExecutionLayerConsolidationRequest(
|
||||
consolidation = spec.ConsolidationRequest(
|
||||
source_address=source_address,
|
||||
source_pubkey=state.validators[source_index].pubkey,
|
||||
target_pubkey=state.validators[target_index].pubkey,
|
||||
|
@ -536,7 +536,7 @@ def test_incorrect_exited_target(spec, state):
|
|||
set_eth1_withdrawal_credential_with_balance(
|
||||
spec, state, source_index, address=source_address
|
||||
)
|
||||
consolidation = spec.ExecutionLayerConsolidationRequest(
|
||||
consolidation = spec.ConsolidationRequest(
|
||||
source_address=source_address,
|
||||
source_pubkey=state.validators[source_index].pubkey,
|
||||
target_pubkey=state.validators[target_index].pubkey,
|
||||
|
@ -566,7 +566,7 @@ def test_incorrect_inactive_source(spec, state):
|
|||
set_eth1_withdrawal_credential_with_balance(
|
||||
spec, state, source_index, address=source_address
|
||||
)
|
||||
consolidation = spec.ExecutionLayerConsolidationRequest(
|
||||
consolidation = spec.ConsolidationRequest(
|
||||
source_address=source_address,
|
||||
source_pubkey=state.validators[source_index].pubkey,
|
||||
target_pubkey=state.validators[target_index].pubkey,
|
||||
|
@ -598,7 +598,7 @@ def test_incorrect_inactive_target(spec, state):
|
|||
set_eth1_withdrawal_credential_with_balance(
|
||||
spec, state, source_index, address=source_address
|
||||
)
|
||||
consolidation = spec.ExecutionLayerConsolidationRequest(
|
||||
consolidation = spec.ConsolidationRequest(
|
||||
source_address=source_address,
|
||||
source_pubkey=state.validators[source_index].pubkey,
|
||||
target_pubkey=state.validators[target_index].pubkey,
|
||||
|
@ -627,7 +627,7 @@ def test_incorrect_no_source_execution_withdrawal_credential(spec, state):
|
|||
source_index = spec.get_active_validator_indices(state, current_epoch)[0]
|
||||
target_index = spec.get_active_validator_indices(state, current_epoch)[1]
|
||||
source_address = b"\x22" * 20
|
||||
consolidation = spec.ExecutionLayerConsolidationRequest(
|
||||
consolidation = spec.ConsolidationRequest(
|
||||
source_address=source_address,
|
||||
source_pubkey=state.validators[source_index].pubkey,
|
||||
target_pubkey=state.validators[target_index].pubkey,
|
||||
|
@ -656,7 +656,7 @@ def test_incorrect_no_target_execution_withdrawal_credential(spec, state):
|
|||
set_eth1_withdrawal_credential_with_balance(
|
||||
spec, state, source_index, address=source_address
|
||||
)
|
||||
consolidation = spec.ExecutionLayerConsolidationRequest(
|
||||
consolidation = spec.ConsolidationRequest(
|
||||
source_address=source_address,
|
||||
source_pubkey=state.validators[source_index].pubkey,
|
||||
target_pubkey=state.validators[target_index].pubkey,
|
||||
|
@ -684,7 +684,7 @@ def test_incorrect_incorrect_source_address(spec, state):
|
|||
spec, state, source_index, address=source_address
|
||||
)
|
||||
# Make consolidation with different source address
|
||||
consolidation = spec.ExecutionLayerConsolidationRequest(
|
||||
consolidation = spec.ConsolidationRequest(
|
||||
source_address=b"\x33" * 20,
|
||||
source_pubkey=state.validators[source_index].pubkey,
|
||||
target_pubkey=state.validators[target_index].pubkey,
|
||||
|
@ -714,7 +714,7 @@ def test_incorrect_unknown_source_pubkey(spec, state):
|
|||
spec, state, source_index, address=source_address
|
||||
)
|
||||
# Make consolidation with different source pubkey
|
||||
consolidation = spec.ExecutionLayerConsolidationRequest(
|
||||
consolidation = spec.ConsolidationRequest(
|
||||
source_address=source_address,
|
||||
source_pubkey=b"\x00" * 48,
|
||||
target_pubkey=state.validators[target_index].pubkey,
|
||||
|
@ -744,7 +744,7 @@ def test_incorrect_unknown_target_pubkey(spec, state):
|
|||
spec, state, source_index, address=source_address
|
||||
)
|
||||
# Make consolidation with different target pubkey
|
||||
consolidation = spec.ExecutionLayerConsolidationRequest(
|
||||
consolidation = spec.ConsolidationRequest(
|
||||
source_address=b"\x33" * 20,
|
||||
source_pubkey=state.validators[source_index].pubkey,
|
||||
target_pubkey=b"\x00" * 48,
|
||||
|
@ -760,7 +760,7 @@ def run_consolidation_processing(spec, state, consolidation, success=True):
|
|||
"""
|
||||
Run ``process_consolidation``, yielding:
|
||||
- pre-state ('pre')
|
||||
- execution_layer_consolidation_request ('execution_layer_consolidation_request')
|
||||
- consolidation_request ('consolidation_request')
|
||||
- post-state ('post').
|
||||
If ``valid == False``, run expecting ``AssertionError``
|
||||
"""
|
||||
|
@ -778,9 +778,9 @@ def run_consolidation_processing(spec, state, consolidation, success=True):
|
|||
pre_state = state.copy()
|
||||
|
||||
yield 'pre', state
|
||||
yield 'execution_layer_consolidation_request', consolidation
|
||||
yield 'consolidation_request', consolidation
|
||||
|
||||
spec.process_execution_layer_consolidation_request(state, consolidation)
|
||||
spec.process_consolidation_request(state, consolidation)
|
||||
|
||||
yield 'post', state
|
||||
|
|
@ -29,14 +29,14 @@ def test_basic_withdrawal_request(spec, state):
|
|||
set_eth1_withdrawal_credential_with_balance(
|
||||
spec, state, validator_index, address=address
|
||||
)
|
||||
execution_layer_withdrawal_request = spec.ExecutionLayerWithdrawalRequest(
|
||||
withdrawal_request = spec.WithdrawalRequest(
|
||||
source_address=address,
|
||||
validator_pubkey=validator_pubkey,
|
||||
amount=spec.FULL_EXIT_REQUEST_AMOUNT,
|
||||
)
|
||||
|
||||
yield from run_execution_layer_withdrawal_request_processing(
|
||||
spec, state, execution_layer_withdrawal_request
|
||||
yield from run_withdrawal_request_processing(
|
||||
spec, state, withdrawal_request
|
||||
)
|
||||
|
||||
|
||||
|
@ -51,14 +51,14 @@ def test_basic_withdrawal_request_with_compounding_credentials(spec, state):
|
|||
validator_pubkey = state.validators[validator_index].pubkey
|
||||
address = b"\x22" * 20
|
||||
set_compounding_withdrawal_credential(spec, state, validator_index, address=address)
|
||||
execution_layer_withdrawal_request = spec.ExecutionLayerWithdrawalRequest(
|
||||
withdrawal_request = spec.WithdrawalRequest(
|
||||
source_address=address,
|
||||
validator_pubkey=validator_pubkey,
|
||||
amount=spec.FULL_EXIT_REQUEST_AMOUNT,
|
||||
)
|
||||
|
||||
yield from run_execution_layer_withdrawal_request_processing(
|
||||
spec, state, execution_layer_withdrawal_request
|
||||
yield from run_withdrawal_request_processing(
|
||||
spec, state, withdrawal_request
|
||||
)
|
||||
|
||||
|
||||
|
@ -74,7 +74,7 @@ def test_basic_withdrawal_request_with_full_partial_withdrawal_queue(spec, state
|
|||
set_eth1_withdrawal_credential_with_balance(
|
||||
spec, state, validator_index, address=address
|
||||
)
|
||||
execution_layer_withdrawal_request = spec.ExecutionLayerWithdrawalRequest(
|
||||
withdrawal_request = spec.WithdrawalRequest(
|
||||
source_address=address,
|
||||
validator_pubkey=validator_pubkey,
|
||||
amount=spec.FULL_EXIT_REQUEST_AMOUNT,
|
||||
|
@ -89,10 +89,10 @@ def test_basic_withdrawal_request_with_full_partial_withdrawal_queue(spec, state
|
|||
] * spec.PENDING_PARTIAL_WITHDRAWALS_LIMIT
|
||||
|
||||
# Exit should still be processed
|
||||
yield from run_execution_layer_withdrawal_request_processing(
|
||||
yield from run_withdrawal_request_processing(
|
||||
spec,
|
||||
state,
|
||||
execution_layer_withdrawal_request,
|
||||
withdrawal_request,
|
||||
)
|
||||
|
||||
|
||||
|
@ -113,14 +113,14 @@ def test_incorrect_source_address(spec, state):
|
|||
set_eth1_withdrawal_credential_with_balance(
|
||||
spec, state, validator_index, address=address
|
||||
)
|
||||
execution_layer_withdrawal_request = spec.ExecutionLayerWithdrawalRequest(
|
||||
withdrawal_request = spec.WithdrawalRequest(
|
||||
source_address=incorrect_address,
|
||||
validator_pubkey=validator_pubkey,
|
||||
amount=spec.FULL_EXIT_REQUEST_AMOUNT,
|
||||
)
|
||||
|
||||
yield from run_execution_layer_withdrawal_request_processing(
|
||||
spec, state, execution_layer_withdrawal_request, success=False
|
||||
yield from run_withdrawal_request_processing(
|
||||
spec, state, withdrawal_request, success=False
|
||||
)
|
||||
|
||||
|
||||
|
@ -142,14 +142,14 @@ def test_incorrect_withdrawal_credential_prefix(spec, state):
|
|||
spec.BLS_WITHDRAWAL_PREFIX
|
||||
+ state.validators[validator_index].withdrawal_credentials[1:]
|
||||
)
|
||||
execution_layer_withdrawal_request = spec.ExecutionLayerWithdrawalRequest(
|
||||
withdrawal_request = spec.WithdrawalRequest(
|
||||
source_address=address,
|
||||
validator_pubkey=validator_pubkey,
|
||||
amount=spec.FULL_EXIT_REQUEST_AMOUNT,
|
||||
)
|
||||
|
||||
yield from run_execution_layer_withdrawal_request_processing(
|
||||
spec, state, execution_layer_withdrawal_request, success=False
|
||||
yield from run_withdrawal_request_processing(
|
||||
spec, state, withdrawal_request, success=False
|
||||
)
|
||||
|
||||
|
||||
|
@ -168,14 +168,14 @@ def test_on_withdrawal_request_initiated_validator(spec, state):
|
|||
)
|
||||
# Initiate exit earlier
|
||||
spec.initiate_validator_exit(state, validator_index)
|
||||
execution_layer_withdrawal_request = spec.ExecutionLayerWithdrawalRequest(
|
||||
withdrawal_request = spec.WithdrawalRequest(
|
||||
source_address=address,
|
||||
validator_pubkey=validator_pubkey,
|
||||
amount=spec.FULL_EXIT_REQUEST_AMOUNT,
|
||||
)
|
||||
|
||||
yield from run_execution_layer_withdrawal_request_processing(
|
||||
spec, state, execution_layer_withdrawal_request, success=False
|
||||
yield from run_withdrawal_request_processing(
|
||||
spec, state, withdrawal_request, success=False
|
||||
)
|
||||
|
||||
|
||||
|
@ -189,7 +189,7 @@ def test_activation_epoch_less_than_shard_committee_period(spec, state):
|
|||
set_eth1_withdrawal_credential_with_balance(
|
||||
spec, state, validator_index, address=address
|
||||
)
|
||||
execution_layer_withdrawal_request = spec.ExecutionLayerWithdrawalRequest(
|
||||
withdrawal_request = spec.WithdrawalRequest(
|
||||
source_address=address,
|
||||
validator_pubkey=validator_pubkey,
|
||||
amount=spec.FULL_EXIT_REQUEST_AMOUNT,
|
||||
|
@ -200,8 +200,8 @@ def test_activation_epoch_less_than_shard_committee_period(spec, state):
|
|||
+ spec.config.SHARD_COMMITTEE_PERIOD
|
||||
)
|
||||
|
||||
yield from run_execution_layer_withdrawal_request_processing(
|
||||
spec, state, execution_layer_withdrawal_request, success=False
|
||||
yield from run_withdrawal_request_processing(
|
||||
spec, state, withdrawal_request, success=False
|
||||
)
|
||||
|
||||
|
||||
|
@ -221,16 +221,16 @@ def test_basic_partial_withdrawal_request(spec, state):
|
|||
state.balances[validator_index] += amount
|
||||
|
||||
set_compounding_withdrawal_credential(spec, state, validator_index, address=address)
|
||||
execution_layer_withdrawal_request = spec.ExecutionLayerWithdrawalRequest(
|
||||
withdrawal_request = spec.WithdrawalRequest(
|
||||
source_address=address,
|
||||
validator_pubkey=validator_pubkey,
|
||||
amount=amount,
|
||||
)
|
||||
|
||||
yield from run_execution_layer_withdrawal_request_processing(
|
||||
yield from run_withdrawal_request_processing(
|
||||
spec,
|
||||
state,
|
||||
execution_layer_withdrawal_request,
|
||||
withdrawal_request,
|
||||
)
|
||||
|
||||
# Check that the assigned exit epoch is correct
|
||||
|
@ -253,16 +253,16 @@ def test_basic_partial_withdrawal_request_higher_excess_balance(spec, state):
|
|||
state.balances[validator_index] += 2 * amount
|
||||
|
||||
set_compounding_withdrawal_credential(spec, state, validator_index, address=address)
|
||||
execution_layer_withdrawal_request = spec.ExecutionLayerWithdrawalRequest(
|
||||
withdrawal_request = spec.WithdrawalRequest(
|
||||
source_address=address,
|
||||
validator_pubkey=validator_pubkey,
|
||||
amount=amount,
|
||||
)
|
||||
|
||||
yield from run_execution_layer_withdrawal_request_processing(
|
||||
yield from run_withdrawal_request_processing(
|
||||
spec,
|
||||
state,
|
||||
execution_layer_withdrawal_request,
|
||||
withdrawal_request,
|
||||
)
|
||||
|
||||
# Check that the assigned exit epoch is correct
|
||||
|
@ -286,16 +286,16 @@ def test_basic_partial_withdrawal_request_lower_than_excess_balance(spec, state)
|
|||
state.balances[validator_index] += excess_balance
|
||||
|
||||
set_compounding_withdrawal_credential(spec, state, validator_index, address=address)
|
||||
execution_layer_withdrawal_request = spec.ExecutionLayerWithdrawalRequest(
|
||||
withdrawal_request = spec.WithdrawalRequest(
|
||||
source_address=address,
|
||||
validator_pubkey=validator_pubkey,
|
||||
amount=amount,
|
||||
)
|
||||
|
||||
yield from run_execution_layer_withdrawal_request_processing(
|
||||
yield from run_withdrawal_request_processing(
|
||||
spec,
|
||||
state,
|
||||
execution_layer_withdrawal_request,
|
||||
withdrawal_request,
|
||||
)
|
||||
|
||||
# Check that the assigned exit epoch is correct
|
||||
|
@ -316,7 +316,7 @@ def test_partial_withdrawal_request_with_pending_withdrawals(spec, state):
|
|||
amount = spec.EFFECTIVE_BALANCE_INCREMENT
|
||||
|
||||
set_compounding_withdrawal_credential(spec, state, validator_index, address=address)
|
||||
execution_layer_withdrawal_request = spec.ExecutionLayerWithdrawalRequest(
|
||||
withdrawal_request = spec.WithdrawalRequest(
|
||||
source_address=address,
|
||||
validator_pubkey=validator_pubkey,
|
||||
amount=amount,
|
||||
|
@ -331,10 +331,10 @@ def test_partial_withdrawal_request_with_pending_withdrawals(spec, state):
|
|||
# Set balance so that the validator still has excess balance even with the pending withdrawals
|
||||
state.balances[validator_index] += 3 * amount
|
||||
|
||||
yield from run_execution_layer_withdrawal_request_processing(
|
||||
yield from run_withdrawal_request_processing(
|
||||
spec,
|
||||
state,
|
||||
execution_layer_withdrawal_request,
|
||||
withdrawal_request,
|
||||
)
|
||||
|
||||
# Check that the assigned exit epoch is correct
|
||||
|
@ -357,7 +357,7 @@ def test_partial_withdrawal_request_with_pending_withdrawals_and_high_amount(
|
|||
amount = spec.UINT64_MAX
|
||||
|
||||
set_compounding_withdrawal_credential(spec, state, validator_index, address=address)
|
||||
execution_layer_withdrawal_request = spec.ExecutionLayerWithdrawalRequest(
|
||||
withdrawal_request = spec.WithdrawalRequest(
|
||||
source_address=address,
|
||||
validator_pubkey=validator_pubkey,
|
||||
amount=amount,
|
||||
|
@ -376,10 +376,10 @@ def test_partial_withdrawal_request_with_pending_withdrawals_and_high_amount(
|
|||
# Set balance so that the validator still has excess balance even with the pending withdrawals
|
||||
state.balances[validator_index] = spec.MAX_EFFECTIVE_BALANCE_ELECTRA
|
||||
|
||||
yield from run_execution_layer_withdrawal_request_processing(
|
||||
yield from run_withdrawal_request_processing(
|
||||
spec,
|
||||
state,
|
||||
execution_layer_withdrawal_request,
|
||||
withdrawal_request,
|
||||
)
|
||||
|
||||
|
||||
|
@ -399,7 +399,7 @@ def test_partial_withdrawal_request_with_high_balance(spec, state):
|
|||
)
|
||||
|
||||
set_compounding_withdrawal_credential(spec, state, validator_index, address=address)
|
||||
execution_layer_withdrawal_request = spec.ExecutionLayerWithdrawalRequest(
|
||||
withdrawal_request = spec.WithdrawalRequest(
|
||||
source_address=address,
|
||||
validator_pubkey=validator_pubkey,
|
||||
amount=amount,
|
||||
|
@ -407,10 +407,10 @@ def test_partial_withdrawal_request_with_high_balance(spec, state):
|
|||
|
||||
churn_limit = spec.get_activation_exit_churn_limit(state)
|
||||
|
||||
yield from run_execution_layer_withdrawal_request_processing(
|
||||
yield from run_withdrawal_request_processing(
|
||||
spec,
|
||||
state,
|
||||
execution_layer_withdrawal_request,
|
||||
withdrawal_request,
|
||||
)
|
||||
|
||||
# Check that the assigned exit epoch is correct
|
||||
|
@ -435,16 +435,16 @@ def test_partial_withdrawal_request_with_high_amount(spec, state):
|
|||
state.balances[validator_index] += 1
|
||||
|
||||
set_compounding_withdrawal_credential(spec, state, validator_index, address=address)
|
||||
execution_layer_withdrawal_request = spec.ExecutionLayerWithdrawalRequest(
|
||||
withdrawal_request = spec.WithdrawalRequest(
|
||||
source_address=address,
|
||||
validator_pubkey=validator_pubkey,
|
||||
amount=amount,
|
||||
)
|
||||
|
||||
yield from run_execution_layer_withdrawal_request_processing(
|
||||
yield from run_withdrawal_request_processing(
|
||||
spec,
|
||||
state,
|
||||
execution_layer_withdrawal_request,
|
||||
withdrawal_request,
|
||||
)
|
||||
|
||||
# Check that the assigned exit epoch is correct
|
||||
|
@ -467,16 +467,16 @@ def test_partial_withdrawal_request_with_low_amount(spec, state):
|
|||
state.balances[validator_index] += amount
|
||||
|
||||
set_compounding_withdrawal_credential(spec, state, validator_index, address=address)
|
||||
execution_layer_withdrawal_request = spec.ExecutionLayerWithdrawalRequest(
|
||||
withdrawal_request = spec.WithdrawalRequest(
|
||||
source_address=address,
|
||||
validator_pubkey=validator_pubkey,
|
||||
amount=amount,
|
||||
)
|
||||
|
||||
yield from run_execution_layer_withdrawal_request_processing(
|
||||
yield from run_withdrawal_request_processing(
|
||||
spec,
|
||||
state,
|
||||
execution_layer_withdrawal_request,
|
||||
withdrawal_request,
|
||||
)
|
||||
|
||||
# Check that the assigned exit epoch is correct
|
||||
|
@ -501,7 +501,7 @@ def test_partial_withdrawal_queue_full(spec, state):
|
|||
# Ensure that the validator has sufficient excess balance
|
||||
state.balances[validator_index] += 2 * amount
|
||||
set_compounding_withdrawal_credential(spec, state, validator_index, address=address)
|
||||
execution_layer_withdrawal_request = spec.ExecutionLayerWithdrawalRequest(
|
||||
withdrawal_request = spec.WithdrawalRequest(
|
||||
source_address=address,
|
||||
validator_pubkey=validator_pubkey,
|
||||
amount=amount,
|
||||
|
@ -514,8 +514,8 @@ def test_partial_withdrawal_queue_full(spec, state):
|
|||
state.pending_partial_withdrawals = [
|
||||
partial_withdrawal
|
||||
] * spec.PENDING_PARTIAL_WITHDRAWALS_LIMIT
|
||||
yield from run_execution_layer_withdrawal_request_processing(
|
||||
spec, state, execution_layer_withdrawal_request, success=False
|
||||
yield from run_withdrawal_request_processing(
|
||||
spec, state, withdrawal_request, success=False
|
||||
)
|
||||
|
||||
|
||||
|
@ -534,16 +534,16 @@ def test_no_compounding_credentials(spec, state):
|
|||
set_eth1_withdrawal_credential_with_balance(
|
||||
spec, state, validator_index, address=address
|
||||
)
|
||||
execution_layer_withdrawal_request = spec.ExecutionLayerWithdrawalRequest(
|
||||
withdrawal_request = spec.WithdrawalRequest(
|
||||
source_address=address,
|
||||
validator_pubkey=validator_pubkey,
|
||||
amount=amount,
|
||||
)
|
||||
|
||||
yield from run_execution_layer_withdrawal_request_processing(
|
||||
yield from run_withdrawal_request_processing(
|
||||
spec,
|
||||
state,
|
||||
execution_layer_withdrawal_request,
|
||||
withdrawal_request,
|
||||
success=False,
|
||||
)
|
||||
|
||||
|
@ -559,14 +559,14 @@ def test_no_excess_balance(spec, state):
|
|||
amount = spec.EFFECTIVE_BALANCE_INCREMENT
|
||||
|
||||
set_compounding_withdrawal_credential(spec, state, validator_index, address=address)
|
||||
execution_layer_withdrawal_request = spec.ExecutionLayerWithdrawalRequest(
|
||||
withdrawal_request = spec.WithdrawalRequest(
|
||||
source_address=address,
|
||||
validator_pubkey=validator_pubkey,
|
||||
amount=amount,
|
||||
)
|
||||
|
||||
yield from run_execution_layer_withdrawal_request_processing(
|
||||
spec, state, execution_layer_withdrawal_request, success=False
|
||||
yield from run_withdrawal_request_processing(
|
||||
spec, state, withdrawal_request, success=False
|
||||
)
|
||||
|
||||
|
||||
|
@ -583,7 +583,7 @@ def test_pending_withdrawals_consume_all_excess_balance(spec, state):
|
|||
state.balances[validator_index] += 10 * amount
|
||||
|
||||
set_compounding_withdrawal_credential(spec, state, validator_index, address=address)
|
||||
execution_layer_withdrawal_request = spec.ExecutionLayerWithdrawalRequest(
|
||||
withdrawal_request = spec.WithdrawalRequest(
|
||||
source_address=address,
|
||||
validator_pubkey=validator_pubkey,
|
||||
amount=amount,
|
||||
|
@ -595,8 +595,8 @@ def test_pending_withdrawals_consume_all_excess_balance(spec, state):
|
|||
)
|
||||
state.pending_partial_withdrawals = [partial_withdrawal] * 10
|
||||
|
||||
yield from run_execution_layer_withdrawal_request_processing(
|
||||
spec, state, execution_layer_withdrawal_request, success=False
|
||||
yield from run_withdrawal_request_processing(
|
||||
spec, state, withdrawal_request, success=False
|
||||
)
|
||||
|
||||
|
||||
|
@ -615,16 +615,16 @@ def test_insufficient_effective_balance(spec, state):
|
|||
].effective_balance -= spec.EFFECTIVE_BALANCE_INCREMENT
|
||||
|
||||
set_compounding_withdrawal_credential(spec, state, validator_index, address=address)
|
||||
execution_layer_withdrawal_request = spec.ExecutionLayerWithdrawalRequest(
|
||||
withdrawal_request = spec.WithdrawalRequest(
|
||||
source_address=address,
|
||||
validator_pubkey=validator_pubkey,
|
||||
amount=amount,
|
||||
)
|
||||
|
||||
yield from run_execution_layer_withdrawal_request_processing(
|
||||
yield from run_withdrawal_request_processing(
|
||||
spec,
|
||||
state,
|
||||
execution_layer_withdrawal_request,
|
||||
withdrawal_request,
|
||||
success=False,
|
||||
)
|
||||
|
||||
|
@ -644,14 +644,14 @@ def test_partial_withdrawal_incorrect_source_address(spec, state):
|
|||
state.balances[validator_index] += 2 * amount
|
||||
|
||||
set_compounding_withdrawal_credential(spec, state, validator_index, address=address)
|
||||
execution_layer_withdrawal_request = spec.ExecutionLayerWithdrawalRequest(
|
||||
withdrawal_request = spec.WithdrawalRequest(
|
||||
source_address=incorrect_address,
|
||||
validator_pubkey=validator_pubkey,
|
||||
amount=amount,
|
||||
)
|
||||
|
||||
yield from run_execution_layer_withdrawal_request_processing(
|
||||
spec, state, execution_layer_withdrawal_request, success=False
|
||||
yield from run_withdrawal_request_processing(
|
||||
spec, state, withdrawal_request, success=False
|
||||
)
|
||||
|
||||
|
||||
|
@ -673,14 +673,14 @@ def test_partial_withdrawal_incorrect_withdrawal_credential_prefix(spec, state):
|
|||
spec.BLS_WITHDRAWAL_PREFIX
|
||||
+ state.validators[validator_index].withdrawal_credentials[1:]
|
||||
)
|
||||
execution_layer_withdrawal_request = spec.ExecutionLayerWithdrawalRequest(
|
||||
withdrawal_request = spec.WithdrawalRequest(
|
||||
source_address=address,
|
||||
validator_pubkey=validator_pubkey,
|
||||
amount=amount,
|
||||
)
|
||||
|
||||
yield from run_execution_layer_withdrawal_request_processing(
|
||||
spec, state, execution_layer_withdrawal_request, success=False
|
||||
yield from run_withdrawal_request_processing(
|
||||
spec, state, withdrawal_request, success=False
|
||||
)
|
||||
|
||||
|
||||
|
@ -699,14 +699,14 @@ def test_partial_withdrawal_on_exit_initiated_validator(spec, state):
|
|||
set_compounding_withdrawal_credential(spec, state, validator_index, address=address)
|
||||
# Initiate exit earlier
|
||||
spec.initiate_validator_exit(state, validator_index)
|
||||
execution_layer_withdrawal_request = spec.ExecutionLayerWithdrawalRequest(
|
||||
withdrawal_request = spec.WithdrawalRequest(
|
||||
source_address=address,
|
||||
validator_pubkey=validator_pubkey,
|
||||
amount=amount,
|
||||
)
|
||||
|
||||
yield from run_execution_layer_withdrawal_request_processing(
|
||||
spec, state, execution_layer_withdrawal_request, success=False
|
||||
yield from run_withdrawal_request_processing(
|
||||
spec, state, withdrawal_request, success=False
|
||||
)
|
||||
|
||||
|
||||
|
@ -722,7 +722,7 @@ def test_partial_withdrawal_activation_epoch_less_than_shard_committee_period(
|
|||
amount = spec.EFFECTIVE_BALANCE_INCREMENT
|
||||
state.balances[validator_index] += 2 * amount
|
||||
set_compounding_withdrawal_credential(spec, state, validator_index, address=address)
|
||||
execution_layer_withdrawal_request = spec.ExecutionLayerWithdrawalRequest(
|
||||
withdrawal_request = spec.WithdrawalRequest(
|
||||
source_address=address,
|
||||
validator_pubkey=validator_pubkey,
|
||||
amount=amount,
|
||||
|
@ -733,8 +733,8 @@ def test_partial_withdrawal_activation_epoch_less_than_shard_committee_period(
|
|||
+ spec.config.SHARD_COMMITTEE_PERIOD
|
||||
)
|
||||
|
||||
yield from run_execution_layer_withdrawal_request_processing(
|
||||
spec, state, execution_layer_withdrawal_request, success=False
|
||||
yield from run_withdrawal_request_processing(
|
||||
spec, state, withdrawal_request, success=False
|
||||
)
|
||||
|
||||
|
||||
|
@ -743,28 +743,28 @@ def test_partial_withdrawal_activation_epoch_less_than_shard_committee_period(
|
|||
#
|
||||
|
||||
|
||||
def run_execution_layer_withdrawal_request_processing(
|
||||
spec, state, execution_layer_withdrawal_request, valid=True, success=True
|
||||
def run_withdrawal_request_processing(
|
||||
spec, state, withdrawal_request, valid=True, success=True
|
||||
):
|
||||
"""
|
||||
Run ``process_execution_layer_withdrawal_request``, yielding:
|
||||
Run ``process_withdrawal_request``, yielding:
|
||||
- pre-state ('pre')
|
||||
- execution_layer_withdrawal_request ('execution_layer_withdrawal_request')
|
||||
- withdrawal_request ('withdrawal_request')
|
||||
- post-state ('post').
|
||||
If ``valid == False``, run expecting ``AssertionError``
|
||||
If ``success == False``, it doesn't initiate exit successfully
|
||||
"""
|
||||
validator_index = get_validator_index_by_pubkey(
|
||||
state, execution_layer_withdrawal_request.validator_pubkey
|
||||
state, withdrawal_request.validator_pubkey
|
||||
)
|
||||
|
||||
yield "pre", state
|
||||
yield "execution_layer_withdrawal_request", execution_layer_withdrawal_request
|
||||
yield "withdrawal_request", withdrawal_request
|
||||
|
||||
if not valid:
|
||||
expect_assertion_error(
|
||||
lambda: spec.process_execution_layer_withdrawal_request(
|
||||
state, execution_layer_withdrawal_request
|
||||
lambda: spec.process_withdrawal_request(
|
||||
state, withdrawal_request
|
||||
)
|
||||
)
|
||||
yield "post", None
|
||||
|
@ -776,11 +776,11 @@ def run_execution_layer_withdrawal_request_processing(
|
|||
pre_effective_balance = state.validators[validator_index].effective_balance
|
||||
pre_state = state.copy()
|
||||
expected_amount_to_withdraw = compute_amount_to_withdraw(
|
||||
spec, state, validator_index, execution_layer_withdrawal_request.amount
|
||||
spec, state, validator_index, withdrawal_request.amount
|
||||
)
|
||||
|
||||
spec.process_execution_layer_withdrawal_request(
|
||||
state, execution_layer_withdrawal_request
|
||||
spec.process_withdrawal_request(
|
||||
state, withdrawal_request
|
||||
)
|
||||
|
||||
yield "post", state
|
||||
|
@ -794,7 +794,7 @@ def run_execution_layer_withdrawal_request_processing(
|
|||
state.validators[validator_index].effective_balance == pre_effective_balance
|
||||
)
|
||||
# Full exit request
|
||||
if execution_layer_withdrawal_request.amount == spec.FULL_EXIT_REQUEST_AMOUNT:
|
||||
if withdrawal_request.amount == spec.FULL_EXIT_REQUEST_AMOUNT:
|
||||
assert pre_exit_epoch == spec.FAR_FUTURE_EPOCH
|
||||
assert state.validators[validator_index].exit_epoch < spec.FAR_FUTURE_EPOCH
|
||||
assert spec.get_pending_balance_to_withdraw(state, validator_index) == 0
|
|
@ -36,12 +36,12 @@ def test_basic_el_withdrawal_request(spec, state):
|
|||
assert state.validators[validator_index].exit_epoch == spec.FAR_FUTURE_EPOCH
|
||||
|
||||
validator_pubkey = state.validators[validator_index].pubkey
|
||||
execution_layer_withdrawal_request = spec.ExecutionLayerWithdrawalRequest(
|
||||
withdrawal_request = spec.WithdrawalRequest(
|
||||
source_address=address,
|
||||
validator_pubkey=validator_pubkey,
|
||||
)
|
||||
block = build_empty_block_for_next_slot(spec, state)
|
||||
block.body.execution_payload.withdrawal_requests = [execution_layer_withdrawal_request]
|
||||
block.body.execution_payload.withdrawal_requests = [withdrawal_request]
|
||||
block.body.execution_payload.block_hash = compute_el_block_hash(spec, block.body.execution_payload)
|
||||
signed_block = state_transition_and_sign_block(spec, state, block)
|
||||
|
||||
|
@ -73,11 +73,11 @@ def test_basic_btec_and_el_withdrawal_request_in_same_block(spec, state):
|
|||
block.body.bls_to_execution_changes = [signed_address_change]
|
||||
|
||||
validator_pubkey = state.validators[validator_index].pubkey
|
||||
execution_layer_withdrawal_request = spec.ExecutionLayerWithdrawalRequest(
|
||||
withdrawal_request = spec.WithdrawalRequest(
|
||||
source_address=address,
|
||||
validator_pubkey=validator_pubkey,
|
||||
)
|
||||
block.body.execution_payload.withdrawal_requests = [execution_layer_withdrawal_request]
|
||||
block.body.execution_payload.withdrawal_requests = [withdrawal_request]
|
||||
|
||||
block.body.execution_payload.block_hash = compute_el_block_hash(spec, block.body.execution_payload)
|
||||
signed_block = state_transition_and_sign_block(spec, state, block)
|
||||
|
@ -125,12 +125,12 @@ def test_basic_btec_before_el_withdrawal_request(spec, state):
|
|||
|
||||
# block_2 contains an EL-Exit operation of the given validator
|
||||
validator_pubkey = state.validators[validator_index].pubkey
|
||||
execution_layer_withdrawal_request = spec.ExecutionLayerWithdrawalRequest(
|
||||
withdrawal_request = spec.WithdrawalRequest(
|
||||
source_address=address,
|
||||
validator_pubkey=validator_pubkey,
|
||||
)
|
||||
block_2 = build_empty_block_for_next_slot(spec, state)
|
||||
block_2.body.execution_payload.withdrawal_requests = [execution_layer_withdrawal_request]
|
||||
block_2.body.execution_payload.withdrawal_requests = [withdrawal_request]
|
||||
block_2.body.execution_payload.block_hash = compute_el_block_hash(spec, block_2.body.execution_payload)
|
||||
signed_block_2 = state_transition_and_sign_block(spec, state, block_2)
|
||||
|
||||
|
@ -157,13 +157,13 @@ def test_cl_exit_and_el_withdrawal_request_in_same_block(spec, state):
|
|||
signed_voluntary_exits = prepare_signed_exits(spec, state, indices=[validator_index])
|
||||
# EL-Exit
|
||||
validator_pubkey = state.validators[validator_index].pubkey
|
||||
execution_layer_withdrawal_request = spec.ExecutionLayerWithdrawalRequest(
|
||||
withdrawal_request = spec.WithdrawalRequest(
|
||||
source_address=address,
|
||||
validator_pubkey=validator_pubkey,
|
||||
)
|
||||
block = build_empty_block_for_next_slot(spec, state)
|
||||
block.body.voluntary_exits = signed_voluntary_exits
|
||||
block.body.execution_payload.withdrawal_requests = [execution_layer_withdrawal_request]
|
||||
block.body.execution_payload.withdrawal_requests = [withdrawal_request]
|
||||
block.body.execution_payload.block_hash = compute_el_block_hash(spec, block.body.execution_payload)
|
||||
signed_block = state_transition_and_sign_block(spec, state, block)
|
||||
|
||||
|
|
|
@ -1,39 +0,0 @@
|
|||
from eth2spec.test.context import expect_assertion_error
|
||||
from eth2spec.test.helpers.state import get_validator_index_by_pubkey
|
||||
|
||||
|
||||
#
|
||||
# Run processing
|
||||
#
|
||||
|
||||
|
||||
def run_execution_layer_withdrawal_request_processing(spec, state, withdrawal_request, valid=True, success=True):
|
||||
"""
|
||||
Run ``process_execution_layer_withdrawal_request``, yielding:
|
||||
- pre-state ('pre')
|
||||
- withdrawal_request ('withdrawal_request')
|
||||
- post-state ('post').
|
||||
If ``valid == False``, run expecting ``AssertionError``
|
||||
If ``success == False``, it doesn't initiate exit successfully
|
||||
"""
|
||||
validator_index = get_validator_index_by_pubkey(state, withdrawal_request.validator_pubkey)
|
||||
|
||||
yield 'pre', state
|
||||
yield 'withdrawal_request', withdrawal_request
|
||||
|
||||
if not valid:
|
||||
expect_assertion_error(lambda: spec.process_withdrawal_request(state, withdrawal_request))
|
||||
yield 'post', None
|
||||
return
|
||||
|
||||
pre_exit_epoch = state.validators[validator_index].exit_epoch
|
||||
|
||||
spec.process_withdrawal_request(state, withdrawal_request)
|
||||
|
||||
yield 'post', state
|
||||
|
||||
if success:
|
||||
assert pre_exit_epoch == spec.FAR_FUTURE_EPOCH
|
||||
assert state.validators[validator_index].exit_epoch < spec.FAR_FUTURE_EPOCH
|
||||
else:
|
||||
assert state.validators[validator_index].exit_epoch == pre_exit_epoch
|
|
@ -46,8 +46,8 @@ Operations:
|
|||
| `withdrawals` | `ExecutionPayload` | `execution_payload` | `process_withdrawals(state, execution_payload)` (new in Capella) |
|
||||
| `bls_to_execution_change` | `SignedBLSToExecutionChange` | `address_change` | `process_bls_to_execution_change(state, address_change)` (new in Capella) |
|
||||
| `deposit_request` | `DepositRequest` | `deposit_request` | `process_deposit_request(state, deposit_request)` (new in Electra) |
|
||||
| `execution_layer_withdrawal_request` | `ExecutionLayerWithdrawalRequest` | `execution_layer_withdrawal_request` | `process_execution_layer_withdrawal_request(state, execution_layer_withdrawal_request)` (new in Electra) |
|
||||
| `execution_layer_consolidation_request` | `ExecutionLayerConsolidationRequest` | `execution_layer_consolidation_request` | `process_execution_layer_consolidation_request(state, execution_layer_consolidation_request)` (new in Electra) |
|
||||
| `withdrawal_request` | `WithdrawalRequest` | `withdrawal_request` | `process_withdrawal_request(state, withdrawal_request)` (new in Electra) |
|
||||
| `consolidation_request` | `ConsolidationRequest` | `consolidation_request` | `process_consolidation_request(state, consolidation_request)` (new in Electra) |
|
||||
|
||||
Note that `block_header` is not strictly an operation (and is a full `Block`), but processed in the same manner, and hence included here.
|
||||
|
||||
|
|
|
@ -45,10 +45,10 @@ if __name__ == "__main__":
|
|||
|
||||
_new_electra_mods = {key: 'eth2spec.test.electra.block_processing.test_process_' + key for key in [
|
||||
'attestation',
|
||||
'execution_layer_consolidation_request',
|
||||
'consolidation_request',
|
||||
'deposit_request',
|
||||
'execution_layer_withdrawal_request',
|
||||
'voluntary_exit'
|
||||
'withdrawal_request',
|
||||
]}
|
||||
electra_mods = combine_mods(_new_electra_mods, deneb_mods)
|
||||
|
||||
|
|
Loading…
Reference in New Issue