Stake & Unstake USDx
Stake USDx to earn yield, then request redemption and claim to withdraw.
Where does the yield come from? Staking rewards are not an unexplained deposit. The collateral backing USDx is deployed into strategies whose structural edge is cross-venue and cross-asset fragmentation, a durable, market-neutral yield source that does not rely on any single mechanism. Funding is one component (and can be the larger share in a given period); see the Transparency Dashboard for current attribution. Realized results are delivered to the vault as USDx rewards and accrue to sUSDx holders. See How Axis Earns Yield for the source and Backing, Custody & Transparency for the proof surface.
How staking works. Staking is a direct interaction with a permissionless smart contract: you deposit USDx and receive sUSDx, the receipt token for your staked position. sUSDx follows ERC-7540, an extension of ERC-4626 that adds asynchronous redemption, a pattern also used by protocols such as Centrifuge. To unstake, redemptions pass through an unstaking / redemption queue whose parameters, the minimum staking period and cooldown, are set by policy controlled by governance.
Lifecycle: (1) The user deposits USDx into StakedUSDx and receives sUSDx shares. (2) The reward manager funds USDx rewards (fundRewards); rewards vest linearly over a configured window, so the share exchange rate rises smoothly as vested rewards accrue. (3) To exit, redemption is asynchronous (modeled on ERC-7540): the user calls requestRedeem (which burns shares and opens a request), waits the cooldown, the protocol services the request, and the user claims USDx with withdraw/redeem. A still-pending request can be cancelled.
How to Stake USDx
Staking deposits USDx into the vault and returns sUSDx shares that appreciate as vested rewards accrue.
Prerequisites
User must hold USDx
User must approve
StakedUSDxto spend their USDxThe vault must not have deposits paused (
depositPaused)The sUSDx receiver must not carry a restriction that blocks the
DEPOSITaction (see Restrictions)
Deposit by Asset Amount
// 1. Approve
usdx.approve(address(stakedUSDx), amount);
// 2. Deposit 1000 USDx, receive sUSDx shares
uint256 shares = stakedUSDx.deposit(1000e18, receiverAddress);Deposit by Share Amount
Preview Functions
Note: previewWithdraw/previewRedeem are disabled on the vault because redemption is asynchronous and share-exact, quote a claim from the serviced request, not from a preview.
Using cast
Blocked Conditions
Deposits paused
The vault has depositPaused set
Receiver restricted
The sUSDx receiver carries a restriction blocking the DEPOSIT action
How to Redeem (Async, ERC-7540)
V2 redemption is asynchronous: you open a request, it enters a cooldown (currently 7 days) and is serviced by the protocol, then you claim. There is no cooldown silo, reserved assets stay inside the vault as tracked liabilities (pendingRedeemAssets, then claimableRedeemAssets).
Step 1: Request Redemption
This burns the owner's shares, moves the reserved USDx from active vault assets into pendingRedeemAssets, and snapshots the request's cooldown (eligibleAt = requestedAt + cooldown). A fully restricted owner or controller cannot open a request; a soft-restricted owner may only redeem to themselves.
Step 2: Wait for Cooldown, Then Servicing
The request becomes eligible after the per-request cooldown (cooldownDuration, currently 7 days, snapshotted at request time). Once eligible. An account holding REDEMPTION_SERVICER_ROLE services the redemption queue (serviceRedemptions), moving your request from PENDING to CLAIMABLE, this shifts the reserved assets from pendingRedeemAssets into claimableRedeemAssets. Servicing is performed by the protocol, not by the user.
Step 3: Claim
Once serviced, claim the underlying USDx with the standard ERC-4626 withdraw/redeem, which draw against your claimable request:
Cancel While Pending
A request that is still PENDING (not yet serviced) can be cancelled. This releases the reserved assets back to the vault and re-mints the burned shares to the owner:
Cancellation is blocked for fully restricted accounts (shares would return to a frozen holder) and while cancellations are paused.
Using cast
How to Check the Exchange Rate
The vault exposes the canonical read: how much USDx each sUSDx position is worth.
totalSupply == 0
1e18
totalSupply > 0
(totalAssets * 1e18) / totalSupply, floor-rounded
totalAssets is accountedAssets, active principal plus already-vested rewards. The exchange rate rises mechanically as vested rewards accrue into accountedAssets; funded-but-unvested rewards and reserved redemption liabilities are excluded, so a large deposit cannot front-run a reward and a redemption request stops earning once it is reserved.
How Restrictions Affect Staking
Staking restrictions are driven by RESTRICTION_ROLE (held by the Compliance Safe) through per-subject restrictionStatus / blockedActions fields on AccountState, rather than per-staker role constants. Restrictions are action-specific:
A soft-restricted owner may still exit, but only to themselves,
requestRedeemmust send the redemption to the owner's own account.A fully restricted owner or controller cannot open a redeem request at all, and cannot be the recipient of a cancelled request's re-minted shares.
Restriction status and the specific blocked actions are readable per subject; see Access Control for the full model.
Common questions
Do I have to stake to earn rewards? Yes. USDx by itself earns no rewards; rewards accrue to sUSDx, so you must stake USDx to become eligible.
Why is there a cooldown? The cooldown, currently 7 days, helps ensure there is sufficient liquidity from the backing to handle potential redemptions or a contraction in USDx supply.
Can I sell instead of waiting through the queue? Yes, sUSDx can be sold rather than redeemed through the queue, but liquidity is not guaranteed.
Can I ever owe the protocol? No. Staking never creates an obligation to the protocol.
What are rewards paid in? USDx.
Last updated

