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 a Pubkey. 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.

Rewarder utilities.

Macros

Generates the signer seeds for a crate::Miner.

Generates the signer seeds for a crate::Rewarder.

Structs

Emitted when reward tokens are claimed.

ClaimRewards accounts

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.

A pool which distributes tokens to its Miners.

Triggered when a new quarry is created.

Triggered when a quarry’s reward share is updated.

Read-only Rewarder that requires the authority to be a signer.

Controls token rewards distribution to all Quarrys. The Rewarder is also the quarry_mint_wrapper::Minter registered to the quarry_mint_wrapper::MintWrapper.

Triggered when the daily rewards rate is updated.

Emitted when tokens are staked into a Quarry.

Claim accounts

Staking accounts

Emitted when tokens are withdrawn from a Quarry.

Enums

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

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.

Returns the program ID