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 a2x
multiplier, while staking50,000
tokens might result in a5x
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.