Token Types

IGNIX tokens come in two forms: Non-tax token and Fee-on-Transfer.

Both use the same bytecode. The token type is determined by its tax rate fields.

How to Identify the Token Type

IgnixToken(token).taxBuyBps()
IgnixToken(token).taxSellBps()

The token type and trading venue are fixed as a pair. There is no Taxed + V4 or Tax-Free + V2 combination.

Note

taxBuyBps and taxSellBps are independent. Buy Tax and Sell Tax may differ, with a maximum of 10% per side.

Non-tax token

A standard ERC20 with no transfer tax.

After graduation, it trades through Uniswap V4.

Fee-on-Transfer

Buy and sell transactions are taxed according to taxBuyBps and taxSellBps.

After graduation, the token trades through Uniswap V2.

When integrating, note that:

  • A V2 Router that supports Fee-on-Transfer tokens must be used
  • Exact-out routing is not supported
  • Quotes must account for the trading tax:
Amount received ≈ Theoretical output × (1 − taxBuyBps / 10000)

During the protection period, official X Layer V2/V3 pools and registered third-party pools are also subject to the tax rules. After the protection period ends, the tax scope narrows to the primary graduated V2 pool only.

Graduation Protection Period

The graduation protection period for Non-tax (V4) tokens has been removed. Non-tax tokens created after this change trade through any correctly implemented V4 Router immediately after graduation — settlement is no longer restricted to the official Router. protectionDuration() is permanently 0 and protectionActive() is permanently false for these tokens.

Non-tax tokens created before this change are unaffected: they keep running out the protection window set at their creation. This change is not retroactive.

Fee-on-Transfer (V2) tokens are unaffected by this change. The protection period keeps working as before: set by the Creator at launch, with a minimum of 1 day and a default of 100 days, starting from graduation.

IgnixToken(token).protectionDuration()
IgnixToken(token).protectionActive()
IgnixToken(token).protectionEndsAt()
  • Non-tax token (created after this change)protectionDuration() == 0; there is no protection period after graduation. Direct PoolManager interaction and any correctly implemented V4 Router both work.
  • Non-tax token (created before this change) — keeps its original protection window. During the window, V4 settlement can only be completed through the official Router; direct PoolManager interaction or trading through other official V2/V3 pools will fail. After it ends, there is no longer any restriction.
  • Taxed tokens — During the protection period, tax rules apply to official pools and registered third-party pools. After the period ends, only the primary graduated V2 pool remains taxed.

Integrations should read the on-chain protectionDuration() value to determine whether a protection window exists, rather than inferring it from the token's creation time or contract generation.

Common Read Methods

pair()        // Official V2 pool; 0 for Non-tax token
tracker()     // Dividend tracker
taxSink()     // Tax destination; 0 for Non-tax token
unlocked()    // false = still on the Bonding Curve

To determine graduation status:

IgnixManager(manager).pairOf(token)
// Non-zero → Graduated to V2

IgnixManager(manager).tokens(token).poolId
// Non-zero → Graduated to V4
Caution

unlocked() == false means the token is still in the Bonding Curve stage and can only be traded through the Manager.

Read Failures

Do not assume a token is tax-free if reading taxBuyBps / taxSellBps fails.

Earlier token versions may not expose these fields, while RPC failures can produce similar results. Integrations should distinguish between the two cases and retry when necessary to avoid incorrect quotes or routing.

See Deployment Addresses for contract addresses.