Open app
Mock-asset beta
Documentation/Build with Vanta

Inspect the contracts.

Each pool owns reserves, enforces execution limits, and issues a transferable claim on its stock-token and USDG inventory.

Find the actual deployment

The application loads a sanitized deployment from /api/config. A hosted mainnet deployment contains per-market stock / USDG metadata, adapter and feed configuration, factory and helper addresses, and runtime code hashes. Identity includes the chain, genesis, source fingerprint, deployment block, and contract calibration. Local and testnet deployments use their own manifests and mock assets.

Each VantaFactory is bound to one stock token, USDG, and status adapter. It deploys fully funded immutable VantaPool instances using exact inputs from the creator. VantaPoolDeployer separates construction code; only its factory can invoke it, and it holds no user assets or allowances. VantaMath supplies the research pricing kernel. Mainnet factories and pools require the matching MainnetStatusAdapter identity and token pair. Local and testnet environments use MockStatusAdapter and mock assets.

The frontend calls factory creation methods and pool quote and execution methods directly. A router, separate lens, general account indexer, fee distributor, and VANTA staking system are not enabled. Mainnet uses its configured production-feed status adapter.

Token boundaries

AssetDecimalsPurpose
Configured stock token18Raw stock inventory and trader input/output.
USDG6Stable inventory and all swap fees.
Pool LP token18Pool-specific proportional reserve claim.

Underlying token approvals authorize the factory during creation or the specific pool during supply and trading. The pool checks transfers and keeps LP reserves separate from protocol fee liabilities. Unsupported rebasing or fee-on-transfer behavior must not be treated as ordinary ERC-20 inventory.

Creating a pool requires maximum inputs for both assets, a deadline, and the reviewed reference price. A changed price or exceeded limit reverts before the factory deploys a pool or moves tokens. New factory deployments do not expose the earlier unbounded creation signature.

Core operation map

OperationInputs to constrainState affected
Quote stock sale / purchaseDirection and amountRead-only result; no reservation.
Add liquidityLP amount, maximum stock and USDG, recipient, deadlineReserves and LP supply.
Remove liquidityLP burn amount, minimum stock and USDG, recipient, deadlineReserves and LP supply.
Swap exact stock inputStock input, minimum USDG output, recipient, deadline, calibration hashReserves and accrued protocol USDG.
Swap exact USDG inputUSDG budget, minimum stock output, recipient, deadline, calibration hashReserves and accrued protocol USDG.
Collect protocol feesPermissionless trigger; immutable fee recipientAccrued liability and actual USDG balance only.
Publish status / pauseAuthorized data and freshnessNew-risk gate; not reserve ownership.
FinalizeMaturity conditionFinal-state record; no settlement transfer.
solidity
// VantaPool — exact public operation names
snapshot()
liveState()
quoteAddLiquidity(liquidity)
quoteRemoveLiquidity(lp)
quoteExactInput(rawIn, amount)
addLiquidity(liquidity, maxRaw, maxUsd, recipient, deadline)
removeLiquidity(lp, minRaw, minUsd, recipient, deadline)
swapExactInput(rawIn, amount, minOut, recipient, deadline, expectedCalibration)
collectProtocolFees()
finalize()
setRiskPaused(paused)

rawIn = true sells stock; false buys stock using a USDG budget. quoteExactInput returns amountOut, grossUsd, totalFee, protocolFee, and impactBps. The reported impact measures the change in marginal pool price from before to after the trade; it is distinct from the trading fee and from average execution versus a reference quote.

Anyone may trigger collectProtocolFees, but its destination is the immutable feeRecipient. Only the pool admin can setRiskPaused. The status adapter's immutable owner alone can publish session status or pause its new-risk gate. Use src/lib/contracts/abis.ts for exact generated ABI types and return fields.

Implemented local limits

ParameterMainnet setting
Deployment chain4663; separate development contracts on 31337 and 46630
Token decimals18 stock / 6 USDG / 18 LP
Creation multiplierFixed at 1; live multiplier is presentation data
Strike50–2,000 USDG per raw-token unit; local/testnet maximum 200
Volatility10%–200% annualized
Original duration7 or 30 days
Total liquidity cap100 LP units; initial liquidity at least 1 LP
Normalized stock x10⁻⁶ through 1 − 10⁻⁶
Stock-sale minimumCurve gross ≥ 1.000002 USDG; reported q ≥ 1.000000 after buffer
Stock-purchase minimumq ≥ 1.000002 USDG; input budget ≥ 1.003003 USDG at 30 bps
USDG reserve cap200,000 USDG on mainnet
USDG input cap10¹⁸ raw units = 10¹² USDG
Swap / protocol fee30 bps / 20% of the fee
Post-swap price bandWithin 5% of the fresh validated reference
Numerical buffer2 smallest USDG units; not a certified interval error bound

The normal CDF is approximated using a series. The inverse CDF starts from an Acklam-style estimate and uses refinement; PRB Math supplies fixed-point exponent, logarithm, and square-root operations. This is an independently implemented research kernel. The conservative two-unit buffer does not prove all-domain error bounds or replace numerical review.

Permanent accounting properties

  • Actual stock balance covers accounted stock reserves.
  • Actual USDG covers accounted LP reserves plus separately accrued protocol fees.
  • Protocol-fee collection does not reduce LP-owned reserves or LP supply.
  • Proportional LP operations use the pre-operation reserve and supply values with conservative integer rounding.
  • A failed transaction reverts transfer and accounting changes together.
  • Pause, stale data, cutoff, and expiry do not authorize reserve confiscation.

The protocol's mathematics and token-transfer paths require independent adversarial review. Passing the local suite demonstrates tested behaviors of this implementation; it does not certify the full production domain or economic replication quality.

Implementation and full design

Review the Solidity sources in contracts/, generated artifacts, and local deployment scripts together. The source code determines executable behavior. The full design specification intentionally contains additional requirements, phases, and acceptance tests that this local build has not completed.

VANTA DOCUMENTATIONMock-asset beta · September 2026