How Rewards Work (NAV / share price)
PrimeStaking V3 is a fully on-chain, ERC-4626 staking vault. Rewards are not paid through a manual claim flow. They are embedded directly in the psXDC share price. This page explains how the rate accrues and how the NFT boost layer sits on top.
Two layers of yield
base yield (~4.5%) boost slice (up to ~1.5%)
│ │
▼ ▼
shares × NAV(t) appreciation + Synthetix-style accumulator
(every psXDC holder gets this) (only XDC NFT holders get this)Base NAV
PrimeStakedXDC_V3_2 vault share price
Every psXDC holder
Automatic: share price rises as validator rewards accrue. No claim.
NFT Boost
XdcNftStakingVault Synthetix accumulator
Only NFTs that have psXDC shares staked inside them
Claimed from the NFT detail page in the app.
Base layer: share-price growth
When XDC validator rewards flow back into the vault, totalAssets() increases while the total share supply stays the same. The vault's exchange rate (totalAssets / totalShares) goes up, so every psXDC share becomes worth more XDC.
Target APY
~4.5%
Mechanism
Exchange rate appreciation
When you receive it
The rate steps up when the operations team distributes the period's masternode rewards into the vault (distributeRewards(), roughly monthly, sized to the 4.5% target on average TVL)
User action required
None. There is no "claim rewards" button
Example. Stake 1,000 XDC when the exchange rate is 1.00. You receive 1,000 psXDC shares. Six months later the rate is 1.025. You burn your 1,000 shares and the vault returns 1,025 XDC. Your 25 XDC of yield was inside the price the whole time.
This is the same model used by Aave aTokens, Compound cTokens, and Lido wstETH.
NFT boost: additional slice for stakers
XDC NFTs stack a second yield on top of the base NAV. The protocol's XdcNftBoostHarvester periodically pushes XDC into the NFT vault via notifyBoost. That XDC is converted to psXDC v3 shares inside the vault and parked as boostReserve. A Synthetix-style accumulator distributes the reserve to staked NFTs in proportion to their weight:
stakedShares
More psXDC staked inside the NFT → bigger slice
rarityMultiplier
Plentiful (lowest) → Handcrafted (highest); set at mint, immutable
level
0–20, derived from how much psXDC is staked under the NFT against admin-set thresholds (merging changes rarity, not level)
lockBonus
Added when the NFT is locked, sized by the chosen lock tier (30/90/180/365 days). Ends automatically when the lock expires and can be renewed by re-locking.
When you claim from an NFT, the accumulator settles your pending boost and pays it out in psXDC shares (the app claims as psXDC; the contract can also unwrap to XDC on request).
Target APR band
~0.25% (Plentiful unlocked) → ~1.5% (Handcrafted locked)
Mechanism
notifyBoost(x) increments rewardPerWeightStored; each NFT's earned = info.shares × (rewardPerWeightStored − info.rewardIndex) × weight / 1e18
When you receive it
When you call claim on the NFT
User action required
Yes: claim from the NFT detail page, or it settles automatically on any other state-changing action (stake more, lock, merge, withdraw)
The boost cadence depends on how often the operator feeds the accumulator (target: monthly, ~1.5% p.a. on the staked total); see Boost Harvester (technical) for the full picture and payment history.
Combined targets
Plain psXDC (no NFT)
~4.5%
None
~4.5%
psXDC inside an unlocked NFT
~4.5%
~0.25%
~4.5% → ~4.75%
psXDC inside a locked NFT
~4.5%
up to ~1.5%
~4.5% → up to ~6%
The exact boost slice depends on your NFT's rarity, level, and lock status relative to the rest of the vault, and on how much boost the operator has pushed. The vault publishes BoostNotified events so the UI can show the realised boost APR (boost paid since launch, annualised, capped at the marketed band) alongside the static targets.
Why no claim button for liquid staking
The V2 product distributed rewards by having the owner periodically call notifyRewardAmount and required users to call claim to collect their share. V3 removes both:
No
notifyRewardAmount+ claim cycle: the operations manager distributes the period's validator rewards into the vault (distributeRewards, roughly monthly) and the exchange rate updates for every holder at once.No
claim: your reward is already inside the share. When you redeem the share, you receive both the principal and the accrued reward in one transaction.
The boost layer keeps its claim flow because it is a separate XDC stream layered on top of the share, not an internal accrual.
Last updated