Overview of the various mechanisms available


Geysers are competitive Pools, made up of an ERC20 staking module and an ERC20 competitive reward module.

All users accrue “share-seconds” that correspond to how many tokens they’ve staked and the length of time they’re staked for. A user'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 users 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 users a multiplier based on how long they leave their assets staked. Every stake a user 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 user interactions. All users are accruing rewards every second. These are a great fit for projects that want a passive staking experience for their community.

When another user 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 a user 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 a user unstaked after 45 days, they would be halfway through the penalty period. Halfway between 50% and 100% is 75% so the user 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.


The Waterfall enables multi-token reward distribution. A Waterfall offers projects a simple, powerful, and highly flexible reward mechanism to fit almost any incentives use case. Within our modular pool architecture, a Waterfall is the combination of an ERC20 or ERC721 staking module with an ERC20 multi rewards module.

Here’s the TLDR on the Waterfall mechanism:

  • Distribute multiple ERC20 tokens concurrently (as many as you want!)

  • Use any ERC20 token as a reward (including elastic, interest bearing, and transfer fee tokens)

  • Configure with ERC20 staking or ERC721 staking

  • Set a vesting schedule to incentivize longer term participation

  • Users can claim earned rewards at any time

Letting projects reward users with multiple assets opens up a variety of creative ways to align incentives between projects and communities.


The Stream can be used for project payroll, token vesting, rewards distribution, and more. It lets you easily manage your project budget, set individual rates per user, and autonomously handle ongoing payments. The Stream mechanism is made up of an Assignment staking module + an ERC20 linear reward module. This combination enables a project to:

  • Use any ERC20 token as a reward (including elastic, interest bearing, and transfer fee tokens)

  • Set individual earning rates for any address

  • Update and remove individuals as your contributors change (but they’ll still be able to claim their earned rewards!)

  • Continuously stream payments to users every second

  • Let users claim rewards whenever they want

  • Easily manage budget with a trustless commitment over a rolling time period and funding refills as needed

For DAOs, power users, and other protocols - a Stream can also be controlled by another smart contract! This means you can more safely control your Stream reward rates with a governance or a multisig contract. Or, other protocols can directly integrate with Streams to programmatically handle fee routing and token rewards.


Reservoirs are made up of an ERC20 bond staking module and an ERC20 fixed reward module.

It enables a bond sale mechanism, where users can purchase project tokens at a discount priced on a bonding curve, letting projects easily acquire permanent protocol-owned liquidity and other valuable assets.

  • Users can purchase bonds in any accepted ERC20 token (including elastic, interest bearing, and transfer fee tokens)

  • Each bond is tokenized as an ERC721

  • Bonds vest over time and the paid token can be withdrawn by the controller

  • Multiple markets can run simultaneously within single pool

  • Market run continuously and autonomously with no need for manual management

  • Markets can be adjusted to fine tune for price, demand, and supply

Projects will be able to do more cool things like trade assets with users, making sure that project and stakeholder incentives can remain aligned and mutually beneficial.

Reservoir webapp integration coming soon!

Last updated