xSPA token

xSPA is a reward token of the Sperax ecosystem. xSPA can be either staked for veSPA with a lockup of 180 days or more, or redeemed within 15 to 180 days giving 50% to 100% SPA upon redemption.

Summary / Abstract

Earlier in 2023, SperaxDAO decided on the SPA budget for emission through Gauge (SIP-32) and redirecting veSPA emissions to bribes on Gauge (SIP-33). Every week, Gauge emits 2.9 M SPA and veSPA voters are bribed 383K SPA. This SPA should be used more prominently and assertively to drive USDs growth and bring new adoption.

Motivation

Since the start of SPA Gauge, USDs total supply has decreased from $2M to $1.78M. In the meantime, SPA Gauge has emitted about 80M SPA amounting to $392K. The SPA circulating supply has increased from 1.593B to 1.658B.

Emitting SPA in a predetermined manner and without assessing the market dynamics is improper utilization of resources. Since our target is to increase USDs adoption which will help in growing the Sperax ecosystem and its participants, we must rethink our overall strategy.

Overview

Apart from maintaining the target to make SPA deflationary, SperaxDAO should ensure that the emission is invested back into the ecosystem and contributes directly towards increasing the USDs adoption and supply.

All SPA emissions should have a looping effect such that a good portion of SPA distributed should be invested back into the ecosystem in the form of veSPA and increase the burning rate of SPA. Since the emissions are not helping in increasing either USDs adoption or the locked tokens. The recent increment in veSPA numbers is primarily driven by the team token allocation in veSPA. The Sperax ecosystem is steadily moving towards complete decentralization of protocols and hence should have more governance participation.

The Sperax ecosystem should have a new reward token. A token which can be staked as veSPA or redeemed for SPA. After drawing some inspiration from the Camelot emission strategy, the core team proposes the launch of a new token called xSPA. Users can either stake 1 xSPA for one veSPA or redeem 1 xSPA for 1 SPA.

Technical overview

Users can redeem 1 xSPA token for SPA by depositing their xSPA token through the redemption contract. Users can stake 1 xSPA in veSPA to increase their staked SPA balance. The relation between xSPA, SPA, and veSPA will be governed by the following rules

  • 1 xSPA will be equivalent to 1 SPA.

  • Users can redeem 1 xSPA for 1 SPA if they lock the xSPA in the redemption contract for 180 days, the maximum redemption period.

  • Users can redeem 1 xSPA for 0.5 SPA if they lock the xSPA in the redemption contract of 15 days, the minimum redemption period.

  • If the redemption period is ‘x’, between 15 and 180 days, the amount of SPA a user gets is governed by the following equation: Receivable spaAmount = (_xSpaAmount * (_redeemDuration + 150 days)) / 330 days

  • A redemption request cannot be modified or canceled.

  • The redemption contract will instantly burn any differential SPA

    • In case of the minimum locking period of 15 days, half the SPA tokens will be burnt right away and users can claim their SPA tokens after 15 days.

    • In case of a maximum locking period of 180 days, no SPA will be burnt and users can claim their SPA token after 180 days.

    • In case of a period between 15 and 180 days, SPA burnt is: SpaBurnt = _xSpaAmount - Receivable spaAmount Users can claim their SPA tokens after the locking period.

  • Users can stake 1 xSPA token in the veSPA contract to increase their staked SPA balance by 1 SPA token for the existing lockup period if the lockup period is greater than 180 days.

    • If the user has 0 staked balance, the system will throw an error and will ask the user to create a staked position with a minimum staking period of 180 days

    • If the user has staked balance but the lockup is less than 180 days, the system will throw an error and ask the user to increase the locking period to a minimum of 180 days

    • Users will be able to increase their staked position if the lockup period is above 180 days.

  • xSPA token is transferrable.

  • The staking and redemption criteria can be updated/modified through governance.

How to get, deposit and redeem xSPA token.

Getting xSPA from SPA:

  1. Allow xSPA token contract to transfer SPA from your account by calling approve function on SPA token contract by passing spender as 0x0966E72256d6055145902F72F9D3B6a194B9cCc3 xSPA’s address and amount as the desired amount of xSPA you would like to have. Note: To allow 1 SPA pass 1000000000000000000 i.e 1e18 as amount in the approve function.

  2. Call this mint function on xSPA contract by passing the amount if you want to receive xSPA on your account or this mint function by passing the address of the receiver account and amount if you want to receive the xSPA on another account.

  3. Check your xSPA balance by calling balanceOf function on by passing in your account’s address.

Depositing xSPA for redeeming SPA:

  • The minimum redemption period is 15 days in which you will receive only 100/2 = 50 SPA after 15 days.

  • The maximum redemption period is 180 days in which you will receive all your 100 SPA back for your 100 xSPA.

  • If you select any period between 15 days to 180 days, the SPA amount redeemed would be calculated on pro rata basis between 50% to 100% of SPA for your xSPA. You can get this amount by calling getSpaforxSPA function on the xSPA contract by passing the xSPA amount with precision and your redeemDuration in seconds between 1296000 (15 days) to 15552000 (180 days) and it will return the SPA amount you will receive at the end of your redemption period.

  • To create a redemption request you can call createRedemptionRequest on the xSPA contract by passing the xSPA amount with precision and the redeem duration between the range specified above. It returns the redemption request ID which will be used to track and claim later.

Redeeming xSPA for SPA:

  • Once you have created a redemption request in the above step, you can see and track your redemption request by calling redemptionRequests function on the xSPA contract by passing your redemption request ID, it returns the requester’s address, unlock time in unix epoch and spa amount which will be unlocked.

  • Once the current unix epoch time is more than the unlock time of the redemption request, you can call the redeemSPA function by passing in your redemption request ID if you want to receive the SPA tokens on your account otherwise you can call this function by passing an address of another account as receiver and your request ID to send the SPA to another account.

Redeeming xSPA for veSPA:

  • For this redemption you must have an existing veSPA lock for at least 180 days or more, if you do not have, you can call createLock function on the veSPA contract by passing the amount, lock duration (minimum 180 days) and auto cooldown preference.

  • If you have an active veSPA lock for at least 180 days or more, you can call stakeXSpa function on the xSPA token contract and your veSPA balance would be increased immediately.

Last updated