Protocol Features

Staking platforms deployed through the Staking Protocol can host multiple staking campaigns, with each campaign being customizable in terms of staking parameters, reward distribution mechanisms, campaign duration, the quantity of staked assets, and other factors.

Campaigns are created by eligible users of the staking platform. This includes the administrator of the platform, as they are considered an eligible user. Only the administrator of the platform can assign the role to a user to create new campaigns.

Ordinary users are granted access through the compliance mechanisms, which requires them to go through KYC verification procedures. Staking platforms offer the following functionality to users:

  • Stake - Create a position by allocating or locking assets.
  • Stake on Behalf of Beneficiaries - Create staking positions for another user.
  • Restake - Increase an existing position with additional staked assets.
  • Full Unstake - Withdraw all staked assets and close the position.
  • Partial Unstake - Withdraw a portion of staked assets.
  • Claim Rewards - Claim rewards based on the campaign's distribution schedule.

Eligibility Requirements

Users must meet the eligibility criteria to perform staking-related actions (see the StakersEligibility and AccessControlStaking facets). Ownership of the corresponding Staking Position NFT is required for any subsequent operations on a position.

Positions: Representation and Tracking

Each staking position is represented by an ERC721 Staking Position Token (NFT) and minted upon staking. The data associated with an open position is stored in the diamond proxy storage and identified by the ID of the NFT token.

These NFTs can be set as transferable, allowing users to trade positions on NFT marketplaces, or non-transferable (soulbound). When a position is fully unstaked, the associated NFT is burned. Only the Staking Platform has the authority to mint and burn these tokens, ensuring precise tracking of each staking position's lifecycle.

Packets

In numerous staking scenarios, participants are required to stake multiple asset types in predetermined ratios. For example, a staking pool may mandate that participants stake a combination of three distinct tokens, such as one unit of Token A, three units of Token B, and two units of Token C. Managing these precise requirements manually can be intricate and prone to errors.

The Staking Protocol introduces a new concept called Packet, that represents a unit and a constant basket of assets. One packet can contain: 2 ABC tokens, 3 XYZ tokens and 5 QWE tokens which represent an indivisible unit. Therefore, the staking campaign expects users to stake packets and not a specific of number of assets separately. There are two types of packets:

  • Input Packet: Represents the smallest unit of asset(s), either as individual tokens or a combination of tokens in specific ratios, required to create a position (stake), thereby simplifying input requirements.
  • Reward Packet: Represents the smallest unit of reward assets, simplifying the output requirements for campaigns.

Packet Example

Suppose there is a mininum requirement of 1000 packets for a staking campaign. If an input packet for a staking campaign represents a basket of the following assets: 10 ERC-20 tokens and 20 ERC-1155 tokens, then to participate in the campaign you must stake 10,000 of ERC-20 tokens and 20,000 of ERC-1155 tokens.

Multipliers

In staking campaigns, multipliers are factors that increase the rewards participants can earn based on certain conditions. Multipliers are designed to incentivize users to stake more assets or for longer periods, enhancing their potential returns.

  • Staking Duration - A longer staking period results in a higher multiplier.
  • Amount Staked - The more tokens users stake, the higher the reward multiplier could be. For instance, staking 10,000 tokens might earn a 2x multiplier, while staking 50,000 tokens might result in a 5x multiplier.

Virtual Balance

The virtual balance represents the raw amount of packets that a user has staked, adjusted by multipliers such as staking duration and the amount staked. For example, suppose you have staked 1,000 packets for 6 months: for this amount, the multiplier would be 1.5x, and for this duration, the multiplier would be 1.3x. Hence, the virtual balance for this position would be 1,950 packets. Note that the multiplier formulas can differ from this simplified example.

On this page