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.
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.
taxBuyBps and taxSellBps are independent. Buy Tax and Sell Tax may differ, with a maximum of 10% per side.
A standard ERC20 with no transfer tax.
After graduation, it trades through Uniswap V4.
Buy and sell transactions are taxed according to taxBuyBps and taxSellBps.
After graduation, the token trades through Uniswap V2.
When integrating, note that:
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.
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()
protectionDuration() == 0; there is no
protection period after graduation. Direct PoolManager interaction and any correctly
implemented V4 Router both work.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.
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
unlocked() == false means the token is still in the Bonding Curve stage and can only be traded through the Manager.
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.