Traditional Two-Step Unstaking
The traditional unstaking process mirrors how Monad's native staking works: a two-step process with a mandatory waiting period. This method charges no fees, but it does require the user to wait until shMonad's Unstaking Period has passed and then submit a second transaction to complete the withdrawal.
How It Works
Step 1: Request Unstake
When you request an unstake:
- Your shMON tokens are burned immediately
- The system records how much MON you're owed
- The exchange rate at this moment determines your MON amount -this rate is locked in
- Your unstake request enters a queue
Step 2: Complete Unstake (After Waiting)
Once the waiting period ends:
- You call the completion function
- The protocol pays all matured traditional requests for your account
- Any still-pending requests remain queued for their later completion epoch
Multiple Active Requests
Traditional unstaking supports multiple active request buckets per user. If you submit more than one traditional unstake request:
- Requests with the same completion epoch are merged.
- Requests with different completion epochs can stay separate.
- Matured requests are compacted and completed together when you call
completeUnstake(). - Atomic unstaking is separate and does not change traditional unstake request timing.
The request queue has seven pending slots and one matured bucket so completion gas stays predictable. A new completion epoch can fail to fit if all pending slots are occupied. Matured requests are automatically compacted when you request or complete an unstake, freeing pending slots without requiring you to collect the matured payout first.
Two-Step Unstaking's Wait Duration
The normal waiting time is approximately 4-5 epochs, which translates to 22-27 hours depending on timing and crank progress. If your request exceeds the available global redemption capacity, the quote adds 2 more epochs so pending stake has time to activate before it can be withdrawn.
This delay exists due to the following factors:
The Worst-Case Scenario
Your unstake request might arrive at the worst possible moment in the epoch cycle:
Epoch N (Request arrives):
- You request your unstake late in the epoch
- Too late for validators to process it this epoch
Epoch N+1 (Boundary delays):
- The system processes epoch-end accounting
- Last validator updates complete
- System recognizes your unstake request
Epoch N+2 (Effective processing):
- Because the previous epoch had boundary timing issues, this becomes the effective processing epoch
- Your unstake finally enters the validator queue
Epoch N+3 (Waiting period):
- Monad requires a one-epoch delay for unstaking
- Your MON is now in the unstaking queue
Epoch N+4 (Collection):
- The unstake completes
- MON returns from validators to the protocol
Epoch N+5 (Available):
- You can now safely complete your withdrawal
- The protocol has your MON available to transfer
Why Each Step Is Necessary
- Epoch boundaries: Validators only process changes at epoch boundaries, not continuously
- Queue processing: Multiple users' requests must be batched and processed together
- Network delay: Monad enforces a mandatory waiting period before stake can be withdrawn
- Safety margins: The system adds buffer time to ensure MON is actually available when you complete
Exchange Rate Lock-In
Critical timing detail: The exchange rate is locked when you request the unstake, not when you complete it.
This means:
- If equity grows while you're waiting, you don't benefit
- If equity shrinks while you're waiting, you don't lose
- Your MON amount is fixed at the moment you burn your shMON
For most users, this is fair -you've already exited your position when you request the unstake. The waiting period is purely a technical requirement of the underlying staking system.
The Same-Epoch "Cost" of Unstaking
If you deposit and then immediately request an unstake in the same epoch, you may receive less MON than you deposited. This happens because:
- Deposits include current epoch rewards in the rate (you pay a higher price per shMON)
- Unstakes exclude unreleased recent rewards from the rate (you receive a lower value per shMON)
This mechanism intentionally discourages "flash staking" where users try to capture a few blocks of rewards and immediately exit and is discussed in greater detail in the Exchange Rate section.
When to Use Traditional Unstaking
Choose this method when:
- You're not in a hurry and can wait a little longer than 1 day
- You want to avoid paying any fees
- You're withdrawing a large amount where fees would be significant
- The atomic pool doesn't have enough liquidity for your withdrawal
The trade-off is simple: time vs. fees. Traditional unstaking takes longer but costs nothing.