Deposits and Withdraws
Deposit Workflow
The Deposit functionality in the Coordinator contract works by pulling tokens from the sender/user and sending them to the Rio Deposit Pool. The deposited amount is then converted to a corresponding amount of the underlying LRT and minted to the user.
For a more in-depth understanding of how deposits and withdrawals work together, review the Deposit Pool Rebalancer.
The Ethereum Validator entry and exit queues will also affect the duration of both deposits and withdrawals. The assumption is that these queues do not lengthen theses processes but these can and do tend to fluctuate over time. A lengthy entry queue will delay the deployment of validators and cause some minor drag on overall yield. An exit queue greater than the 7-day EigenLayer withdrawal period will cause withdrawal delays. For the current conditions on mainnet see: https://www.validatorqueue.com/
Deposit Pool
Before being deposited into EigenLayer, all user-deposited funds are first sent to the Deposit Pool (RioLRTDepositPool
). Funds will stay in the Deposit Pool for up to twenty-four hours, which is dependent upon the timing of the last execution of the Deposit Pool Rebalancer. This period may be longer depending on the current Validator Entrance Queue.
The amount of assets that are transferable out of the Deposit Pool and into EigenLayer is dependent on the amount of assets pending in the Withdrawal Queue as withdrawals are paid out from pending deposits.
The period of time between Deposit Pool rebalances is referred to as an epoch. Currently, this is set as a twenty-four hour period but may change.
Withdrawal Workflow
The Withdrawal functionality in the Coordinator contract is more complex than the Deposit flow primarily due to EigenLayer's 7-day withdrawal delay whereby user funds can not be immediately be withdrawn. Therefore, with all Rio Network LRTs, this is a two-step flow whereby the users are required to first request their funds and then after either one or seven days, the funds will be available for the user to claim. This period may be longer depending on the current Validator Exit Queue.
Users will only earn yield following a withdrawal request until the next rebalance.
If there aren't enough funds in the deposit pool to cover pending withdrawals, and we requested funds from EigenLayer, they will not continue to earn rewards from this point on.
Withdrawal Queue
To efficiently handle user withdrawals, the Rio Protocol will pull the Rio restaking tokens from the user and place them into a Withdrawal Queue (RioLRTWithdrawalQueue
). During the next rebalance event, the protocol will calculate the amount of EigenLayer funds owed to the user based on the amount requested. This calculation is performed during a rebalance to ensure a slashing event is properly socialized across all depositors.
If the Deposit Pool has enough funds to cover the withdrawal, then the user will be able to receive their funds within one day (after the next Rebalance and completion of the current epoch). If there are insufficient funds in the Deposit Pool then the user will need to wait the full 7-day EigenLayer withdrawal period.
Using the Deposit Pool as a source of funds not only improves withdrawal times for users but also reduces the disruption to Operators.
Multiple withdrawal requests by a single user (caller) during a twenty-four hour epoch will all be processed at once. The entire amount requested must be available for withdrawal from the Deposit Pool for those funds to be claimable in 1-day. If the total amount is not available then the user will need to wait 7-days before claiming the total amount requested.
The withdrawal period may be longer depending on the Ethereum validator exit queue which may range from instantaneous to many days. The validator exit queue overlaps with the EigenLayer withdrawal delay and thus only an exit queue greater than 7-days will affect a withdrawal from the Rio Network. The Rio Network and EigenLayer do not have control over this exit queue delay.
Last updated