Expand description
Liquidity mining rewards distribution program.
The program consists of three types of accounts:
- Rewarder, which controls token rewards distribution
- Quarry, which receive rewards, and
- Miner, which stake tokens into Quarrys to receive rewards.
This program is modeled after Synthetix’s StakingRewards.sol.
Modules§
- Validations for various accounts.
- An Anchor generated module, providing a set of structs mirroring the structs deriving
Accounts
, where each field is aPubkey
. This is useful for specifying accounts for a client. - Contains addresses used for the Quarry program. These addresses are updated via program upgrades.
- An Anchor generated module containing the program’s set of instructions, where each method handler in the
#[program]
mod is associated with a struct defining the input arguments to the method. These should be used directly, when one wants to serialize Anchor instruction data, for example, when speciying instructions on a client. - Calculates token distribution rates.
- Module representing the program.
- Quarry-related math and helpers.
- Program for quarry_mine.
- Implementation of the crate::quarry_mine::rescue_tokens instruction.
- Rewarder utilities.
Macros§
- Generates the signer seeds for a crate::Miner.
- Generates the signer seeds for a crate::Rewarder.
Structs§
- Accounts for quarry_mine::accept_authority.
- Emitted when reward tokens are claimed.
- Accounts for crate::quarry_mine::claim_rewards.
- ClaimRewardsV2 accounts
- Accounts for quarry_mine::create_miner.
- Accounts for quarry_mine::create_quarry.
- Accounts for quarry_mine::create_quarry_v2.
- Accounts for quarry_mine::extract_fees.
- An account that has staked tokens into a Quarry.
- Triggered when a new miner is created.
- Mutable Rewarder that requires the authority to be a signer.
- Accounts for quarry_mine::pause and quarry_mine::unpause.
- Accounts for quarry_mine::new_rewarder.
- Emitted when a new Rewarder is created.
- Accounts for quarry_mine::new_rewarder_v2.
- A pool which distributes tokens to its Miners.
- Emitted when a new quarry is created.
- Emitted when a quarry’s reward share is updated.
- Read-only Rewarder that requires the authority to be a signer.
- Accounts for the crate::quarry_mine::rescue_tokens instruction.
- Controls token rewards distribution to all Quarrys. The Rewarder is also the quarry_mint_wrapper::Minter registered to the quarry_mint_wrapper::MintWrapper.
- Emitted when the daily rewards rate is updated.
- Accounts for quarry_mine::set_annual_rewards.
- Accounts for quarry_mine::set_famine.
- Accounts for quarry_mine::set_rewards_share.
- Emitted when tokens are staked into a Quarry.
- Accounts for quarry_mine::transfer_authority.
- Accounts for quarry_mine::update_quarry_rewards.
- Claim accounts
- Claim accounts
- Staking accounts
- Emitted when tokens are withdrawn from a Quarry.
Enums§
- Error Codes
Constants§
- The fees of new Rewarders: 1,000 milliBPS = 1 BP or 0.01%. This may be changed by governance in the future via program upgrade.
- Maximum number of tokens that can be rewarded by a Rewarder per year.
- The maximum number of basis points possible.
Statics§
- The static program ID
- Static string containing the security.txt file.
Functions§
- Confirms that a given pubkey is equivalent to the program ID
- The Anchor codegen exposes a programming model where a user defines a set of methods inside of a
#[program]
module in a way similar to writing RPC request handlers. The macro then generates a bunch of code wrapping these user defined methods into something that can be executed on Solana. - Safety
- Creates a Miner for the given authority.
- Handler for the crate::quarry_mine::rescue_tokens instruction.
- Returns the program ID