Skip to main content

Introducting Vault V2

Vault V2 operates alongside V1 and undergoing a security audit

What it is

Vault V2 is a tokenized vault on Stellar that holds one underlying asset (e.g., USDC) and issues a share token representing proportional ownership of the vault’s total assets. Unlike strategy vaults, Vault V2 uses a Treasury-separated custody model: all underlying tokens are stored in a dedicated Treasury account (multisig or MPC), while the contract implements deterministic ERC-4626–style mint/burn and conversion functions.

It provides a lightweight, composable accounting layer for higher-level systems such as OctoLend markets, RWA vaults, and automated strategies. Users deposit to mint shares and redeem shares to withdraw assets; all valuation and conversion logic is fully on-chain and mathematical.

Vault V2 leverages OpenZeppelin Stellar Contracts for Fungible Vaults with a minor modification being an external address as the treasury for curation purposes.

At a glance

  • Permissionless Anyone can deploy and configure a Vault V2 instance.
  • Non-custodial Assets live in the curator-controlled Treasury, not the contract.
  • Deterministic math On-chain mint/redeem with fixed-point arithmetic and virtual offsets.
  • Composable SAC shares integrate across Stellar DeFi.
  • Immutable No upgradability; predictable long-term behaviour.
  • Integration-ready Ideal as the accounting backbone for OctoLend, RWAs, and automated strategies.

Key properties

  • Treasury-separated custody Underlying assets are held in a designated Treasury account rather than the vault contract, improving composability with multisig/MPC governance.

  • Deterministic conversion math Shares/asset ratios are computed on-chain using fixed-point arithmetic with virtual offsets, stabilizing behaviour at low liquidity.

  • ERC-4626-like model for Stellar Implements deposit, mint, withdraw, redeem, and preview functions in a standardized, integration-friendly interface.

  • Composable SAC shares Vault shares are Stellar Asset Contract (SAC) tokens, compatible with Stellar wallets, AMMs, and DeFi protocols.

  • Immutable behaviour Conversion logic, custody model, and metadata are fixed at initialization.

  • Non-custodial Untangled never takes custody. Treasury is controlled by the curator or strategy owner (e.g., LOBSTR multisig, Fireblocks MPC).

How it works

Stellar_VaultV2.png

Curation & strategy

Vault V2 itself does not perform strategy or valuation. Curators may choose to use it as the base tokenized layer for higher-level systems (e.g., OctoLend Lending Markets or RWA strategies). Also with treasury being an external address curators can also leverage its curation capabilities, just like in V1.

Deposits & Minting

Users deposit the underlying asset to mint shares:

  • Vault calculates shares using convert_to_shares().
  • Underlying tokens are transferred to the Treasury account.
  • Vault mints SAC share tokens to the receiver.

Withdrawals & Redemption

Users burn shares to receive underlying assets:

  • Vault computes required assets using convert_to_assets().
  • Vault pulls tokens from the Treasury using transfer_from (Treasury must provide allowance).
  • Shares are burned and assets are delivered to the user.

Conversion Logic

Conversion uses:

  • Virtual total supply: totalSupply + 10^offset
  • Virtual total assets: totalAssets + 1 These eliminate division-by-zero and ensure stable ratios from genesis to high-TVL operation. Rounding uses floor for predictable behaviour.

Total Assets

total_assets() returns the Treasury’s balance of the underlying token.

Roles

Treasury

The multisig or MPC account that holds all underlying assets. Must grant allowance to enable withdrawals/redemptions.

Vault Contract

Issues/burns shares, computes conversions, orchestrates transfers between itself and the Treasury.

Operator

Authorizes actions (deposit/mint/withdraw/redeem).

Vault V2 vs Vault V1

CategoryVault V1Vault V2
Custody modelAssets sit inside a strategy Treasury (multisig/MPC) controlled off-chain; vault contract holds no funds.Same principle, but formalised: all assets must be stored in one fixed Treasury account. Shares always represent Treasury balance.
Withdraw modelWithdrawals are asynchronous, using epochs (batch processing) and distributor-set share price.Withdrawals are synchronous, fully on-chain, using deterministic conversion math. No epochs, no price pushes.
Valuation modelNAV/share price updated off-chain by the Distributor and pushed on-chain. No NAV updates needed.Vault V2 uses mathematical conversion based solely on Treasury balance + share supply.
Conversion functionOff-chain NAV determines shares; vault contract simply executes transfers.Fully on-chain: convert_to_shares / convert_to_assets use virtual supply and virtual assets guards for stable ratios.
Virtual Supply OffsetNot used.Uses totalSupply + 10^offset to avoid zero-supply division and support smooth genesis behaviour.
Virtual Asset FloorNot used.Uses (totalAssets + 1) to avoid division-by-zero and reduce rounding errors at low liquidity.
Fee modelHandled off-chain via share price updates.None on-chain; strictly mechanical ERC-4626-style token vault.
PurposeMulti-strategy yield aggregation vault.Low-level tokenized vault primitive powering lending markets + on-chain accounting.
RedemptionTwo-step: request → epoch settlement → claim.One-step: synchronous redeem or withdraw.
ComposabilityShares = SAC tokens; works across Stellar DeFi.Shares = SAC tokens; same compatibility but deterministic accounting makes it suitable for automated systems (OctoLend).