Skip to content
DegenX Docs
Arc mainnetOpen app

State, events & indexer

The production app reads indexed data from the Rust backend at https://api.degenx.fun/graphql. Indexed data can lag the chain. Use fresh contract reads and exact-call simulation before signing; a database row does not authorize a transaction.

Resolve the gauge through launchpad.tokenToGauge(token) and quote asset through tokenToQuote(token). Then read:

Read Meaning
gaugeActive() Gauge has not successfully graduated; combine with completion/refund state
gaugeClosable() Curve completion condition
quoteRaised() Current tracked curve reserve; reset after graduation
quoteTarget() This launch’s original target; remains readable after graduation
tokenPurchased() / tokenTarget() Curve allocation progress
curveParameters() This gauge’s snapshotted curve settings
snipeTaxSeconds() / snipeTaxStartBps() This launch’s anti-snipe settings
snipeTaxRate(buyer) Current buyer-specific rate, 1e18-scaled
adapter() / poolId() Venue integration and actual graduated pool
feeEscrow() / buybackVault() Snapshotted fee infrastructure
refundsEnabled() / closableSince() Recovery mode and graduation stall timing
launchpad.feeRecipient(token) Live creator-side recipient and authority

An inactive curve does not imply the token has no market. Check the pool state. A complete but deferred curve requires graduation/recovery handling, not ordinary curve trading.

Source Events / purpose
Launchpad NewToken, FeeRecipientSet, quote/default configuration events, takeover events
Each gauge Buy, Sell, PoolLaunched, GraduationDeferred, FeesDistributed, refund events
Launch token ERC-20 Transfer for balances and holders
FeeEscrow Creator/protocol fee credits and withdrawals
BuybackVault Funding, executed purchases and vesting releases
Adapter / PoolManager Hook fees and v4 pool swaps, filtered by the registered pool ID

Download the full ABIs for exact event field types. Never invent a signature based only on a display label.

When a NewToken event discovers a gauge, fetch its logs from that same block before proceeding. An initial developer buy and even graduation can happen inside the creation transaction. Merge discovered logs in block/transaction/log order and make projections idempotent.

This query was executed successfully against production on 15 September 2026:

Terminal window
curl https://api.degenx.fun/graphql \
-H 'Content-Type: application/json' \
--data '{"query":"{ tokens(first: 2) { id symbol name quoteTarget } }"}'

quoteTarget is returned as an integer string in the quote’s base units. USDC targets 10000000 and 10000000000 mean 10 and 10,000 USDC respectively. JSON floating-point numbers are unsuitable for arbitrary token atom amounts.

The backend indexes both gauge trades and registered Uniswap v4 swaps into the trade feed and candle series. Preserve the venue and pool identity while presenting the token’s continuous history. Do not count a token transfer as a second trade.

For six-decimal USDC, a marginal price integer can truncate to zero while trade-derived prices remain meaningful. Store sufficient decimal precision for realized prices and candles. USD valuations in the current Arc deployment use the USDC-as-one-dollar assumption, not a live depeg oracle.

Production uses Alchemy newHeads over WSS as a low-latency wake-up. HTTP eth_getLogs reconciliation with a durable cursor remains authoritative, on a five-second polling interval. WebSocket messages can be missed; reconnecting must catch up from durable progress, not from the latest notification alone.

The public Arc replay begins at block 20,851,553 to retain the successful canary and active test launch while excluding the known-broken first canary. It is therefore not a complete history from the factory’s original deployment block. A full independent indexer should discover all factory launches and clearly label failed/refunding histories.