Modules

Staking modules and reward modules

GYSR uses a modular architecture where the staking logic and reward logic are each contained within a swappable building block. This generalizes our system by allowing projects to select from a variety of staking and reward modules when creating a pool.

The combination of each staking and reward module is what we call a "Mechanism". The 4 staking modules and 5 reward modules in GYSR lead to 20 distinct Mechanisms, as laid out in the chart below.

Staking modules

The staking module encapsulates and handles all Pool logic dealing with staking assets. This includes token valuation, balance management, and transfers.

ERC20 staking module

This module allows users to deposit an amount of ERC20 token in exchange for shares credited to their address.

When the user unstakes, the tokens will be returned to the user and the associated shares will be burned.

ERC721 staking module

This module allows users to deposit an specified set of ERC721 tokens in exchange for shares credited to their address.

When the user unstakes, the same tokens will be returned to the user and the associated shares will be burned.

Bond staking module

This staking module allows users to permanently sell an ERC20 token in exchange for bond shares credited to their address.

When the user unstakes, these shares will be burned and a reward will be distributed.

Assignment staking module

This module allows a privileged controller to set a fixed rate of earnings for a specific user. Share rates can be set directly for any user address, and updated. When the user unstakes, they will claim the reward distributed at that point.

Reward modules

ERC20 competitive reward module

This reward module was designed to emulate the behavior of the original v1 Geyser contract.

When a user stakes, they receive credit for the associated number of shares, and immediately begin to accrue share seconds. Share seconds are the primary unit of accounting in this module, and they are burned during reward distribution.

This module distributes a single ERC20 token asset as the reward. The overall reward amount and rate is fixed, but individual earning rates can vary based on participation.

ERC20 friendly reward module

This reward module was designed to facilitate a simpler staking process where earned rewards can only increase and cannot be negatively impacted by the actions of others in the Pool.

When a user stakes, they receive credit for the associated number of shares and begin earning at a rate proportional to their share of the entire Pool. As stakes are added or removed from a given Pool, the rate of earnings is adjusted for all stakes in that Pool.

This module distributes a single ERC20 token asset as the reward. The overall reward amount and rate is fixed, but individual earning rates can vary based on participation

ERC20 linear reward module

This reward module distributes a single ERC20 token at a continuous fixed rate.

The linear reward module provides a guarantee that a constant reward rate will be earned over a specified time period. This can be used to create incentive mechanisms such as streaming payroll, equity vesting, fixed rate yield farms, and more.

ERC20 fixed reward module

This reward module distributes a fixed amount of a single ERC20 token.

The fixed reward module provides a guarantee that some amount of tokens will be earned over a specified time period. This can be used to create incentive mechanisms such as bond sales, fixed duration payroll, and more.

ERC20 multi reward module

This reward module distributes multiple ERC20 tokens as the staking reward. It is designed to offer simple and highly flexible reward mechanics.

Rewards are immutable once earned, and can be claimed by the user at any time. The module can be configured with a linear vesting schedule to incentivize longer term staking. Multiple ERC20 tokens can be scheduled for distribution concurrently.

Last updated