Skip to content
SECTION 09 / 15

Parameters

Every VIRUS constant, every Pons parameter VIRUS reads live with its exact getter, and the chain and Uniswap addresses with their verification status.

§How to read this page

There are three kinds of numbers:

  1. VIRUS constants. Compiled into the VIRUS contracts. They cannot be changed by anyone, including the VIRUS admin.
  2. Pons parameters. Owned by Pons and read live, every time they are used. This page lists the exact getter for each. Where the Pons published source sets a default, it is given and labelled default. A default is not a live value; the deployed Pons contracts may hold something else. Check the live value with the getter.
  3. Addresses. Given only where they appear in the VIRUS reference audit (the project's specimen log of every borrowed or adapted behavior, not a security audit), with that document's classification.

§VIRUS constants

§Economics (VirusEconomics)

Constant Value Meaning
BPS 10,000 Basis-point denominator
TARGET_CONTROLLED_BPS 80 Share of volume VIRUS aims to route to the feeder
BURN_SHARE_BPS 5,000 50% of feeder income burned from host supply
DEV_SHARE_BPS 3,000 30% of feeder income booked to the developer
TREASURY_SHARE_BPS 2,000 20% of feeder income to the treasury; the treasury also takes the rounding remainder
INOCULATION_FEE_BPS 250 2.5% of the host spent on the first buy, rounded up
MAX_DEPTH 3 Deepest VIRUS layer (ETH → host → v1 → v2 → v3)
PARITY_TOTAL_BPS 100 Parasite reference total fee (1.00%)
PARITY_VENUE_BPS 20 Parasite reference venue cut (0.20%)
Scaled unit bps × 10,000 Fee readouts in parts per 10^8 of volume

§Registry (VirusRegistry)

Constant Value Meaning
TREASURY_DELAY 2 days Between proposeTreasury and executeTreasury
COORDINATOR_DELAY 2 days Between proposeCoordinator and executeCoordinator

§Coordinator (VirusLaunchCoordinator, private constants)

Constant Value Meaning
MAX_TOTAL_TRADE_FEE_BPS 2,000 curveFeeBps + tax and hookFeeBps + tax must not exceed it (mirrors Pons)
HOST_DECIMALS 18 A host and its Pons pair economics must both report 18 decimals
MAX_NAME_LENGTH 64 bytes Mirrors PonsV2LaunchDeployer; name must be non-empty
MAX_SYMBOL_LENGTH 16 bytes Symbol must be non-empty
MAX_LOGO_LENGTH 512 bytes
MAX_DESCRIPTION_LENGTH 2,048 bytes
MAX_SOCIAL_LENGTH 256 bytes Each of twitter, telegram, discord, website, farcaster

§App-side (not on chain)

Setting Value
Slippage options 50, 100, 300 bps (0.5%, 1%, 3%)
Default slippage 100 bps (1%)
Minimum output floor(quote × (10,000 − slippage) / 10,000), never zero
Maximum route length MAX_DEPTH + 1 launches
Pool-swap minHopPriceX36 0 (amountOutMinimum is the bound)

§Pons parameters, read live

Every value in this section belongs to Pons. VIRUS reads it at the moment of use and never hardcodes it. Below, factory is the Pons V2 launch factory, hook is the meme hook (factory.memeHook()), and curve is a launch's bonding curve.

§Launch configs

Parameter Getter Default Notes
Number of configs factory.launchConfigCount() — Configs are indexed from 0
Config factory.getLaunchConfig(id) → {supply, curveFeeBps, phantomQuote, graduationThreshold, poolFee, tickSpacing, enabled} No published default recorded; read live Disabled configs are never offered
Supply getLaunchConfig(id).supply No published default recorded; read live The whole supply is minted to the curve
Curve base fee getLaunchConfig(id).curveFeeBps; per launch curve.feeBps() No published default recorded; read live The creator tax is solved against it
Pool LP fee getLaunchConfig(id).poolFee Must be 0 (CoreLpFeeMustBeZero) All post-graduation fees are hook fees
Tick spacing getLaunchConfig(id).tickSpacing No published default recorded; read live Part of the pool key

§Host pair economics

Parameter Getter Notes
Pair approval factory.approvedPairTokens(host) Owner-controlled (setPairTokenApproved)
Phantom quote reserve factory.pairTokenEconomics(host).phantomQuote; per launch curve.phantomQuote() Host units; replaces the config's figure for a custom-pair launch
Graduation threshold factory.pairTokenEconomics(host).graduationThreshold; per launch curve.graduationThreshold() and getLaunchedToken(virus).graduationThreshold Host units
Decimals factory.pairTokenEconomics(host).decimals VIRUS requires 18

§Fee policy

The live policy applies to new launches. Each launch keeps a frozen copy.

Parameter Live getter Per-launch getter Default Ceiling
Protocol fee recipient hook.currentFeePolicy().protocolFeeRecipient factory.getLaunchFeePolicy(token).protocolFeeRecipient — —
Protocol fee share hook.currentFeePolicy().protocolFeeShareBps factory.getLaunchFeePolicy(token).protocolFeeShareBps, curve.protocolFeeShareBps() 3,000 (30%) 5,000
Buyback burn share hook.currentFeePolicy().buybackBurnBps factory.getLaunchFeePolicy(token).buybackBurnBps 5,000 —
Hook fee hook.currentFeePolicy().hookFeeBps factory.getLaunchFeePolicy(token).hookFeeBps 100 (1.00%) 1,000
Max internal price impact hook.currentFeePolicy().maxInternalPriceImpactBps factory.getLaunchFeePolicy(token).maxInternalPriceImpactBps 300 —

Buybacks are disabled on every virus, so buybackBurnBps has no effect on VIRUS children.

§Creator tax and fee ceilings

Parameter Getter Default Notes
Max creator tax factory.maxCreatorTaxBps() 1,000, hard ceiling 1,000 A secondary source reports 10% on mainnet (UNVERIFIED). Not part of the Pons economics digest.
Creator tax of a launch getLaunchedToken(token).creatorTaxBps, curve.creatorTaxBps() — Set by VIRUS at launch
Combined curve ceiling — curveFeeBps + creatorTaxBps ≤ 2,000 Pons rule, mirrored by the coordinator
Combined pool ceiling — hookFeeBps + creatorTaxBps ≤ 2,000 Pons rule, mirrored by the coordinator

§Launch gate and launch fee

Parameter Getter Default Notes
Open launching factory.launchEnabled() —
Launch permission factory.canLaunch(address) — launchEnabled || whitelistedLaunchers[address]; VIRUS requires it for you and for the coordinator
Launch fee factory.launchFee() Not in the published source Wei; msg.value must equal it. A secondary source reports 0.0005 ETH (UNVERIFIED).
Launch forwarder factory.launchForwarder() — The only address allowed to call launchTokenFor. VIRUS does not use it.

§Snipe tax

Parameter Getter Default Notes
Starting rate factory.snipeTaxStartBps() 9,900 Snapshotted per launch
Window factory.snipeTaxSeconds() 15 seconds, maximum 60 A secondary source says "decays to zero over 5 seconds" (UNVERIFIED X5). Curve-side logic is not in the published source (UNVERIFIED X1).

§Curve state (per launch)

Parameter Getter
Reserves used for pricing curve.getReserves() → (quoteReserve, tokenReserve)
Real quote raised curve.realQuoteReserve()
Collected fee and tax (unswept) curve.quoteFeeBalance(), curve.creatorTaxBalance()
Pool reserve curve.reservedTokens()
Remaining sellable curve.sellableTokens()
Ready to graduate curve.readyToGraduate()
Graduated curve.graduated()

§Pool state (per graduated launch)

Parameter Getter
Pending base fees hook.pendingFees(poolId, currency)
Pending creator tax hook.pendingCreatorTax(poolId, currency)
Pending buyback hook.pendingBuyback(poolId, currency)
Sweep operator hook.feeSweepOperator()

§Pons timings (published source)

Parameter Value Class
Creator fee recipient override 3-day timelock, then a 3-day execution window VERIFIED_PONS (source)
Swept-graduation rescue Available after 7 days in Swept VERIFIED_PONS (source)

§Pons wiring

VIRUS configures only the Pons factory address. Every other Pons address is read from the factory:

Contract Getter
Meme hook factory.memeHook()
Fee escrow factory.feeEscrow()
Uniswap V4 PoolManager factory.poolManager()
Uniswap V4 PositionManager factory.positionManager()
Launch locker factory.locker()

§Addresses

No VIRUS contract addresses are given in these docs. The app reads them from its deployment configuration. Confirm any VIRUS address you are given against the wiring checks in Verify on chain.

§Robinhood Chain

Item Value Class
Chain ID 4663 (mainnet), 46630 (testnet) UNVERIFIED, consistent across several sources
Public RPC https://rpc.mainnet.chain.robinhood.com (rate limited) UNVERIFIED
Explorer https://robinhoodchain.blockscout.com (default). Uniswap's registry links a different Blockscout host, 8crv4vmq6tiu1yqr.blockscout.com. UNVERIFIED
WETH9 0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73 UNVERIFIED; not used by VIRUS

§Pons V2

Contract Address Class
Launch factory 0x7eD598BcEf8bd9Edd8C97A195C6d13f40801EC7e UNVERIFIED: stated in the Pons README and a secondary source; bytecode not checked. Fork test test_fork_FactoryWiring.
Fee escrow 0xd3AFEB2a57f70eF218Aa82451c51B2fb0416Ac9e UNVERIFIED (secondary source). Never used as a constant; read from factory.feeEscrow().
Meme hook 0xE5e702641Ea86F4ae6cC3cDaeD2B886f976Be044 UNVERIFIED (secondary source). Read from factory.memeHook().
Buyback vault 0x42df2a798f82289E177311362e8f5ccC45c1219c UNVERIFIED (secondary source). Not used by VIRUS.
Launch locker 0x267444D099b10fB5Ed7c3Cc7B7c767AdcA574952 UNVERIFIED (secondary source). Read from factory.locker().

§Uniswap V4 on chain 4663

From Uniswap's first-party deployment registry (deployments/json/4663.json). Bytecode was not checked. Fork test test_fork_UniswapWiring asserts that the Pons factory uses these PoolManager and PositionManager addresses.

Contract Address Class
PoolManager 0x8366a39CC670B4001A1121B8F6A443A643e40951 UNVERIFIED
PositionManager 0x58daec3116aae6D93017bAAea7749052E8a04fA7 UNVERIFIED
V4Quoter 0x8Dc178eFB8111BB0973Dd9d722ebeFF267c98F94 UNVERIFIED
StateView 0xF3334192D15450CdD385c8B70e03f9A6bD9E673b UNVERIFIED
UniversalRouter (v2.1.2) 0x204FAca1764B154221e35c0d20aBb3c525710498 UNVERIFIED
Permit2 0x000000000022D473030F116dDEE9F6B43aC78BA3 UNVERIFIED

Universal Router encoding used by VIRUS: command V4_SWAP = 0x10; actions SWAP_EXACT_IN_SINGLE = 0x06, SETTLE_ALL = 0x0c, TAKE_ALL = 0x0f. Graduated-pool trading stays disabled in the production app until test_fork_UniversalRouterSwap passes.