Skip to main content

$GNDX Token

$GNDX is the index product token of GNDX Protocol. It represents proportional ownership of the underlying basket of Web3 gaming tokens held in the IndexVault smart contract.

Key Properties

PropertyValue
TypeArbitrum-native ERC-20
SupplyElastic — no cap
Genesis NAVExactly $1.00 per token
Value driverNAV of the underlying basket
GovernanceNone — $GNDX does not grant voting rights
UpgradeableUUPS proxy — upgrades require governance vote + 7-day timelock

How $GNDX is Minted

$GNDX is minted exclusively by MintEngine.sol when a user deposits USDC:

  1. User approves USDC transfer and calls submitMintOrder(usdcAmount, slippageToleranceBps, recipient)
  2. For small orders (below the instant floor of $25,000): always executes instantly from the USDC buffer — $GNDX minted in the same transaction
  3. For mid-range orders ($25,000–$50,000): probabilistically routed to instant or TWAP using a quadratic curve that increasingly favours TWAP as the amount approaches $50,000
  4. For orders above $50,000: 1-hour TWAP execution over 4 equal chunks — $GNDX minted when all chunks complete
  5. Additional rate limiting: per-address rolling 24-hour window (capped at $50,000 cumulative instant) and a global protocol-level budget of $500,000 instant mints per hour
  6. $GNDX minted at the NAV price at the time of completion

A 0.10% mint fee applies to all orders. This fee is sent to FeeCollector.sol and distributed weekly.

How $GNDX is Burned

$GNDX is burned exclusively by RedeemEngine.sol when a user redeems:

  1. User approves $GNDX transfer and calls the relevant redemption function
  2. A 0.20% exit fee is transferred to FeeCollector (in $GNDX, before burn)
  3. The remaining $GNDX is burned
  4. The user receives their chosen redemption: basket tokens, USDC, or a single overweight token with 0.22% bonus
Proportion Before Burn

The proportion calculation (userShare = gndxAmount / totalSupply) is always computed before any $GNDX is burned. This ordering is enforced in the smart contract and is critical to correctness.

NAV per $GNDX = Total Vault Value (USD) ÷ Total $GNDX Supply

At protocol genesis, when total supply is zero, NAVOracle.getNAVPerToken() returns exactly 1e18 ($1.00). This is hardcoded and not configurable.

After launch, NAV moves with the underlying basket:

  • When the gaming basket appreciates → NAV rises → $GNDX price rises
  • When the gaming basket falls → NAV falls → $GNDX price falls
  • The streaming fee (0.75%/yr) creates a small, predictable downward NAV drag

Secondary Market and Arbitrage

$GNDX trades on a $GNDX/USDC Uniswap V3 pool on Arbitrum. Its market price is kept tightly pegged to NAV by arbitrage:

  • $GNDX at premium: arbitrageurs mint at NAV, sell at premium → increases supply, pushes price down
  • $GNDX at discount: arbitrageurs buy cheap on DEX, redeem at NAV → decreases supply, pushes price up

This is identical to how ETF creation/redemption units work in traditional finance.

Streaming Fee Drag

The 0.75% annual streaming fee is charged by very slightly diluting existing $GNDX holders each block:

PeriodNAV DragExample: $10,000 position
1 year0.75%$9,925 net of fee
2 years1.49% cumulative$9,851 net
3 years2.22% cumulative$9,778 net

This is comparable to Vanguard ETF expense ratios and is transparent on-chain at all times.

Contract Address

The $GNDX contract is a UUPS upgradeable proxy that will be deployed to Arbitrum One. Contract addresses will be published once mainnet deployment is complete.


See also: $GAME Token · Minting · Redeeming