The GYSR Pool contract
Each Pool is a standalone staking contract and incentive mechanism. These contracts allow investors to deposit tokens as a stake and earn reward tokens in return over time.
There are two parts to every Pool, staking and rewards. GYSR v2 is built with a modular architecture that separates these two concepts to add more flexibility and make future development more efficient.
Modular pool architecture
Each individual Pool will have a specific staking module and a reward module associated with it. During the configuration of a new Pool, different modules can be attached, resulting in a variety of incentive mechanics.
The Pool contract is the end user’s primary point of interaction. It handles all information flow and manages interactions with the underlying modules. The contract only exposes a few simple methods that the end user needs to be aware of.
Geysers are competitive Pools, made up of an ERC20 staking module and an ERC20 competitive reward module.
All investors accrue “share-seconds” that correspond to how many tokens they’ve staked and the length of time they’re staked for. An investor’s rewards are proportional to their share-seconds against the share-seconds of the entire pool.
In a Geyser, $GYSR can be spent during the unstake process to provide a multiplier on a user’s share-seconds. This increases your portion of the pool at the expense of others. This creates a gamified experience for investors where they'll stay deeply engaged with the staking process.
As an example, if you have accrued 100 share seconds and the total pool has 500 share seconds, a 2x multiplier would adjust those values to 200 / 600, giving you 33% of the pool instead of 20% (100 / 500).
In addition, Geysers have an optional time-based multiplier. A Geyser can offer investors a multiplier based on how long they leave their assets staked. Every stake an investor makes has its own unique multiplier and Geysers prioritize unstaking the shortest stakes first.
Fountains are friendly Pools, made up of an ERC20 staking module and an ERC20 friendly reward module.
They enable you to stake without your accrued rewards being affected by other investor interactions. All investors are accruing rewards every second. These are a great fit for projects that want a passive staking experience for their investors.
When another investor stakes, the rate of rewards from that point forward is adjusted down to split future rewards across the increased pool.
In a Fountain, $GYSR can be spent during the stake process to provide a multiplier on your staked amount. This increases your effective stake and the rate at which you earn rewards.
As an example, imagine there are 400 tokens staked in the pool. If you stake 100 tokens and apply $GYSR to receive a 2x multiplier, instead of earning 100 / 500 (20%) of future rewards, you will earn 200 / 600 (33%) of future rewards.
In addition, Fountains offer an optional time-based penalty for withdrawing rewards early. Projects launching Fountains can configure these Pools to withhold a percentage of the rewards if an investor unstakes earlier than intended.
An example would be if a project decided they wanted to incentivize 90 days of staking, they could set up a 50% penalty at the start. If an investor unstaked after 45 days, they would be halfway through the penalty period. Halfway between 50% and 100% is 75% so the investor would only receive 75% of their rewards. The remaining 25% would be redistributed to other stakers.
Aquariums are friendly Pools, made up of an ERC721 staking module and an ERC20 friendly reward module.
They follow the same reward mechanics as the Fountain, but instead allow users to stake tokens from a specific NFT collection.
See the reward mechanics explanations for the Fountain above as a reference.