xVault Docs
Protocol

Protocol overview

The xVault product model — what it is, who it serves, and the non-negotiable math rules underneath it.

xVault packages tokenized equities into curated Solana index vaults. A single deposit gives you exposure to a basket (Mag 7, Semis, Dividend, SPY-Lite), a keeper rebalances to target weights, and protocol revenue is split 50/50 between vault depositors and $VLT stakers — paid in real xStock kind, not in reward-token emissions.

The product surface is intentionally small:

  • Four curated vault SKUs at launch, governance-curated (no user-created vaults in v1).
  • USDC-in / USDC-out deposits and withdrawals, with an optional in-kind withdrawal path.
  • $VLT staking with 30/90/180-day lockups, paying weekly epoch rewards in xStocks.

Scope

DimensionScope
ChainSolana
Asset standardToken-2022 with Scaled UI extension
Underlying assetsxStocks issued by Backed Finance
Execution routesBacked xChange (atomic RFQ) during market hours, Jupiter off-hours and on halts
Reward assetReal xStock baskets, funded from protocol revenue
JurisdictionsGlobal excluding US and restricted regions (geofenced at the edge)

Users and their jobs

PersonaJob-to-be-done
DeFi native"Get S&P-style exposure in one transaction without leaving my wallet."
Yield farmer"Stack rewards on top of TradFi beta."
$VLT holder"Earn a share of protocol revenue in real stock shares."
Power user"Use vault shares as collateral on Kamino / margin platforms."

Primary user flows

Deposit

Approve USDC. User calls vault::deposit(usdc_amount, min_shares_out).
Transfer. Program receives USDC into the vault cash buffer.
Price. Program reads total NAV (holdings + cash) from the oracle PDA.

Mint. Vault shares are minted pro-rata to NAV into the user's ATA, guarded by min_shares_out.

Rebalance. The keeper reads the deposit event, buys the basket via xChange RFQ (market hours) or Jupiter (off-hours), and submits rebalance_leg to validate execution and move USDC from the buffer into holdings.

Withdraw

Two modes:

  • In-kind — burn shares and receive raw xStock amounts pro-rata. No market risk, no slippage, no withdrawal fee.
  • USDC — burn shares and receive USDC with a user-set max_slip_bps (1% default, 5% max). The keeper sells xStocks as needed to meet demand. 0.05% withdrawal fee applies.

Rebalance (keeper-only)

Keeper reads /public/assets/*/price-data and /multiplier?network=Solana.
Computes drift vector vs. target weights using scaled NAV.
Executes the external swap route (xChange during market hours, Jupiter fallback).

Submits vault::rebalance_leg to validate, book post-trade deltas, and enforce slippage bounds.

See Operations → Keeper and oracles for the full job cadence and failure matrix.

Stake and claim

User stakes $VLT into the rewards pool for 30d, 90d, or 180d.

Each Sunday 00:00 UTC the distributor snapshots time-weighted stake balances and buys the xStock basket with the reward pool.

A Merkle root is published for that epoch; users claim with an inclusion proof from the dapp.

Unstake after lockup returns the underlying $VLT.

Non-negotiable math rule

Token-2022 Scaled UI

All xStock balances on Solana use the Scaled UI extension.

display_balance = raw_onchain_balance × current_multiplier

Programs and transfer instructions must store and move raw amounts. Scaling happens only inside NAV computations.

This invariant is the difference between a correctly-behaved index vault and one that silently drifts during fee accrual, dividends, or splits. Every balance-moving instruction re-verifies the expected multiplier before acting; every unit test exercises a non-unit multiplier.

Functional requirements (reference)

IDRequirement
F-1NAV uses raw_amount × multiplier × price.
F-2Deposits accepted in USDC; keeper orchestrates basket buys via xChange/Jupiter.
F-3Withdrawals in USDC with slippage cap = 1% default, user-overridable up to 5%.
F-4Rebalance is idempotent; fails safely if an xChange quote expires (~60–90s blockhash window).
F-5Fees: 0.2%/yr management (streamed) + 10% of positive performance (HWM) + 0.05% withdrawal.
F-6Proof-of-Reserves badge on UI: live per-holding call to /public/proof-of-reserves/{symbol}.
F-7Corporate-action banner surfacing upcoming events from /public/corporate-actions/upcoming with all 13 caType values.
F-8Auto-pause vault on SpinOff, *Merger, Redemption, WorthlessRemoval, RightsDistribution until multisig review.
F-9Primary NAV source: /v2/oracles. Fallback: indicative price-data only.
F-10USDC cash buffer refills from deposits; keeper liquidates to maintain the buffer if it falls below 0.5% TVL.

Out of scope for v1

  • Leverage and looping (separate product).
  • Perpetuals on vault shares.
  • Non-Solana deployments (bridge only).
  • User-created custom vaults — governance-curated only.

On this page