Meta Pool overview
Learn more about Meta Pool contract
This contract provides the following value items for the NEAR community:
Helps stakers avoid putting all eggs in one basket
This contract acts as a staking-pool that distributes it's delegated funds to several validators. By delegating to this contract, you greatly reduce the risk of getting no-rewards due to validator outages, and you contribute to decentralization and censorship-resistance earning in the process staking rewards.
Provides Liquid Unstaking
This contract allows users to skip the unstaking waiting period by providing a liquidity pool for liquid unstaking. This simplifies NEAR staking, making staking and unstaking simple and immediate.
Contributes to decentralization for the NEAR network
This contract helps decentralization by distributing its delegated funds to several validators. Moreover, the contract implements the stake-pool interface, so if you own a lockup-contract with considerable funds, you can greatly contribute to the decentralization and censorship-resistance of the network and reduce your risk at the same time. Funds will be automatically distributed between several validators, ensuring increased decentralization and continuous rewards.
Creates a Liquidity Pool and fees for Liquidity Providers
This contract includes a liquidity pool and the opportunity for liquidity providers to earn fees. The liquidity pool is a stNEAR->NEAR swap pool, providing the Liquid Unstake functionality and generating fees for the Liquidity Providers.
This contract integrates two NEP-141 tokens: stNEAR, staked-NEAR and $META, the project token. $METAs are farmed automatically. If you use the Liquid unstake function, you'll receive $META; if you are a Liquidity Provider, you'll get $META with your fees.
Validator Loans: a safety-net to avoid losing validators on the seat-price cliff
This contract will allow struggling validators to keep a seat and keep validating in case of sudden rises in seat price. There will be staking-loans available for whitelisted validators, and also emergencies stakes from the liquidity pool. Pools requiring staking will have to pay x-epoch rewards in advance. Fees paid will be distributed as rewards between the stNEAR holders and/or the Liquidity providers.
Meta Pool contract doesn't need the Meta Pool team, anyone can run the heartbeat and make the contract work if needed. So in case that Meta Pool disappears, the users could access the contract by themselves using the contract methods and guided by code.
Users wanting to unstake skipping the waiting period can do so in the stNEAR->NEAR Liquidity Pool.
In the Liquidity Pool:
- Users providing liquidity can earn fees on each sell.
- Users wanting to unstake without the waiting period can do so for a fee.
The stNEAR->NEAR Liquidity Pool is a one-sided Liquidity pool. Liquidity providers add only NEAR to the liquidity pool. The pool allows other users to perform "Liquid Unstakes". During a "Liquid Unstake" users send stNEAR and receive NEAR from the liquidity pool, minus a fee.
The fee represents how many users value skipping the 36-60hs waiting period to receive their funds. The fee varies with the amount of NEAR in the Liquidity Pool, but the curve is capped at the extremes. Initially, discount fees are in the range 3%-0.3%, but the curve parameters can be adjusted by DAO governance.
Current liquidity target is 100,000 NEAR tokens.
This contract tokenizes your stake, allowing users to use their staked near as a NEP-141 TOKEN, called stNEAR.
stNEARs represent staked NEAR. The price of stNEAR you hold is automatically incremented each epoch when staking rewards are paid.
This contract also includes a trip-meter functionality, so you can precisely measure staking rewards received, regardless of stake and unstake movements you can make. The rewards trip-meter will show you the exact amount of your staking rewards without being affected by staking and unstaking movements in your account.
This contract also acts as a standard staking-pool, so users can perform classical stakes and classical unstakes.
By implementing the standard-staking-pool trait, lockup-contract accounts can delegate funds here, gaining risk reduction and greatly contributing to NEAR decentralization.
Note: Lockup contracts can only perform classic stake/unstake so Lockup contracts can not access the liquidity pool or buy/sell stNEAR.
The contract pools all users' funds and keeps a balanced distribution of those funds in a list of whitelisted, low-fee, high-uptime validators.
Staking and unstaking distribution is done by periodically calling
distribute_staking()/distribute_unstaking(), so actual staking and unstaking are delayed.
The contract includes a swap pool called the Liquidity-Pool. When users perform a liquid-unstake, they swap some of their stNEAR for NEAR in the liquidity pool, providing a fee to Liquidity Providers. Liquidity Providers indirectly get the stNEAR+fee and deliver NEAR. No stake/unstake is performed in that process.
- The users can not lose tokens or block contract operations by using methods under staking section.
- Users owning stNEARs will accrue rewards on each epoch, except in the extreme unlikely case that ALL validators go offline during that epoch.
stNEAR: When starting Meta Pool one stNEAR represents one staked NEAR, but the price of stNEAR increases to NEAR every epoch through APY native staking.
stNEAR is the virtual token computed from the user’s share in the total staked funds. By staking in the Meta Pool user mints stNEAR, by unstaking, stNEARs are burned. When staking, reward are paid and the price of stNEAR increase.
--- To STAKE is to mint stNEARs ---
--- To UNSTAKE is to burn stNEAR ---
There are two ways to unstake: (from more convenient to less convenient)
- 1.Liquid Unstake: You unstake by swapping stNEAR->NEAR in the Liquidity Pool. Since you’re unstaking without waiting ~48-72hrs (4 - 6 epochs) (you’re passing the wait penalty to other users) you pay a small fee. The fee is the value of not-waiting ~48-72hrs (4 - 6 epochs). Example: Your Liquid Unstake 100 stNEAR (1 stNEAR = 1,07 $NEAR for example) for 107 $NEAR minus liquid unstake fee, and you get your $NEAR immediately without waiting ~48-72hrs (4 - 6 epochs). Note: Liquid unstakers receive NEAR and $META rewards in the operation.
- 2.Delayed Unstake: You burn stNEAR tokens and get unstaked-near. The contract unstakes your NEAR from the staking-pools. You don’t pay a fee, but you must wait 4-8 epochs to withdraw those funds to your account. Your funds remain unstated in the staking-pool for 4 to 8 epochs (48-96hs) before you can withdraw. E.g. you unstake 100 stNEAR, and you get 100 (+APY on the time of staking) unstaked-near, 4 days later you can withdraw your unstaked-near to your own near account.
These operations are reflected in the UI in two steps that the user must complete with 48-96hs between them: [Delayed-Unstake::start] and [Delayed-Unstake::withdraw]. The UI informs the user the waiting period before confirmation, and also the remaining hours during the wait period.
In order to provide Liquid Unstake a Liquidity Pool is maintained by the contract:
- The unstaker enters the amount of stNEAR they want to unstake and the contract replies with the amount of NEAR & $META they will receive, normally with a fee between 0.3% and 3% depending on the available liquidity and the fee curve parameters.
Part of the LP-fees go to the DAO Treasury. Treasury funds are always stNEARs and used for:
- DAO Maintenance
- DAO Expansion
- $META holders dividends
(When Phase II - DAO Governance is implemented)
$META holders can vote on:
- Diversification: Validator distribution list, and how much stake to distribute to each one.
- Fee curve parameters for the NEAR/stNEAR Liquidity Pool (min fee, max fee, liquidity target)
- How to use treasury funds for DAO expansion
- Operational costs fee
- Maintenance funds redirection
- Pay rewards to $META holders
- Approve validator stake-loans
- Set $META mint rewards for:
- Liquid unstakers
Create a Dividends-pool as a stNEAR/$META liquidity pool allowing $META owners to burn $META to obtain stNEAR. This pool sets a base-price for $META tokens. When users vote to add stNEAR to the dividends-pool, $META base-price is incremented. Users can also vote to remove stNEAR from the dividends-pool back to the treasury, lowering the $META base price.
Users get $META tokens minted for them when:
- They do Liquid Unstakes (immediate unstaking)
- They receive fees as Liquidity Providers
$META governance tokens are minted and distributed to:
- users paying liquid unstaking fees
- users providing liquidity on Meta Pool platform, DEXs
Periodic calls to
distribute_staking()/distribute_unstaking()/withdraw_from_a_pool()are required for this contract operation. These calls consume considerable amounts of gas that is paid by the operator account. To fund this operational cost, a operator's fee percentage (0.3% by default) is taken from rewards distributions. It can be adjusted by DAO governance.
The contract has a configurable parameter
dev_maintenance_amount, initially 400 stNEAR, to be transferred monthly to the account
By DAO governance, this value can be increased and up to 50% can be redirected to other maintainers and contributors.