Comment on page
Need to unstake your FLIP for some reason? It's just as easy as staking.
When you unstake your stFLIP, you exchange it for native FLIP.
For e.g, if you originally staked 1000 FLIP, you'll have received around 1000 stFLIP (perhaps slightly more due to the stakeaggregator). If you held your stFLIP for a year and earned 50% in rewards, your balance will now be 1500 stFLIP. When you burn the stFLIP, you'll receive back 1500 native FLIP.
Just like when staking, the first step is to connect your wallet.
Connect via one of the two buttons.
Once your wallet is connected, the 'Connect Wallet' button will change to 'Approve'. Users will need to approve their stFLIP for spending via a transaction before they are able to use the 'Submit Unstake' button.
When unstaking stFLIP, users need to be aware of how much they approve. In short, they will need to approve a higher amount of stFLIP than they actually own.
This is becuase stFLIP rebases every single block to give rewards (even though they might not be distributed yet). This can cause an error when simply selecting 'max' in metamask and other wallets.
The example below shows a wallet with 99.99 stfLIP, but the spending cap to approve set at 110. This is an example, as our website will automatically select a % buffer higher than the owned stFLIP amount. The important thing is to not reset this to 'max' when unstaking as the transaction is likely to fail.
You may have to approve multiple times if these directions are not followed. This is becuase we do not allow 'unlimited approvals' 'forever', from our dapp.
In fact, this would be dangerous. (Although many dapps prefer to request these unlimited token approvals from users so that they don’t have to call approve() repeatedly) While this is gas efficient, doing so leaves users exposed to a high level of risk, which we want to avoid. Therefore we request approvals every time.
After you've approved, here's an example of what you might see. Here is a user who has an amount of 437 stFLIP approved to spend, if they were to try and unstake 450, then the transaction would fail.
Once your wallet is connected and stFLIP is approved, enter how many stFLIP you would like to unstake for FLIP.
If the Unstake contract has sufficient FLIP, the unstake will be instant, and you will recieve your FLIP immediately.
If there isn't enough FLIP in the pool for an immediate unstake, you will have to wait until the chainflip auction ends and native FLIP can be unstaked from a validator node.
Auction epochs are subject to change, but they are estimated to be around 24 hours when both mainnet and swapping are live, so this would be the maximum amount of time users would have to wait to recieve back native FLIP if there is not enough immediately available in the pool.
The routing will look like this. The top "Unstake" denotes the portion that can be instantly claimed from the Unstake contract; the bottom "Unstake Request" denotes the portion that will go into an unstake request that will become claimable at the beginning of the next auction.
Using the Curve pool for unstaking
You can check the progress of the current validator auction on the same unstake page, which looks like this depending on the epoch time blocks:
Validator auction status
If you don't want to wait for an unstake request, there is an 'Instant Unstake' button in order to sell current stFLIP into the curve pool for native FLIP. If this option is taken, there may be a significant difference in the amount of FLIP recieved due to slippage on the open market. The percentage loss here is hugely exaggerated as it is on testnet, but the instant unstake option looks like this:
Instant unstake routes through the Curve pool.
Confirm this in your wallet, as usual.
Upon unstake, you will recieve native FLIP. Note that native FLIP does not rebase like stFLIP, and you will no longer accrue rewards from validator nodes.