docs: add manager user flows #1330
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Manager User Flow Documentation
Table of Contents
Quick Summary
Before diving into the details, here’s a high-level overview of what a staking pool manager does:
Overview
This guide walks through how to create, configure, and manage staking pools, allocate capacity to cover products, adjust pricing, and understand key mechanics such as tranche expiration, NXM delegation, voting power impacts, and rewards.
Your Responsibilities
Key Concepts
Tranches & Pool Mechanics
Determining Which Tranches Are Active for Capacity Allocation
When a cover is purchased, capacity is allocated only from active tranches that will remain active for the entire duration of the cover + grace period.
To determine the first eligible tranche (
TRANCHE DURATION = 91 days
):startingTrancheId
is the first tranche that can be used for the cover.StakingPool.getFirstActiveTrancheId()
to get the current first active tranche (i.e., the earliest tranche still providing capacity).startingTrancheId
is greater thangetFirstActiveTrancheId()
, it means the current tranches cannot be used for allocation.Understanding Capacity & Utilization in NXM Terms
Why This Matters for Managers:
How the Multiplier Affects Underwriting Capacity
When a pool has X amount of NXM staked, it can underwrite more than X NXM worth of cover. This is due to the concept of capacity multipliers, which allow capital efficiency in staking.
How is the Multiplier Determined?
The multiplier is set at the product level, meaning different cover products can have different multipliers depending on risk factors.
Key Formula for Effective Capacity:
For example:
Checking a Pool's Underwriting Capacity
To see how much cover a pool can underwrite versus its staked NXM:
How to Check a Product’s Multiplier
Managers can retrieve the multiplier for a product using:
Why is This Important for Managers?
Higher Multiplier = Higher Risk Exposure
Utilization vs. Risk Management
Cover Length and Grace Period Effects
Example: Cover Length + Grace Period Falling Outside a Tranche
Managing NXM Delegation
How Earnings Flow in a Staking Pool
NXM Burn Mechanics: What Happens When a Claim is Paid?
When a valid claim is approved, a portion of the staked NXM in the pool is burned to cover the payout. This process ensures that pools backing cover products bear the financial risk associated with claims.
How the Burn Amount is Calculated
NXM burns are proportional to the pool’s share of total risk exposure:
This ensures that:
How Much NXM Will Be Burned Per Staker?
Each staker’s NXM burn is proportional to their share of the total pool stake:
Example Scenario:
Burn Calculation:
Since Pool A contributed 40% of the total allocated capacity, it is responsible for 40% of the claim payout, resulting in 40,000 NXM burned from the pool.
For Pool A:
For Pool B:
For Pool C:
How to Check Pool Burn Risk:
To check total pool stake:
To check a pool’s allocated capacity for a specific cover:
How the Burn Process Works in the Contract
Key Considerations for Managers
Step-by-Step Process
Create a New Staking Pool
To create a new pool, call:
isPrivatePool
– Set totrue
for a private pool,false
for a public pool.initialPoolFee
– Initial fee taken from stakers' rewards.maxPoolFee
– The maximum fee the manager can set.productInitParams
– List of products to be initially listed in the pool.ipfsHash
– Metadata storage reference.Once created, you become the manager of the pool, responsible for configuring its parameters.
Allocate Capacity to Cover Products
Each pool can support multiple products. Managers must explicitly list a product in their pool before setting weights and pricing.
Add Products to the Pool
Call:
poolId
params
StakedProductParam
structs with product settings.This function:
How to Compare Your Pool Pricing
Managers can check how their pricing compares to other pools using:
StakingViewer.getPoolProducts(poolId);
This function returns:
Set Target Weights and Pricing
Once products are added using
setProducts
, effective weights can change based on capacity utilization and staking activity.Managers should call
StakingProducts.recalculateEffectiveWeights
orStakingProducts.recalculateEffectiveWeightsForAllProducts
to ensure proper allocation after significant changes in usage or pricing.StakingProducts.recalculateEffectiveWeights(poolId, productIds);
recalculateEffectiveWeights(poolId, productIds)
recalculateEffectiveWeightsForAllProducts(poolId)
When Should a Manager Call These Functions?
3. Manager Fees & Earnings
Pool managers earn rewards through a management fee set at pool creation.
getMaxPoolFee()
) – Set once at pool creation and cannot be increased.getPoolFee()
) – Can be adjusted at any time, but cannot exceed the max fee.To check fees:
Frequently Asked Questions (FAQ)
Why does the cover quote not utilize my pool's full capacity?
How does tranche expiration affect available capacity?
What Happens if a staking pool manager uses a staker's staked NXM for voting?
How do I as a staking pool manager adjust pricing?
Call:
StakingProducts.setProductTargetPrice(poolId, productId, newTargetPrice);
How are pool rewards calculated?
What is the Cover Router API and how does it affect pricing?
/quote
Best Practices