$RARE Curation Staking
Last updated
Last updated
Author: SuperRare Labs, koloz
The Staking Registry interface containing all functions, events, etc.
Increase amount staked when a user stakes.
Parameters
_staker
address
The user who is staking.
_stakedOn
address
The user who is being staked on.
_amount
uint256
The amount of $RARE that has been staked.
Decrease the amount staked when a user unstakes.
Parameters
_staker
address
The user who is unstaking.
_stakedOn
address
The user who was being staked on.
_amount
uint256
The amount of $RARE that has been unstaked.
Set staking addresses for a target.
Parameters
_user
address
Address of the target whose staking address is being set.
_stakingAddress
address
Address of the staking pool contract.
_rewardSwapAddress
address
Address of the reward swap contract.
Set the default payee.
Parameters
_payee
address
Address of the account to be the new default payee.
Set the reward swap discount percentage.
Parameters
_percentage
uint256
The new discount percentage.
Set the unstake deflationary percentage.
Parameters
_percentage
uint256
The new deflactionary percentage.
Set the round period length time.
Parameters
_periodLength
uint256
The new period start.
Set the ENS reverse registrar address.
Parameters
_reverseRegistrar
address
The new period start.
Set the ENS resolver address.
Parameters
_resolver
address
The new period start.
Set the uniswap pool address for the given ERC20 token.
Parameters
_uniswapPool
address
Address of uniswap pool.
_token
address
Address of ERC20 contract.
Set stakee percentage.
Parameters
_stakeePercentage
uint256
The new stakee percentage.
Set claimer percentage.
Parameters
_claimerPercentage
uint256
The new stakee percentage.
Pools to transfer $RARE tokens, usually into pools. This is so users only need to approve the registry when staking or performing reward swaps.
Parameters
_from
address
Address to transfer the tokens from.
_to
address
Address to transfer the tokens to.
_amount
uint256
uint256 amount to transfer.
Get the address for sending rewards if there are no stakers.
Returns
<none>
address
address to send rewards to.
Get the swap pool address for the ERC20 token.
Returns
<none>
address
address of the swap pool associated with the token.
Retrieve the address of $RARE.
Returns
<none>
address
address Address of $RARE (the staking token to be used).
Retrieve the address of Wrapped Ethereum.
Returns
<none>
address
address Address of Wrapped Ethereum.
Get reward swap discount percentage.
Returns
<none>
uint256
uint256 discount percentage.
Get the unstake deflationary percentage.
Returns
<none>
uint256
uint256 deflationary percentage.
Get the stakee percentage.
Parameters
_user
address
Address of the user being staked on.
Returns
<none>
uint256
uint256 stakee percentage.
Get the claimer percentage.
Parameters
_user
address
Address of the user reawards are being claimed for.
Returns
<none>
uint256
uint256 claimer percentage.
Get the round period length.
Returns
<none>
uint256
uint256 period length.
Retrieves the staking info for a given user.
Parameters
_user
address
Address of user being queried.
Returns
<none>
Info
Info struct containing name, symbol, and staking address.
Retrieves the total amount of rare staked by a given user.
Parameters
_user
address
Address of the user staking.
Returns
<none>
uint256
uint256 Amount of rare the user is staking.
Retrieves the total amount of rare being staked on a given user.
Parameters
_user
address
Address of the user being staked on.
Returns
<none>
uint256
uint256 Amount of rare being staked on the user.
Retrieves a list of all the ERC20 staking contracts.
Returns
<none>
address[]
list of contracts users can use to stake.
Retrieves a list of all the users participating in staking.
Returns
<none>
address[]
list of addresses of all the users who are currently staking.
Retrieves a list of all the users being staked on.
Returns
<none>
address[]
list of addresses of all the users who are being staked on.
Query the users for the following staking addresseses.
Parameters
_stakingAddrs
address[]
Addresses of staking contracts being queried.
Bytes32 representation of the role used for setting the staking address of a user.
Returns
<none>
bytes32
bytes32 value of the staking info setter role.
Bytes32 representation of the admin role for granting the ability to set amount staked for a single user/total amount staked on a user.
Returns
<none>
bytes32
bytes32 value of the staking stat setter admin role.
Bytes32 representation of the role used for updating the amount being staked on a user/amount a user is staking globally.
Returns
<none>
bytes32
bytes32 value of the stat setter role.
Bytes32 representation of the role used for period length, deflationary percentages, and the default payee.
Returns
<none>
bytes32
bytes32 value of the staking config setter role.
Bytes32 representation of the role used for updating the ENS resolvers.
Returns
<none>
bytes32
bytes32 value of the ens setter role.
Bytes32 representation of the role used for updating uniswap pools.
Returns
<none>
bytes32
bytes32 value of the swap pool setter role.
Emitted via {setStakeePercentage} when the stakee update's their percentage.
Emitted via {setClaimerPercentage} when the stakee update's their percentage.
Emitted via {setDefaultPayee} when the defaultPayee is updated.
Emitted via {setDeflationaryPercentage} when the deflationaryPercentage is updated.
Emitted via {setDiscountPercentage} when the discountedPercent is updated.
Emitted via {setPeriodLength} when the periodLength is updated.
Emitted via {setReverseRegistrar} when the ENS reverse registrar is updated.
Emitted via {setResolver} when the ENS resolver is updated.
Emitted via {setSwapPool} when a new swap pool has been set.
Emitted when guarded functions are called by users without the necessary permissions.
Emitted via {setSwapPool} if the pool doesn't match the token and pairs with WETH.
Emitted via {setStakingAddress} if the user already has a staking address.
Emitted when Zero address provided where it is not allowed.
Error emitted in {transferRareTo} when a user performs an action that requires moving $RARE but has not made enough allowance for the registry.
Emitted when a percentage is beyond the specified limit.
Emitted when a Period Length is beyond the specified limit.
A struct holding the information about the target's staking contract.
Target being staked on is omitted as it's the key in the mapping used.
Author: SuperRare Labs, Koloz
The reward accumulator interface containing all functions, events, etc. for accumulating and swapping rewards.
Swap RARE for a discounted price on tokens stored
Parameters
_tokenOut
address
Address of the ERC20 to pay out with. If null address, then uses ETH.
_minAmountOut
uint256
Min amount one is willing to receive for the _rareIn.
_rareIn
uint128
The amount of RARE one is looking to trade.
Estimate the discounted $RARE price for a given token.
Parameters
_tokenOut
address
Address of the ERC20 token to be swapped for.
_rareAmountIn
uint128
uint128 amount of RARE to trade for the _tokenOut.
Returns
<none>
uint256
uint256 amount of _tokenOut for the _rareAmountIn.
Error emitted when user doesnt meet the criteria for call.
Error emitted via {rewardSwap} if reward swap doesn't have enough funds to perform the swap.
Error emitted via {rewardSwap} if the rare price is too low to handle the _minAmountOut requirement.
Error emitted via {rewardSwap} if _tokenOut is the $RARE address.
Emitted when an unsupported ERC20 token for reward swapping.
Inherits: IERC20Upgradeable
Author: SuperRare Labs, koloz
The Rare Staking Pool ERC20 (Rarity Pool) interface containing all functions, events, etc.
Allocates rewards for the current round with the given amount.
Parameters
_donor
address
Address of the account donating the $RARE.
_amount
uint256
Amount of $RARE being staked.
Snapshots the rewards for the current round. Anyone can call this.
Stake $RARE tokens to the target associated with the contract and receive synthetic tokens in return.
Parameters
_amount
uint256
Amount of $RARE being staked.
Unstake by returning synthetic tokens and receiving previously staked $RARE in return.
Parameters
_amount
uint256
Amount of synthetic tokens to unstake.
Claim rewards due to the _user for the supplied rounds. Rewards are proportional to the synthetic tokens held during the snapshot associated with each round. Throws if user has already claimed for a given round. Throws if current round is being claimed.
Parameters
_user
address
Address of user to claim on behalf of.
_rounds
uint256[]
List of uint256 round Ids to claim a reward for.
Query if a user has claimed their reward for a given round.
Parameters
_staker
address
Address of user being checked.
_round
uint256
The round being checked for.
Query total amount of $RARE a user has staked on this contract.
Parameters
_user
address
Address of staker.
Returns
<none>
uint256
uint256 Amount of $RARE staked.
Query current round. The current round is accumulating rewards.
Returns
<none>
uint256
uint256 Claim round id.
Name of the synthetic asset.
Returns
<none>
string
Name of the synthetic asset.
Symbol of the synthetic asset.
Returns
<none>
string
Symbol of the synthetic asset.
Query the target being staked on by this contract.
Returns
<none>
address
Address of target being staked on;
Retrieves a list of all the users that have staked.
Returns
<none>
address[]
list of addresses of all the users who are being staked on.
Total rewards available for the supplied round.
Returns
<none>
uint256
uint256 Amount of $RARE tokens allocated as rewards for round.
Query rewards for the supplied user address for the round supplied rounds. Does not omit rewards for rounds that have already been claimed. Allows for easier historical lookups.
Parameters
_user
address
Address of the user to get rewards.
_rounds
uint256[]
List of uint256 round ids to look up the rewards.
Returns
<none>
uint256
uint256 Amount of $RARE tokens rewarded.
Query rewards for the supplied user address for the round supplied rounds. Throws if any round has already been claimed.
Parameters
_user
address
Address of the user to get rewards.
_rounds
uint256[]
List of uint256 round ids to look up the rewards.
Returns
<none>
uint256
uint256 Amount of $RARE tokens rewarded.
Calculates the number of sRare yielded from staking.
Parameters
_totalSRare
uint256
Current supply of sRare.
_stakedAmount
uint256
Amount of RARE being staked.
Returns
<none>
uint256
uint256 Amount of synthetic tokens one would get for staking {_stakedAmount} given a totalSupply of {_totalSRare}.
Calculates the number of rare yielded from unstaking.
Parameters
_totalSRareByUser
uint256
Current balance of sRARE held by the given user.
_totalRareStakedByUser
uint256
Total Amount of RARE staked by the given user.
_unstakeAmount
uint256
Amount of sRare being traded in.
Returns
<none>
uint256
uint256 Amount of $RARE tokens one would get for unstaking {_unstakeAmount} given {_totalSRareByUser} and {_totalRareStakedByUser}.
Total rewards snapshotted since con.
Returns
<none>
uint256
uint256 Amount of $RARE tokens allocated as rewards.
List of all rounds with claim associated with them.
Returns
<none>
uint256[]
uint256[] claim round ids.
Get the unix creation time of the staking contract.
Returns
<none>
uint256
uint256 unix creation time of the contract.
Get the unix time of the most recent snapshot.
Returns
<none>
uint256
uint256 unix time of the most recent snapshot.
Total amount of Rewards claimed.
Returns
<none>
uint256
uint256 amount of rewards claimed.
Error emitted when user doesnt meet the criteria for call.
Error emitted via {claimRewardsForRounds} if sender has already claimed their reward one of the supplied rounds.
Error emitted via {claimRewardsForRounds} if too many rounds are supplied.
Error emitted via {claimRewardsForRounds} if claiming current round.
Error emitted via {claimRewardsForRounds} if claiming no rounds.
Error emitted via {unstake} when unstaking more synthetic tokens than is in their balance.
Error emitted via {unstake} when the sale return proves greater than the amount staked. This should be impossible.
Error emitted via {addRewards} if adding 0 rewards.
Author: charlescrain
The RewardAccumulator Factory interface containing all functions, events, etc.
Deploys a RewardAccumulator contract.
Parameters
_stakingAddress
address
Address of staking contract.
Returns
<none>
address payable
address Address of the RewardAccumulator contract.
Set the staking registry address field to be used.
Parameters
_stakingRegistry
address
Address of the new staking registry contract.
Set the RewardAccumulator template address to be used.
Parameters
_rewardTemplate
address
Address of the RewardAccumulator template.
Retrieve the currently used staking registry address.
Returns
<none>
address
address Address of the staking registry contract.
Retrieve the template contract
Returns
<none>
address
address Address of the template.
Emitted via {deployRewardSwap} when a new RewardAccumulator contract is deployed.
Author: SuperRare Labs, koloz
The Staking Factory interface containing all functions, events, etc.
Deploys a staking contract for the supplied target address. Reverts if address exists.
Parameters
_user
address
Address of the target to deploy staking contract for.
Returns
<none>
address
address Address of the staking contract.
Set the staking registry address field to be used.
Parameters
_stakingRegistry
address
Address of the new staking registry contract.
Set the rare staking ERC20 template address to be used.
Parameters
_rareStakingTemplate
address
Address of the staking ERC20 template.
Retrieve the currently used staking registry address.
Returns
<none>
address
address Address of the staking registry contract.
Retrieve the currently template of the staking ERC20 contract.
Returns
<none>
address
address Address of the staking ERC20 template to be used.
Emitted via {deployStaking} when a new staking contract is deployed.