Initiate Withdraw
Before withdrawing, user needs to initiate withdraw to lock the RAZOR amount that needs to be withdraw.
Using Razorscan (Recommended for beginners)
Step 1
Visit https://razorscan.io/
Note: We recommend that all Delegators bookmark this specific URL to prevent any phishing attacks.

Step 2
Now, click on “Connect Wallet” from the top right corner and make sure your network is set to "Europa Defi Hub". Next, visit https://razorscan.io/staking or click on “Staking” from the menu bar on the header and you should see the screen below:

Step 3
Find the staker address in the Stakers table, click on Actions and now if the connected address has an unstake lock active, Initiate Withdraw will be allowed. It will also have a tooltip which specifies the epochs that it is to be called within. Note: This can also be done from the particular staker or delegator page.

Step 4
A modal will show, with the corresponding Unstake Lock details. Use the state bar to make sure the current state is not Propose or Dispute and click the “Initiate” button and confirm the transaction.
Note: Refer to the state bar to get the current state and an ETA for the next state.

Step 5
Once the transaction is successful, Withdraw will need to be called after T + withdrawLockPeriod epoch. Consider T as epoch in which initiate withdraw was called.

Note: To get the exact values of the lock periods check Governance here.
Using SKALE Block Explorer (Alternative method)
This method allows you to initiate withdrawal directly by interacting with the StakeManager smart contract through the SKALE Block Explorer. This is recommended for advanced users who are comfortable with direct contract interaction.
Prerequisites
Before initiating withdrawal via the block explorer, ensure you have:
- Metamask wallet installed and configured
- Europa Defi Hub network added to Metamask (see network details)
- sFUEL tokens for gas fees (get from SKALE Portal after connecting wallet)
- Completed unstaking - You must have called unstake previously
- Unstake lock expired - The
unstakeLockPeriodmust have passed - Within initiation window - You must be within the
withdrawInitiationPeriod - Correct state - Current state must NOT be Propose or Dispute (must be Commit state)
Contract Addresses
Mainnet (Europa Defi Hub):
- StakeManager:
0xd492408e4901CF658c7874285984F6D5Db648D1E
Testnet (Europa Defi Hub Testnet):
- StakeManager:
0xbeCf5d1b74d0C2A6388c65491BBb4aD3880cD012
Step-by-Step Instructions
Step 1: Verify Prerequisites
Before calling initiate withdraw, verify:
Check Unstake Lock Status:
- Visit the StakeManager contract on the block explorer (links above)
- Go to the "Read Contract" tab
- Find the
locksfunction - Enter your parameters:
- address: Your wallet address
- tokenAddress: The sRZR token address for your staker
- lockType:
0(for Unstake lock)
- Click "Query" and check the result:
amount: Should be greater than 0unlockAfter: Should be less than or equal to current epoch
Check Current State:
- Find the
getStatefunction in the Read Contract tab - Enter
bufferparameter (usually5) - Click "Query" - the result should be
0(Commit state) - If it's
1(Propose) or2(Dispute), wait a few minutes and try again
Important: Do NOT call initiate withdraw during Propose or Dispute states, as it will fail.
Step 2: Find Your Staker ID
You need the Staker ID for your staker:
- Visit the StakeManager contract on the block explorer (links above)
- Go to the "Read Contract" tab
- Find the
getStakerIdfunction - Enter your wallet address
- Click "Query" - the result is your Staker ID
Alternatively, you can find your Staker ID on Razorscan.
Step 3: Navigate to StakeManager Contract
Visit the StakeManager contract on the block explorer:
Click "Connect Wallet" and approve the Metamask connection
Verify your wallet is connected and you're on the correct network (Europa Defi Hub)
Step 4: Execute Initiate Withdraw Function
Navigate to the "Write Contract" tab
Scroll down and find the
initiateWithdrawfunctionFill in the parameters:
- stakerId (uint32): Enter your Staker ID from Step 2 (e.g.,
42)
- stakerId (uint32): Enter your Staker ID from Step 2 (e.g.,
Click "Write" to submit the transaction
Review the transaction details in the Metamask popup
Click "Confirm" in Metamask
Important Notes:
- This function only requires the Staker ID parameter
- It will burn your locked sRZR tokens and lock equivalent RAZOR tokens
- The RAZOR tokens will be locked for
withdrawLockPeriod(currently 300 epochs) - Must be called during Commit state (not Propose or Dispute)
Step 5: Verify Transaction
- After confirming in Metamask, wait for the transaction to be processed
- Once confirmed, you'll see a success message in the block explorer
- Click on the transaction hash to view transaction details
- You can verify your initiate withdraw by:
- Checking the transaction logs for a
WithdrawInitiatedevent - Visiting your wallet on Razorscan to see your withdraw lock status
- Querying the
locksfunction withlockType: 1(Withdraw lock) to see your new lock
- Checking the transaction logs for a
Step 6: Next Steps
After successfully initiating withdrawal:
- Wait for withdrawLockPeriod (currently 300 epochs) to pass
- Call Withdraw to claim your RAZOR tokens
- Track your lock status on Razorscan
Common Issues and Troubleshooting
Transaction fails with "Unstake: NA Propose"
- Current state is Propose
- Wait a few minutes for the state to change to Commit
- Check the current state using the method in Step 1
Transaction fails with "Unstake: NA Dispute"
- Current state is Dispute
- Wait a few minutes for the state to change to Commit
- Check the current state using the method in Step 1
Transaction fails with "Did not unstake"
- You don't have an active unstake lock
- You must call unstake first
Transaction fails with "Withdraw epoch not reached"
- The unstake lock period hasn't expired yet
- Wait until the
unlockAfterepoch has passed - Check your lock status using the method in Step 1
Transaction fails with "Initiation Period Passed"
- You missed the withdrawal initiation window
- The unstake lock has expired beyond the
withdrawInitiationPeriod - You must call Reset Lock (which incurs a penalty)
Transaction fails with "Withdraw lock present"
- You already have an active withdraw lock
- Complete the Withdraw process first
Transaction fails with "staker doesnt exist"
- Invalid Staker ID
- Double-check your Staker ID is correct
Transaction fails with "No razor to withdraw"
- The calculated RAZOR amount is 0
- This shouldn't happen if you followed the unstake process correctly
Understanding the Withdrawal Process
The complete withdrawal process has 3 steps:
- Unstake: Lock sRZR tokens for
unstakeLockPeriod(300 epochs) - Initiate Withdraw (this step): Burn sRZR and lock RAZOR for
withdrawLockPeriod(300 epochs) - Withdraw: Claim locked RAZOR tokens
Important Timing:
- After unstaking at epoch
T, you can initiate withdraw after epochT + 300 - You must initiate withdraw before epoch
T + 450(300 + 150 window) - If you miss this window, you must call Reset Lock with a penalty
- After initiating withdraw at epoch
T2, you can withdraw after epochT2 + 300
State Requirements
Why can't I call during Propose or Dispute?
- During Propose and Dispute states, validators are actively participating in the consensus process
- Inactivity penalties are calculated during these states
- The initiate withdraw function calls
giveInactivityPenaltieswhich requires the state to be Commit - This ensures all pending penalties are applied before withdrawal
How to check current state:
- Use Razorscan's state indicator on the homepage
- Query
getStatefunction on the StakeManager contract - States cycle through: Commit → Propose → Dispute → Commit (approximately every few minutes)
Lock Periods
Current network parameters (verify on Razorscan Governance):
- unstakeLockPeriod: 300 epochs (time after unstake before you can initiate withdraw)
- withdrawInitiationPeriod: 150 epochs (window to call initiate withdraw)
- withdrawLockPeriod: 300 epochs (time after initiate withdraw before you can withdraw)
Related Operations
Before this operation:
- Unstake - Must be completed first
After this operation:
- Wait for withdrawLockPeriod to pass
- Withdraw - Claim your RAZOR tokens
If you miss the window:
- Reset Lock - Extend the unstake lock (incurs penalty)