SPA Buyback
Inherits: Initializable, OwnableUpgradeable, ReentrancyGuardUpgradeable
Author: Sperax Foundation
This contract allows users to exchange SPA tokens for USDs tokens.
Users can provide SPA tokens and receive USDs tokens in return based on the current exchange rate.
A percentage of the provided SPA tokens are distributed as rewards, and the rest are burned.
State Variables
veSpaRewarder
rewardPercentage
oracle
Functions
constructor
initialize
Contract initializer
Parameters
_veSpaRewarder
address
Rewarder's address
_rewardPercentage
uint256
Percentage of SPA to be rewarded
withdraw
Emergency withdrawal function for unexpected situations
Can only be called by the owner
Parameters
_token
address
Address of the asset to be withdrawn
_receiver
address
Address of the receiver of tokens
_amount
uint256
Amount of tokens to be withdrawn
updateRewardPercentage
Changes the reward percentage
Example value for _newRewardPercentage = 5000 for 50%
Parameters
_newRewardPercentage
uint256
New Reward Percentage
updateVeSpaRewarder
Update veSpaRewarder address
Parameters
_newVeSpaRewarder
address
is the address of desired veSpaRewarder
updateOracle
Update oracle address
Parameters
_newOracle
address
is the address of desired oracle
buyUSDs
Function to buy USDs for SPA for frontend
Parameters
_spaIn
uint256
Amount of SPA tokens
_minUSDsOut
uint256
Minimum amount out in USDs
getSPAReqdForUSDs
Calculates and returns SPA amount required for _usdsAmount
Parameters
_usdsAmount
uint256
USDs amount the user wants
Returns
uint256
Amount of SPA required
buyUSDs
Buy USDs for SPA if you want a different receiver
Parameters
_receiver
address
Receiver of USDs
_spaIn
uint256
Amount of SPA tokens
_minUSDsOut
uint256
Minimum amount out in USDs
distributeAndBurnSPA
Sends available SPA in this contract to rewarder based on rewardPercentage and burns the rest
getUsdsOutForSpa
Returns the amount of USDS for SPA amount in
Parameters
_spaIn
uint256
Amount of SPA tokens
Returns
uint256
Amount of USDs user will get
_getUsdsOutForSpa
Returns the amount of USDS for SPA amount in
Parameters
_spaIn
uint256
Amount of SPA tokens
Returns
uint256
Amount of USDs user will get
uint256
_getOracleData
Retrieves price data from the oracle contract for SPA and USDS tokens.
Returns
uint256
The price of USDS in SPA, the price of SPA in USDS, and their respective precisions.
uint256
uint256
uint256
_isValidRewardPercentage
Checks if the provided reward percentage is valid.
The reward percentage must be a non-zero value and should not exceed the maximum percentage value.
Parameters
_rewardPercentage
uint256
The reward percentage to validate.