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.
Read live pool counts and availability for the configured deployment.
Inspect the runtime token, factory, adapter, and feed addresses without relying on copied addresses in a guide.
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
| Asset | Decimals | Purpose |
|---|---|---|
| Configured stock token | 18 | Raw stock inventory and trader input/output. |
| USDG | 6 | Stable inventory and all swap fees. |
| Pool LP token | 18 | Pool-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
| Operation | Inputs to constrain | State affected |
|---|---|---|
| Quote stock sale / purchase | Direction and amount | Read-only result; no reservation. |
| Add liquidity | LP amount, maximum stock and USDG, recipient, deadline | Reserves and LP supply. |
| Remove liquidity | LP burn amount, minimum stock and USDG, recipient, deadline | Reserves and LP supply. |
| Swap exact stock input | Stock input, minimum USDG output, recipient, deadline, calibration hash | Reserves and accrued protocol USDG. |
| Swap exact USDG input | USDG budget, minimum stock output, recipient, deadline, calibration hash | Reserves and accrued protocol USDG. |
| Collect protocol fees | Permissionless trigger; immutable fee recipient | Accrued liability and actual USDG balance only. |
| Publish status / pause | Authorized data and freshness | New-risk gate; not reserve ownership. |
| Finalize | Maturity condition | Final-state record; no settlement transfer. |
// 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
| Parameter | Mainnet setting |
|---|---|
| Deployment chain | 4663; separate development contracts on 31337 and 46630 |
| Token decimals | 18 stock / 6 USDG / 18 LP |
| Creation multiplier | Fixed at 1; live multiplier is presentation data |
| Strike | 50–2,000 USDG per raw-token unit; local/testnet maximum 200 |
| Volatility | 10%–200% annualized |
| Original duration | 7 or 30 days |
| Total liquidity cap | 100 LP units; initial liquidity at least 1 LP |
| Normalized stock x | 10⁻⁶ through 1 − 10⁻⁶ |
| Stock-sale minimum | Curve gross ≥ 1.000002 USDG; reported q ≥ 1.000000 after buffer |
| Stock-purchase minimum | q ≥ 1.000002 USDG; input budget ≥ 1.003003 USDG at 30 bps |
| USDG reserve cap | 200,000 USDG on mainnet |
| USDG input cap | 10¹⁸ raw units = 10¹² USDG |
| Swap / protocol fee | 30 bps / 20% of the fee |
| Post-swap price band | Within 5% of the fresh validated reference |
| Numerical buffer | 2 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.