Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.parquet.exchange/llms.txt

Use this file to discover all available pages before exploring further.

Deployment status

Parquet is live on devnet today: 15 active markets, price-pusher streaming Alpaca + Finnhub during US Regular Trading Hours, keeper online stamping funding for every market, and Helius webhooks pointed at the Tailscale-funnelled indexer. Mainnet is not yet deployed. The mainnet deploy wallet — vanity address PARQVsPSbsn1Pm7kdayZpicVu2pBRLYEnqijLP2QC3z — is parked at 0 SOL pending the launch milestone. The same six program keypairs are mirrored across Anchor.toml’s [programs.localnet] / [programs.devnet] / [programs.mainnet] blocks, so the addresses below will not change at the mainnet cutover.

Programs

pool_program

Owns per-market vaults, manages the v4 payout queue and side_bucket, accrues fees, mints LP shares on deposits.
Acme8JzWrvVqGJz7nTKVsLYisN6MtP83nrs4fVAeXJsN
View on Solana Explorer

perp_engine

Position lifecycle (open/close/liquidate), order management (limit/stop), margin updates, funding-rate cranks. Calls pool_program via engine_auth CPIs.
6QrsMTMEu9rsLpyxQgRdvQsWoPgHGY9npNNiwTtXsbdc
View on Solana Explorer

oracle_adapter

Lightweight CPI surface for read-only price reads. Other programs CPI here rather than parsing PriceFeed bytes directly. Outside US Regular Trading Hours, every CPI here returns PriceStale (which is how the weekend halt is enforced).
6fsnWa9tcKcPiuQgdUbTMsiwUr43MNoxa1FECPFrvSpd
View on Solana Explorer
Pre-deploy gate. The oracle_adapter build must NOT carry the test-mode feature when shipped to devnet or mainnet. A test-mode binary reads from a never-initialized TestPriceFeed PDA and every validate_and_read_price CPI returns PriceStale (6000). Operators run strings target/deploy/oracle_adapter.so | grep -c set_test_price and require a count of 0 before any anchor deploy. See the project CLAUDE.md for the runbook.

price_feed

Per-market PriceFeed PDA storage. Layout (frozen, must match oracle-adapter::read_switchboard): mantissa @ 4337, scale @ 4353, ts @ 4357. The price-pusher writes here every 1 second during RTH, gated by deviation (default 15 bps; tighter overrides for TSLA/MSTR/COIN at 10 bps and the ETFs at 8 bps with a 10s heartbeat).
Dgorf5LPiMttdTxWcrsiA2j94kWKw55gJLRJm8P4E1Hn
View on Solana Explorer

fee_distributor

Two-stage fee routing: sweep non-LP fees from pool, distribute via configurable splits (staker_split_bps, treasury_split_bps; referral share is the remainder). Includes disburse_referral for affiliate payouts.
CHTpVtZQboxjM6N9xk1RR29jZyWqFNV77cmQNJ18RNNL
View on Solana Explorer

staking

Multi-pool staking. Two pool types via reward_source enum (BalanceBased / EmissionSchedule). Supports atomic claim_and_restake across pool types.
35HddZHf84u6DeyLoZL3Z3a8pZ59594xu1aizj7VrAGR
View on Solana Explorer

mock_usdc (devnet only)

Devnet collateral mint. The deploy wallet is the mint authority. Mainnet will use the canonical USDC SPL mint EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v — do not assume this devnet mock address on mainnet.
DA8DJqnj49QrNN6TSbZ13cMubdJ8agSeEohH5AGjkgYA
View on Solana Explorer

Markets

pool_program holds 16 per-symbol MarketState PDAs initialized at devnet cutover. 15 are active (AAPL, MSFT, NVDA, GOOGL, AMZN, META, TSLA, COIN, MSTR, PLTR, AMD, SPY, QQQ, GLD, USO). The 16th — SMCI — has its PDA initialized but no pusher feed, so its oracle is always stale and opens always revert. The Alpaca free tier’s 30-channel subscription cap is the gating constraint: 15 symbols × (trades + quotes) = 30, no room for a 16th. All markets share MAX_LEVERAGE = 250, MMR_BPS = 20, initial-margin = 40 bps, liquidation fee = 50 bps, funding cap = 10 bps/hour, and an OI cap of $50,000 per side. The on-chain maxDeviationBps circuit breaker is set to 0 (disabled) — bad-data rejection happens in the off-chain aggregator. See Markets for the symbol list.

Fee distribution split

scripts/init-v4.ts writes 80% LP / 12% stakers / 7.8% treasury / 0.2% referral at fresh init. Splits live on the FeeDistributor config account as staker_split_bps and treasury_split_bps; the referral share is the remainder.

See also