$RARE Curation Staking
IRareStakingRegistry
Author: SuperRare Labs, koloz
The Staking Registry interface containing all functions, events, etc.
Functions
increaseAmountStaked
Increase amount staked when a user stakes.
Parameters
decreaseAmountStaked
Decrease the amount staked when a user unstakes.
Parameters
setStakingAddresses
Set staking addresses for a target.
Parameters
setDefaultPayee
Set the default payee.
Parameters
setDiscountPercentage
Set the reward swap discount percentage.
Parameters
setDeflationaryPercentage
Set the unstake deflationary percentage.
Parameters
setPeriodLength
Set the round period length time.
Parameters
setReverseRegistrar
Set the ENS reverse registrar address.
Parameters
setResolver
Set the ENS resolver address.
Parameters
setSwapPool
Set the uniswap pool address for the given ERC20 token.
Parameters
setStakeePercentage
Set stakee percentage.
Parameters
setClaimerPercentage
Set claimer percentage.
Parameters
transferRareTo
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
getDefaultPayee
Get the address for sending rewards if there are no stakers.
Returns
getSwapPool
Get the swap pool address for the ERC20 token.
Returns
getRareAddress
Retrieve the address of $RARE.
Returns
getWethAddress
Retrieve the address of Wrapped Ethereum.
Returns
getDiscountPercentage
Get reward swap discount percentage.
Returns
getDeflationaryPercentage
Get the unstake deflationary percentage.
Returns
getStakeePercentage
Get the stakee percentage.
Parameters
Returns
getClaimerPercentage
Get the claimer percentage.
Parameters
Returns
getPeriodLength
Get the round period length.
Returns
getStakingInfoForUser
Retrieves the staking info for a given user.
Parameters
Returns
getTotalAmountStakedByUser
Retrieves the total amount of rare staked by a given user.
Parameters
Returns
getTotalAmountStakedOnUser
Retrieves the total amount of rare being staked on a given user.
Parameters
Returns
getAllStakingContracts
Retrieves a list of all the ERC20 staking contracts.
Returns
getAllStakers
Retrieves a list of all the users participating in staking.
Returns
getAllStakedOn
Retrieves a list of all the users being staked on.
Returns
getUsersForStakingAddresses
Query the users for the following staking addresseses.
Parameters
STAKING_INFO_SETTER_ROLE
Bytes32 representation of the role used for setting the staking address of a user.
Returns
STAKING_STAT_SETTER_ADMIN_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
STAKING_STAT_SETTER_ROLE
Bytes32 representation of the role used for updating the amount being staked on a user/amount a user is staking globally.
Returns
STAKING_CONFIG_SETTER_ROLE
Bytes32 representation of the role used for period length, deflationary percentages, and the default payee.
Returns
ENS_SETTER_ROLE
Bytes32 representation of the role used for updating the ENS resolvers.
Returns
SWAP_POOL_SETTER_ROLE
Bytes32 representation of the role used for updating uniswap pools.
Returns
Events
StakeePercentageUpdated
Emitted via {setStakeePercentage} when the stakee update's their percentage.
ClaimerPercentageUpdated
Emitted via {setClaimerPercentage} when the stakee update's their percentage.
DefaultPayeeUpdated
Emitted via {setDefaultPayee} when the defaultPayee is updated.
DeflationaryPercentageUpdated
Emitted via {setDeflationaryPercentage} when the deflationaryPercentage is updated.
DiscountPercentageUpdated
Emitted via {setDiscountPercentage} when the discountedPercent is updated.
PeriodLengthUpdated
Emitted via {setPeriodLength} when the periodLength is updated.
ReverseRegistrarUpdated
Emitted via {setReverseRegistrar} when the ENS reverse registrar is updated.
ResolverUpdated
Emitted via {setResolver} when the ENS resolver is updated.
SetSwapPool
Emitted via {setSwapPool} when a new swap pool has been set.
Errors
Unauthorized
Emitted when guarded functions are called by users without the necessary permissions.
InvalidPool
Emitted via {setSwapPool} if the pool doesn't match the token and pairs with WETH.
StakingContractAlreadyExists
Emitted via {setStakingAddress} if the user already has a staking address.
ZeroAddressUnsupported
Emitted when Zero address provided where it is not allowed.
InsufficientRareAllowance
Error emitted in {transferRareTo} when a user performs an action that requires moving $RARE but has not made enough allowance for the registry.
PercentageBeyondLimit
Emitted when a percentage is beyond the specified limit.
PeriodLengthBeyondLimit
Emitted when a Period Length is beyond the specified limit.
Structs
Info
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.
IRewardAccumulator
Author: SuperRare Labs, Koloz
The reward accumulator interface containing all functions, events, etc. for accumulating and swapping rewards.
Functions
initialize
rewardSwap
Swap RARE for a discounted price on tokens stored
Parameters
estimateRarePrice
Estimate the discounted $RARE price for a given token.
Parameters
Returns
Events
RewardAccumulator
Errors
Unauthorized
Error emitted when user doesnt meet the criteria for call.
InsufficientFunds
Error emitted via {rewardSwap} if reward swap doesn't have enough funds to perform the swap.
RarePriceTooLow
Error emitted via {rewardSwap} if the rare price is too low to handle the _minAmountOut requirement.
CannotSwapRareForRare
Error emitted via {rewardSwap} if _tokenOut is the $RARE address.
UnsupportedERC20Token
Emitted when an unsupported ERC20 token for reward swapping.
IRarityPool
Inherits: IERC20Upgradeable
Author: SuperRare Labs, koloz
The Rare Staking Pool ERC20 (Rarity Pool) interface containing all functions, events, etc.
Functions
initialize
addRewards
Allocates rewards for the current round with the given amount.
Parameters
takeSnapshot
Snapshots the rewards for the current round. Anyone can call this.
stake
Stake $RARE tokens to the target associated with the contract and receive synthetic tokens in return.
Parameters
unstake
Unstake by returning synthetic tokens and receiving previously staked $RARE in return.
Parameters
claimRewardsForRounds
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
stakerHasClaimedForRound
Query if a user has claimed their reward for a given round.
Parameters
getAmountStakedByUser
Query total amount of $RARE a user has staked on this contract.
Parameters
Returns
getCurrentRound
Query current round. The current round is accumulating rewards.
Returns
name
Name of the synthetic asset.
Returns
symbol
Symbol of the synthetic asset.
Returns
getTargetBeingStakedOn
Query the target being staked on by this contract.
Returns
getAllStakers
Retrieves a list of all the users that have staked.
Returns
getRoundRewards
Total rewards available for the supplied round.
Returns
getHistoricalRewardsForUserForRounds
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
Returns
getClaimableRewardsForUserForRounds
Query rewards for the supplied user address for the round supplied rounds. Throws if any round has already been claimed.
Parameters
Returns
calculatePurchaseReturn
Calculates the number of sRare yielded from staking.
Parameters
Returns
calculateSaleReturn
Calculates the number of rare yielded from unstaking.
Parameters
Returns
getAllTimeRewards
Total rewards snapshotted since con.
Returns
getClaimRounds
List of all rounds with claim associated with them.
Returns
getCreationTime
Get the unix creation time of the staking contract.
Returns
getLastSnapshotTimestamp
Get the unix time of the most recent snapshot.
Returns
getSumOfAllClaimed
Total amount of Rewards claimed.
Returns
Events
RewardClaimed
Stake
Unstake
StakingSnapshot
AddRewards
Errors
Unauthorized
Error emitted when user doesnt meet the criteria for call.
RewardAlreadyClaimed
Error emitted via {claimRewardsForRounds} if sender has already claimed their reward one of the supplied rounds.
ClaimingTooManyRounds
Error emitted via {claimRewardsForRounds} if too many rounds are supplied.
CannotClaimCurrentRound
Error emitted via {claimRewardsForRounds} if claiming current round.
ClaimingZeroRounds
Error emitted via {claimRewardsForRounds} if claiming no rounds.
InsufficientSyntheticRare
Error emitted via {unstake} when unstaking more synthetic tokens than is in their balance.
InsufficientStakedRare
Error emitted via {unstake} when the sale return proves greater than the amount staked. This should be impossible.
CannotAddZeroRewards
Error emitted via {addRewards} if adding 0 rewards.
IRewardAccumulatorFactory
Author: charlescrain
The RewardAccumulator Factory interface containing all functions, events, etc.
Functions
deployRewardSwap
Deploys a RewardAccumulator contract.
Parameters
Returns
setStakingRegistry
Set the staking registry address field to be used.
Parameters
setRewardSwapTemplate
Set the RewardAccumulator template address to be used.
Parameters
getStakingRegistryAddress
Retrieve the currently used staking registry address.
Returns
getRewardSwapTemplateAddress
Retrieve the template contract
Returns
Events
RewardSwapContractCreated
Emitted via {deployRewardSwap} when a new RewardAccumulator contract is deployed.
IRarityPoolFactory
Author: SuperRare Labs, koloz
The Staking Factory interface containing all functions, events, etc.
Functions
deployStaking
Deploys a staking contract for the supplied target address. Reverts if address exists.
Parameters
Returns
setStakingRegistry
Set the staking registry address field to be used.
Parameters
setRareStakingTemplate
Set the rare staking ERC20 template address to be used.
Parameters
getStakingRegistryAddress
Retrieve the currently used staking registry address.
Returns
getRareStakingTemplateAddress
Retrieve the currently template of the staking ERC20 contract.
Returns
Events
StakingContractCreated
Emitted via {deployStaking} when a new staking contract is deployed.
Last updated