SPIN Staking is an incentive program for the Spin token holders that stimulates users to stake their SPIN thus decreasing the token's selling pressure.
SPIN – the native protocol token can be staked. For staking, the user receives:
- 50% of the Spin fees, proportional to the amount of SPIN staked (paid in USDC);
- and Spin Points (SPs).
The number of escSPIN which is an analog of the usual incentive program to be received by the users will be determined later. The staking pool contains N number of escSPINs, which are distributed among the SPIN stakers during the period for which this incentive is calculated. In the next period, the amount changes based on the current APY, the dynamics of the price of the token, and the number of tokens in staking.
escSPIN RPB – user's reward for 1 block;
RPB – reward per block;
Σ(SPIN staked + escSPIN staked) - the sum of tokens staked by all users.
The number of Spin Points received is 100% APR, based on the number of staked SPIN and escSPIN.
The formula for calculating the number of SPIN tokens to be reserved for escSPIN vesting looks as follows:
i – all iterations, where the user claimed a staking reward;
SPIN reserved – the number of SPIN tokens to be reserved for escSPIN vesting;
SPIN used for earning – the amount of SPIN used to mine the corresponding amount of escSPIN;
escSPIN earned – the amount of escSPIN mined by the corresponding amount of SPIN and escSPIN.
In Stage 0, the user stakes 100 SPIN.
In Stage 1, the user increases the number of SPIN in staking up to 200. The reward of 10 escSPIN is automatically claimed and the user stakes 10 escSPIN. The smart contract accepts the information that 10 escSPIN was mined using 100 SPIN.
In Stage 2, the user reduces the number of SPIN in staking to 50. The reward of 20 escSPIN from SPIN staking and 1 escSPIN from escSPIN staking is automatically claimed. All rewards are added to staking. The smart contract accepts the information that 20+1 escSPIN is mined with 200 SPIN (escSPIN used to mine escSPIN is not taken into account).
Suppose that after Stage 3, the user decides to vest all escSPINs they have earned before, or 39.1 tokens. In this case, the amount of SPIN required for the vesting equals:
This way, SPIN tokens have 4 states:
- Staked and reserved for escSPIN vesting (you can cancel escSPIN vesting and withdraw from the reservation at any time);
- Held in the user's wallet;
- Ready to be claimed after escSPIN vesting.
escSPIN (Escrowed SPIN) is a non-transferable token, credited as an incentive for staking.
escSPIN can be used in two ways:
- 1.Staking. When staked, escSPIN receives rewards similar to the SPIN staking rewards.
- 2.Vesting. When escSPIN is deposited to vesting, it stops receiving rewards and is unlocked gradually over the course of a year. When an escSPIN token is vested, the amount of SPIN that was used to mine the escSPIN is reserved for it. The reserved SPIN tokens still generate a yield from staking. In the event that the SPIN tokens are withdrawn from the reservation, escSPIN vesting is suspended.
escSPIN vesting is calculated according to the formula:
day a – vesting start day (after the SPIN tokens are claimed it is not updated for a new date);
day b – current day;
SPIN claimed – SPIN tokens already claimed by the user.
This way, escSPIN has 4 states:
- Waiting for a claim or compound;
- Held in the user's wallet;
- Deposited to vesting.
Spin Point (SP) is a non-transferrable token, credited in proportion to the time and number of SPIN and escSPIN in staking.
In case of unstaking, SPIN or escSPIN Spin Points are burned in proportion to the number of tokens withdrawn from staking. Spin Points are boosting the profits from protocol fees received by the user. The number of Spin Points cannot be greater than the sum of the user's SPIN + escSPIN. Spin Points reward is calculated according to the formula:
day a – vesting start day (after the tokens are claimed it is updated for a new date);
day b – current day.
Example: A user staked 260 SPIN and 7 escSPIN. In a week, the number of earned (but not yet claimed) Spin Points will be 267/365*7=5.12.
Spin Points are burned according to the formula:
SPIN Unst – the number of SPINs that the user withdraws from staking;
escSPIN Unst – the number of escSPINs that the user withdraws from staking.
Example: A user has 500 SPIN and 250 escSPIN staked. The user's Spin Points are 57. The user wants to withdraw 150 escSPIN from staking. In this case, 11,4 Spin Points will be burned.
Spin Points boost the staking rewards according to the formula:
Example: A user has 500 SPIN and 250 escSPIN staked. The user stakes 57 Spin Points. In this case, the APR is boosted by 57/(500+250)=7.6%
This way, Spin Points have 2 states:
- Waiting for a compound;