$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
| Property | Value |
|---|---|
| Type | Arbitrum-native ERC-20 |
| Supply | Elastic — no cap |
| Genesis NAV | Exactly $1.00 per token |
| Value driver | NAV of the underlying basket |
| Governance | None — $GNDX does not grant voting rights |
| Upgradeable | UUPS proxy — upgrades require governance vote + 7-day timelock |
How $GNDX is Minted
$GNDX is minted exclusively by MintEngine.sol when a user deposits USDC:
- User approves USDC transfer and calls
submitMintOrder(usdcAmount, slippageToleranceBps, recipient) - For small orders (below the instant floor of $25,000): always executes instantly from the USDC buffer — $GNDX minted in the same transaction
- 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
- For orders above $50,000: 1-hour TWAP execution over 4 equal chunks — $GNDX minted when all chunks complete
- 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
- $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:
- User approves $GNDX transfer and calls the relevant redemption function
- A 0.20% exit fee is transferred to FeeCollector (in $GNDX, before burn)
- The remaining $GNDX is burned
- The user receives their chosen redemption: basket tokens, USDC, or a single overweight token with 0.22% bonus
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 Formula
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:
| Period | NAV Drag | Example: $10,000 position |
|---|---|---|
| 1 year | 0.75% | $9,925 net of fee |
| 2 years | 1.49% cumulative | $9,851 net |
| 3 years | 2.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