Overview
IMPORTANT: as it currently stands, Gem Farm is unaudited software. We're looking for community members to help review the protocol, or projects to help fund a professional audit.
❗
❗
- Anyone with a wallet can start a farm
- Each farm comes with a bunch of config knobs you can turn, such as minimum staking period, and cooldown period
- When starting a farm you can decide on up to 2 rewards. For each one you choose:
- Reward mint
- Reward type - fixed or variable
- As of right now, after the farm has been started, the above can't be changed. This is done for security reasons
- Although the reward mint / type can't be changed - the actual schedules / amounts absolutely can!
- Worst case you start a new farm with new mints / types
- After the farm is ready, you as the farm manager authorize one or multiple funders (could be just you), who fund the rewards pots with $$$ and configure the reward schedule
- Users show up and register as farmers. Once registered they can stake / unstake & claim rewards
- Claiming can be done at any point without them having to unstake
- Any unused rewards can be cancelled
- There is also an option to lock rewards in place, to effectively "guarantee" them to users
- As the farm manager it is possible to configure the following variables for the farm:
- Min staking period - after staked, gems can't be unstaked until this number of seconds passes
- Min cooldown period - after unstaked, gems can't be withdrawn until they complete a "cooldown" period of this many seconds
- Unstaking fee - an additional fee, in lamports, charged on unstaking
- These are set at farm initialization, but can also be tweaked later (which would affect future stakers, but not past)
- Note: this is in addition to configuring reward schedules by funders, described below
- This is a new feature since Feb-22
- You can now set any of:
- max farmer count per farm
- max gem count per farm
- max rarity point per farm
- All of the above are optional, but if you configure any of them they will be checked
- Eg you could say you only want to allow 200 farmers to stake on your farm. Once that count is reached, further staking instructions will fail
- Max counts can be configured both during initialization of the farm - and during farm update
- Both require farm manager to sign off
- A funder account needs to be authorized by the farm manager before they can deposit reward funds into one of the reward pots
- When depositing, the funder also specifies a funding schedule - which can be fixed or variable
- Each comes with its own config knobs explained in detail below
- Regardless of the schedule, the Funder specifies 2 things:
- Total reward amount
- Total reward duration
- Amount -
- Is added to any previously unused rewards (eg if 1000 was deposited, but only 200 accrued to stakers, 800 is available for next funding cycle)
- Can limit the number of total stakers (fixed rewards)
- Duration -
- Dictates for how long the current funding schedule will be active
- Anyone who stakes before the end of the schedule, will get a proportional amount of rewards attributed to them - anyone who stakes after gets nothing
- After the initial funding, the farm manager / funder have a number of options:
- Do nothing - farmers will be able to stake / unstake / claim current rewards
- Cancel the reward - any rewards not yet accrued / promised (fixed rate concept) will be returned, and reward end will be set to current timestamp
- Fund another reward - new duration can be specified, which can be shorter or longer than the current one, and new funding added to existing
- Lock reward - this sets lock timestamp = reward end timestamp. After set, there is no way for the farm manager to withdraw the funding until after reward end passes
- The user (farmer) starts by initializing a new farmer acount. This is used to store all the data associated with them, such as how long they've been staking for
- Next they deposit their gems into the vault
- You as the farm manager can restrict what NFTs can / can't go into the vault
- Finally they click "stake". This locks up the vault and starts accruing any rewards that are currently funded
- Farmers can claim their rewards anytime, without unstaking
- There is no minimum claim amount, as long as it's >0, Farmer gets a payout
- Both rewards are claimed at the same time, it's not possible to only do one
- When the farmer is done staking, they hit "unstake". This unlocks the vault and let's them withdraw their gems
- Note: the above steps map to how the code works, but as the front end dev you can hide many of these steps from the user. Eg you can init a new Farmer account, deposit their gems, and lock their vault all in a single click
- The only type of fee currently collected by the farm treasury is the unstaking fee
- Payouts can be made from the treasury to any address, for any amount (within what's accumulated ofc) by the farm manager
Last modified 1yr ago