The Offshift LP Staking Guide

cover.png

A complete guide for staking Offshift liquidity positions.

Welcome to the Offshift LP Staking Guide. This is a hands-on, step-by-step walkthrough of the staking process, and it includes full reward schedules and any other info you may need to begin staking. Before staking in either pool, be sure you understand how rewards are distributed, described under Reward Math in the beginning of each section. The guide is separated into two parts, Uniswap and SushiSwap. We’ll walk through Uniswap first, so if you’re only looking for the SushiSwap guide, you can jump to that section now.

Uniswap anonUSD/ETH LP Staking

Uniswap anonUSD/ETH LP Reward Schedule
PeriodXFT Per MonthXFT Per Year
Mar - Dec 2023800080000
Jan - Dec 2024700084000
Jan - Dec 2025600072000
Jan - Dec 2026500060000

*Reward Math - For every second between startTime and endTime, a constant amount of tokens are distributed proportionally among all in-range liquidity at that second.

When users provide anonUSD/ETH liquidity through Offshift’s Uniswap staking frontend, their liquidity is provided over the full range. Users who prefer to provide liquidity over a set range should use Uniswap’s frontend to LP, and then stake the position themselves by interacting directly with the contract. If you choose to do this, please make sure you understand all the associated risks. You can find more info at the end of this guide.

This guide assumes you have anonUSD and ETH in your wallet. You can acquire anonUSD by Shifting (instructions here) or through the market on Uniswap.

1. With anonUSD and ETH in your wallet, navigate to Offshift’s Uniswap Staking Page and connect your wallet.

Once connected, familiarize yourself with the dashboard. Note you’re on the Stake tab. There’s a wallet icon in the upper right, which we’ll get to in step five. Let’s define the metrics you see listed -

Unclaimed Rewards - the number of XFT yet to be distributed in the period.
End of Incentive - the time and date the current period ends.
Estimated APR - An estimation of return, expressed as (return value/position value).

2. In the anonUSD box, enter the number of anonUSD tokens you want to provide to the pool, and the Ether amount will autofill. Click Add Liquidity.

3. MetaMask will open and ask you to Give permission to access your anonUSD, the first of two transactions you’ll need to approve. Click Confirm.

After confirming in MetaMask, the Etherscan transaction detail is viewable via the Etherscan Receipt link displayed on the dashboard.

4. When the first transaction is confirmed by the network, MetaMask will open for approval of an Add Liquidity transaction. Click Confirm.

When the Add Liquidity transaction is confirmed by the network, you’re staking!

5. You can view your accrued rewards or withdraw your position at any time by clicking the wallet icon in the upper right.

The Staked Tokens menu opens, where you’ll find your Token ID, a link to view your position on Uniswap, and the amount of XFT rewards you’ve accrued.

6. Rewards are withdrawn when you withdraw your position from the staking contract. When you’re ready to claim rewards and withdraw, select your token and click Withdraw.

7. Confirm in MetaMask.

8. With the withdrawal confirmed by the network and your Positions NFT back in your wallet, navigate to the Uniswap Pool Management Page. Connect your wallet, then click your position to open the position detail.

9. When the position detail page opens, lick Remove Liquidity.

10. Using the slider or buttons, select the amount of liquidity you’d like to remove, then click Remove.

11. A Uniswap confirmation will pop up. Once again click Remove.

12. Confirm in Metamask.

When the transaction confirms, MetaMask shows the pooled anonUSD and ETH back in your wallet, along with the XFT you earned from rewards.

That concludes the Uniswap walkthrough. If you have any questions or run into any issues, please reach out in the official Offshift Telegram, where someone from the team or community will be happy to assist. For a walkthrough of SushiSwap staking, read on.


SushiSwap XFT/ETH LP Staking

SushiSwap XFT/ETH LP Reward Schedule
PeriodXFT Per MonthXFT Per Year
Mar - Dec 2023400040000
Jan - Dec 2024400048000
Jan - Dec 2025300036000
Jan - Dec 2026200024000

*Reward Math - Rewards are allocated according to a staker’s share of total SLP staked. A staker’s reward rate per block = xftPerBlock x Share; where Share = Stakers(yourAddress) / balanceOf rewardsContract.

This guide assumes you have XFT and ETH in your wallet. If you don’t, you can acquire XFT on Uniswap or SushiSwap.

1. With XFT and ETH in your wallet, navigate to the SushiSwap Add Liquidity page. Connect your wallet, and add liquidity into the XFT/ETH pool. For help with this step, refer to How to add tokens to SushiSwap Exchange as an LP in SushiSwap’s docs.

2. Once you’ve completed step one, you’ll have SushiSwap LP Tokens (SLP) in your wallet. Navigate to Offshift’s SushiSwap LP Staking Page and connect your wallet.

Familiarize yourself with the dashboard. There are three tabs - Stake, Unstake and Rewards. The Stake page shows your SLP Balance and an estimated APR, expressed as (return value/position value).

3. In the Amount box, enter the number of SLP tokens you’d like to stake (usually the full balance), then click Approve & Stake.

4. MetaMask will open and ask you to Give permission to access your SLP, the first of two transactions you’ll need to approve. Click Confirm.

5. When the first transaction is confirmed by the network, click Approve & Stake once more. MetaMask will open for approval of an Add Liquidity transaction. Click Confirm.

When the second transaction is confirmed by the network, you’re staking! Your SLP balance should now read zero on the dashboard (you may need to refresh the page depending on your browser).

6. Navigate to the Rewards tab. This is where you can view the amount of rewards you’ve accrued in real time. Accrued rewards can be harvested at any time, so let’s try it out. Click Harvest.

7. Metamask will open for approval of the Harvest transaction. Click Confirm. When the transaction is confirmed by the network, your Available XFT Rewards should read zero, and the XFT balance in your wallet should reflect the addition of the harvested XFT.

8. In the event you want to unstake, make sure you’ve harvested all available rewards, then navigate to the Unstake tab. Enter the amount of SLP you’d like to unstake in the Amount box, then click Unstake and Confirm in MetaMask.

To withdraw liquidity from the SushiSwap pool completely, make sure you’ve harvested all available rewards and unstaked your SLP from the Offshift dashboard, then proceed to the next step.

9. Navigate to the SushiSwap Position Overview page.and connect your wallet. Click your XFT-ETH position to expand, then click Remove.

10. Enter the Percent to Remove and then click Approve.

11. When Metamask opens, click Sign.

12. Click Confirm Withdrawal on the SushiSwap dash.

13. A SushiSwap confirmation will pop up. Click Confirm.

14. Finally, Confirm in MetaMask to withdraw your XFT and ETH.

That concludes the SushiSwap walkthrough. If you have any questions or run into any issues, please reach out in the official Offshift Telegram, where someone from the team or community will gladly try to assist.


Providing Set-Range Liquidity on Uniswap v3

(Continued from Uniswap section)

For more information on providing liquidity at set ranges, the following resources can be a good starting point.

Uniswap Labs: How to provide liquidity on Uniswap V3
Uniswap Labs: Can I provide liquidity over the full range on V3?
Uniswap Docs: Concentrated Liquidity

If, after familiarizing yourself with the associated risks, you choose to provide anonUSD/ETH liquidity over a set range through Uniswap’s frontend, and to stake the position yourself by interacting directly with the contract, you can follow these steps:

1. Follow the Uniswap Guide, and add liquidity through Uniswap’s frontend using the set price range of your choice.

2. Navigate to the Write Contract tab on the NonfungiblePositionManager Etherscan page.

3. Click Connect to Web3 and connect your wallet.

4. Scroll down to the safeTransferFrom function in box 11, and enter the following:

from: (your eth address)
to: 0xe34139463bA50bD61336E0c446Bd8C0867c6fE65
tokenId: (your 6-digit UniswapV3:PositionsNFT token ID)

5. When you’ve entered all the above information into box 11, click the blue Write button, then approve the transaction in MetaMask.

6. Navigate to the Write Contract tab on the Uniswap v3 Staker Etherscan page.

7. Click Connect to Web3 and connect your wallet.

8. Scroll down to the stakeToken function in box 6, and enter the following:

rewardToken: 0x76BC677d444f1E9d57dAf5187ee2b7dC852745aE
pool: 0x12DED3D75fAE8B27Cd7f2B1A469Fe088a3711DdE
startTime: 1677535200
endTime: 1704067199
refundee: 0x45A2498da5bB1BC8e66444e714A2F251B64e18a4
tokenId: (your 6-digit UniswapV3:PositionsNFT token ID)

9. When you’ve entered all the above information into box 6, click the blue Write button, then approve the transaction in MetaMask.

You can claimRewards, unstakeToken, and withdrawToken on the same Etherscan page, using the info in step three as necessary.