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.


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.

Implementation of the crate::quarry_mine::rescue_tokens instruction.

Rewarder utilities.


Generates the signer seeds for a crate::Miner.

Generates the signer seeds for a crate::Rewarder.


Emitted when reward tokens are claimed.

ClaimRewardsV2 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.

Emitted when a new Rewarder is created.

A pool which distributes tokens to its Miners.

Emitted when a new quarry is created.

Emitted when a quarry’s reward rate 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.

Emitted when tokens are staked into a Quarry.

Claim accounts

Claim accounts

Staking accounts

Emitted when tokens are withdrawn from a Quarry.


Error Codes


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.


The static program ID


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.

Creates a Miner for the given authority.

Handler for the crate::quarry_mine::rescue_tokens instruction.

Returns the program ID