Staking

The STRIP Staking program is designed to reward long-term holders with extra tokens.

If this is your first time staking, you can follow the Step-By-Step Tutorial at the bottom of this page. Please read through the documentation on this page to understand the mechanics of staking.

Staking rewards, Round 1

Note: Staking Round 1 has completed it's distribution. No more tokens are being distributed as per this round's design.

Note: Rewards Period Start was earlier marked as having been on February 11th, which was incorrect.

Allocated rewards will be distributed to stakers pro-rata in relation to their share of the total staked amount. This means that if a lot of stakers stake with high amounts, less rewards are distributed per staker. Complementary each staker earns more rewards if fewer people with smaller stakes are there to compete for the rewards.

You will earn more if:

  • if you stake for a longer period.

  • if you stake a higher amount of STRIP.

  • if other stakers stake with a lesser total amount of STRIP.

The full rewards allocation of 10 billion STRIP tokens will be distributed to stakers regardless of other variables, the other variables only determine who gets what percentage of the allocation.

xSTRIP token

The xSTRIP token represents a share of the staking pool.

When stakers stake their STRIP tokens into the staking smart contract, the contract takes the staked STRIP, and in return mints xSTRIP tokens into the staker's wallet. The amount of STRIP tokens needed to mint a single xSTRIP token is given by the xSTRIP Multiplier metric displayed on the Staking page.

After staking STRIP and receiving xSTRIP tokens, the received xSTRIP tokens can then be unstaked to redeem STRIP tokens again, at the rate of the multiplier.

The xSTRIP Multiplier increases linearly from the start of the rewards period until the end. This means the amount of STRIP tokens redeemed by unstaking will be higher than the amount used to stake, more so if you wait longer. This mechanic is how you earn Staking rewards.

APR, Annual Percentage Rate

This metric gives you rough idea of the scale of rewards to expect on top of your staked amount, if the total staked amount were to stay the same and if the rewards period were to last a full year.

However, in reality the total staked amount will keep changing as people stake and unstake over time. At any given moment the APR only shows a very hypothetical, instantaneous estimation. Note also that the APR shows an estimation for the hypothetical case where the rewards would stay the same for a year, while the Round 1 staking program only lasts for 3 months. So the rate on top of your staked amount if you were to stake from start to finish would be 1/4th of the APR.

There is no way to additionally compound the rewards, so APR equals APY for this staking program.

Smart Contracts

The STRIP Staking smart contract is deployed on Ethereum mainnet. The smart contract addess is 0x02571De0598eFeBB7A6f53e03CBC239d04629CbA . You can view it on Etherscan here:

The smart contracts used for STRIP Staking Round 1 are based on this GitHub repository:

These contracts are based on widely used Synthetics staking contracts, with modernized design to improve readability, optimize gas fees, etc.

Due to the design, Etherscan pages for the pool contracts cannot be verified.

The pools are created by cloning 'mother contracts', which will be verified and which you can inspect in detail. You can also review the factory contract and the method of cloning, so you should be able to confirm the validity of the contracts.

Since the pool contracts cannot be verified on Etherscan, you can't interact with them with direct method calls via Etherscan's WRITE tab. This is why ABIs will be provided on this page, here:

STRIP Staking Pool Contract ABI:

[{"inputs":[],"name":"Error_AlreadyInitialized","type":"error"},{"inputs":[],"name":"Error_AmountTooLarge","type":"error"},{"inputs":[],"name":"Error_NotRewardDistributor","type":"error"},{"inputs":[],"name":"Error_ZeroOwner","type":"error"},{"inputs":[],"name":"Ownable_NewOwnerZeroAddress","type":"error"},{"inputs":[],"name":"Ownable_NotOwner","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"DURATION","outputs":[{"internalType":"uint64","name":"DURATION_","type":"uint64"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"exit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isRewardDistributor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastTimeRewardApplicable","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUpdateTime","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"reward","type":"uint256"}],"name":"notifyRewardAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodFinish","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPerTokenStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardToken","outputs":[{"internalType":"contract ERC20","name":"rewardToken_","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"rewardDistributor","type":"address"},{"internalType":"bool","name":"isRewardDistributor_","type":"bool"}],"name":"setRewardDistributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakeToken","outputs":[{"internalType":"contract ERC20","name":"stakeToken_","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userRewardPerTokenPaid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

Step-By-Step Tutorial

NOTE: if you have your STRIP vested, you must first WITHDRAW your withdrawable STRIP from the vesting contract before you can stake it. Ignore this if you bought your STRIP from Uniswap.

How to Stake:

On desktop:

  1. Make sure your wallet is connected (if not, click on CONNECT WALLET).

  2. Input the amount of STRIP you wish to stake in the first input field. You can click on MAX to input your entire wallet balance.

  3. Click on the STAKE button. If this is your first time staking STRIP, then you will need to confirm two transactions in your wallet software, first one approving spending, second one actually staking. If you have already staked earlier, you only need to confirm one transaction.

  4. Wait for the transactions to get confirmed on the blockchain. This shouldn't take much longer than a minute.

Your STRIP should now be succesfully staked. You will receive xSTRIP tokens in return for your STRIP. The xSTRIP tokens represent your share of the staking pool, and you can use them to redeem your share when you wish.

On mobile (MetaMask):

On mobile the procedure is the same as on desktop, but depending on your mobile device settings, you might need to manually copy-paste the Staking page address into your MetaMask Browser.

  1. Open the MetaMask application in your mobile device.

  2. Open the menu by clicking on the top-left icon.

  3. Open the BROWSER.

  4. Select the address bar.

  5. Paste the address, and click the ENTER button.

Now you can follow the steps laid above for the desktop version.

How to Unstake:

  1. Make sure your wallet is connected (if not, click on CONNECT WALLET).

  2. Input the amount of xSTRIP you wish to stake in the second input field under the UNSTAKE title. You can click on MAX to input your entire wallet balance.

  3. Click on the UNSTAKE button. You will need to confirm the transaction in your wallet software.

  4. Wait for the transactions to get confirmed on the blockchain. This shouldn't take much longer than a minute.

You should now have successfully unstaked, and you should see STRIP in your wallet again, but this time with a higher amount.

Questions?

If you have remaining questions, see if they are answered under the "Staking" section in the FAQ:

Last updated