You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This adds supports for grouped execution requests. For example, according to EIP-7685, deposit requests may be encoded like this:
0x00 || deposit_request1 || deposit_request2 || deposit_request3
instead of
0x00 || deposit_request1
0x00 || deposit_request2
0x00 || deposit_request3
The same is true for all other execution requests.
Copy file name to clipboardExpand all lines: docs/deposits-and-withdrawals.md
+9-3Lines changed: 9 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -44,7 +44,9 @@ If signature verification fails, a refund withdrawal is created immediately. No
44
44
45
45
## Withdrawal Flow
46
46
47
-
Withdrawals are parsed in `parse_execution_requests` and processed when included in a block.
47
+
Withdrawals are parsed in `parse_execution_requests` and processed when included in a block, unless
48
+
they are deferred at an epoch boundary and retried from `pending_execution_requests` in the next
49
+
epoch.
48
50
49
51
### Withdrawal Scenarios
50
52
@@ -96,12 +98,16 @@ User-initiated withdrawals are still limited to one at a time via the `has_pendi
96
98
97
99
Withdrawal requests for active validators received on the **last block of an epoch** are deferred to the next epoch. This ensures that `removed_validators` in the finalized header accurately reflects all validator exits, since the header is created at the penultimate block.
98
100
99
-
Deferred requests are stored in `pending_execution_requests` and processed at the start of the next epoch.
101
+
Deferred requests are stored in `pending_execution_requests` and processed at the start of the next
102
+
epoch. Deferred withdrawals are re-queued individually.
100
103
101
104
## Invariants
102
105
103
106
- A validator will join the committee `VALIDATOR_NUM_WARM_UP_EPOCHS` epochs after submitting a valid deposit request. The phase after submitting the deposit request, and before joining the committee is called the `onboarding phase`.
104
-
- If a withdrawal request is submitted in epoch `n`, then the validator will be removed from the committee at the end of epoch `n`. The withdrawal will be processed in epoch `n + VALIDATOR_WITHDRAWAL_NUM_EPOCHS`.
107
+
- If a withdrawal request is submitted in epoch `n`, then it is normally handled in epoch `n`, and
108
+
the withdrawal will be processed in epoch `n + VALIDATOR_WITHDRAWAL_NUM_EPOCHS`. Exception:
109
+
requests received on the last block of epoch `n` are deferred to the next epoch before being
110
+
scheduled.
105
111
- There are two parameters that govern the staking amount: `validator_min_stake` and `validator_max_stake`. The balance of a validator must always be in range `[validator_min_stake, validator_max_stake]`.
106
112
- Any deposit request with resulting balance outside `[validator_min_stake, validator_max_stake]` will be rejected and refunded.
107
113
- A validator can only have one pending deposit request at a time. Subsequent deposit requests will be ignored.
0 commit comments