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
Copy file name to clipboardExpand all lines: docs/core/DelegationManager.md
+5-8Lines changed: 5 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -226,20 +226,18 @@ function queueWithdrawals(
226
226
227
227
Allows the caller to queue one or more withdrawals of their held shares across any strategy (in either/both the `EigenPodManager` or `StrategyManager`). If the caller is delegated to an Operator, the `shares` and `strategies` being withdrawn are immediately removed from that Operator's delegated share balances. Note that if the caller is an Operator, this still applies, as Operators are essentially delegated to themselves.
228
228
229
-
`queueWithdrawals` works very similarly to `undelegate`, except that the caller is not undelegated, and also may:
230
-
* Choose which strategies and how many shares to withdraw (as opposed to ALL shares/strategies)
231
-
* Specify a `withdrawer` to receive withdrawn funds once the withdrawal is completed
229
+
`queueWithdrawals` works very similarly to `undelegate`, except that the caller is not undelegated, and also may choose which strategies and how many shares to withdraw (as opposed to ALL shares/strategies).
232
230
233
231
All shares being withdrawn (whether via the `EigenPodManager` or `StrategyManager`) are removed while the withdrawals are in the queue.
234
232
235
-
Withdrawals can be completed by the `withdrawer` after max(`minWithdrawalDelayBlocks`, `strategyWithdrawalDelayBlocks[strategy]`) such that `strategy` represents the queued strategies to be withdrawn. Withdrawals do not require the `withdrawer` to "fully exit" from the system -- they may choose to receive their shares back in full once the withdrawal is completed (see [`completeQueuedWithdrawal`](#completequeuedwithdrawal) for details).
233
+
Withdrawals can be completed by the caller after max(`minWithdrawalDelayBlocks`, `strategyWithdrawalDelayBlocks[strategy]`) such that `strategy` represents the queued strategies to be withdrawn. Withdrawals do not require the caller to "fully exit" from the system -- they may choose to receive their shares back in full once the withdrawal is completed (see [`completeQueuedWithdrawal`](#completequeuedwithdrawal) for details).
236
234
237
-
Note that for any `strategy` s.t `StrategyManager.thirdPartyTransfersForbidden(strategy) == true` the `withdrawer`must be the same address as the `staker` as this setting disallows users to deposit or withdraw on behalf of other users. (see [`thirdPartyTransfersForbidden`](./StrategyManager.md) for details).
235
+
Note that the `QueuedWithdrawalParams` struct has a `withdrawer`field. Originally, this was used to specify an address that the withdrawal would be credited to once completed. However, `queueWithdrawals` now requires that `withdrawer == msg.sender`. Any other input is rejected.
238
236
239
237
*Effects*:
240
238
* For each withdrawal:
241
239
* If the caller is delegated to an Operator, that Operator's delegated balances are decreased according to the `strategies` and `shares` being withdrawn.
242
-
* A `Withdrawal` is queued for the `withdrawer`, tracking the strategies and shares being withdrawn
240
+
* A `Withdrawal` is queued for the caller, tracking the strategies and shares being withdrawn
243
241
* The caller's withdrawal nonce is increased
244
242
* The hash of the `Withdrawal` is marked as "pending"
245
243
* See [`EigenPodManager.removeShares`](./EigenPodManager.md#eigenpodmanagerremoveshares)
@@ -250,8 +248,7 @@ Note that for any `strategy` s.t `StrategyManager.thirdPartyTransfersForbidden(s
250
248
* For each withdrawal:
251
249
*`strategies.length` MUST equal `shares.length`
252
250
*`strategies.length` MUST NOT be equal to 0
253
-
* The `withdrawer` MUST NOT be 0
254
-
* For all strategies being withdrawn, the `withdrawer` MUST be the same address as the `staker` if `StrategyManager.thirdPartyTransfersForbidden(strategy) == true`
251
+
* The `withdrawer` MUST equal `msg.sender`
255
252
* See [`EigenPodManager.removeShares`](./EigenPodManager.md#eigenpodmanagerremoveshares)
256
253
* See [`StrategyManager.removeShares`](./StrategyManager.md#removeshares)
0 commit comments