Skip to main content

Parameters Reference

All configurable and immutable parameters that govern the game's behavior.

Game Parameters (NukeGame)

ParameterDefault ValueOwner-SettableDescription
countdownDuration4 hoursYesTime between rounds
voteDuration5 minutesYesHow long the voting window stays open
winnerBuybackBps4,000 (40%)YesShare of nuke ETH that buys winner country tokens
spreadBuybackBps4,000 (40%)YesShare that buys a random country's tokens
randomBuybackBps1,000 (10%)YesShare that buys another random country's tokens
treasuryBps1,000 (10%)YesShare sent to treasury
note

Fee split percentages must always sum to exactly 100% (10,000 bps). Changing one requires adjusting others.

ParameterDefault ValueOwner-SettableDescription
vrfCallbackGasLimit800,000YesGas limit for the VRF callback (must cover liquidity removal + 3 swaps)
vrfRequestConfirmations3YesBlock confirmations before VRF fulfillment
VRF_TIMEOUT1 hourNo (constant)Time after which owner can trigger prevrandao fallback

VRF Network Addresses

NukeGame uses VRF V2.5 direct funding — only the Wrapper address is consumed by the contract (Coordinator and LINK are informational, not used by the protocol).

ComponentBase Mainnet (8453)Base Sepolia (84532)
VRF V2.5 Wrapper0xb0407dbe851f8318bd31404A49e658143C982F230x7a1BaC17Ccc5b313516C5E16fb24f7659aA5ebed
VRF Coordinatorsee Chainlink docs0x5C210eF41CD1a72de73bF76eC39637bB0d3d7BEE
LINK Tokensee Chainlink docs0xE4aB69C077896252FAFBD49EFD26B5D171A32410

For canonical Chainlink addresses see docs.chain.link/vrf/v2-5/supported-networks.

info

The contract pays for VRF in native ETH (not LINK). It must hold an ETH balance to cover VRF fees. The deployment script seeds 0.02 ETH; the owner can replenish via direct transfer or withdraw unused balance via withdrawVrfBalance().

Fee Parameters (NukeGameHook)

Immutable Constants

ParameterValueDescription
ABSOLUTE_MAX_FEE_BPS500 (5%)Hard cap on base fee — cannot be changed by admin
ANTI_SNIPE_MAX_FEE_BPS9,000 (90%)Starting sell fee during anti-snipe
ANTI_SNIPE_DURATION300 seconds (5 min)Anti-snipe decay window
NUKE_WINDOW_SELL_FEE_BPS2,000 (20%)Sell fee during voting
LP_FEE_OVERRIDE0LP fee set to zero (protocol takes all)

Admin-Configurable

ParameterDefaultSetterDescription
flatFeeBps100 (1%)setFees()Base fee on every trade
maxTotalFeeBps500 (5%)setFees()Soft cap on base fee (flat + dynamic), bounded by ABSOLUTE_MAX_FEE_BPS
maxDynamicFeeBps400 (4%)setDynamicFeeParams()Cap on volatility-based fee component
feeControlNumerator500setDynamicFeeParams()Sensitivity of fee to volatility
decayPeriod60 secondssetDynamicFeeParams()How often volatility decays
decayBps5,000 (50%)setDynamicFeeParams()How much volatility decays per period
treasurySplitBps3,000 (30%)setTreasurySplit()Share of fees sent to Prize Pot (remainder to protocol)
protocolFeeRecipientdeployersetProtocolFeeRecipient()Address receiving protocol's share of fees (70%)
treasuryRecipientPrizePotsetTreasuryRecipient()Address receiving treasury share of fees (30%)
note

The flatFeeBps and maxTotalFeeBps can be lowered by the admin but can never exceed the immutable ABSOLUTE_MAX_FEE_BPS (5%). This prevents the protocol from raising fees beyond the hard cap.

Prize Pot Parameters (PrizePot)

ParameterValueDescription
gameNukeGame addressImmutable, only address that can call finalize()
ownerDeployer addressImmutable, only address that can call sweep()
snapshotPotSet at finalizationETH balance frozen when game ends
snapshotSupplySet at finalizationWinning token total supply at game end

Claim formula: ethOut = (tokenAmount * snapshotPot) / snapshotSupply

Token Parameters (CountryToken)

ParameterValueDescription
Total Supply1,000,000,000 (1B)Fixed supply per country
Decimals18Standard ERC20
Initial Distribution100% to NukeGameAll tokens go to liquidity

Liquidity Distribution (Staircase)

TierTick LowerTick UpperAllocation
1-887,220-300,00025.0%
2-300,000020.0%
30100,02018.0%
4100,020144,00015.0%
5144,000168,00010.0%
6168,000180,0007.0%
7180,000184,2005.0%

PSA Board Parameters

ParameterValueDescription
FLOOR_PRICE0.005 ETHMinimum posting price
DECAY_DURATION6 hoursTime for price to decay from peak to floor
MAX_MESSAGE_LENGTH280 charactersMaximum PSA message length
Price Multiplier2xNext price = 2x last price paid

Governance Parameters (ZK Roundtable)

ParameterValueDescription
Vote Duration5 minutesVoting window length
Seats Per RoundOne per alive countryOnly the top holder of each alive country can vote
Votes Per Country1 per roundNullifier Poseidon(2, roundId, countryCode) enforces no double-voting
Vote WeightaliveCount - rank + 1#1 market cap = heaviest seat (and immune); last place = weight 1
Immune Country#1 market capCannot be voted as the nuke target; still gets a seat
Merkle Tree Depth8Supports up to 256 alive countries
Leaf FormatPoseidon(countryCode, rank, topHolder)Included under the per-round rankingRoot
Vote EncryptionNaCl box (curve25519-xsalsa20-poly1305)Encrypted to keeperPublicKey() on-chain
Binding Commitmentkeccak256(voterCountry, targetCountry, salt)Posted at vote time; keeper cannot substitute plaintext at reveal
ZK CircuitNoir vote_eligibilityVerified by Barretenberg UltraHonk (HonkVerifier contract)
Minimum Countries2Game requires at least 2 alive countries

Game Constants

ConstantValue
Total Countries177
Tokens Per Country1,000,000,000
Liquidity Positions Per Country7
ChainBase Sepolia (84532)
Tick Spacing60
Initial sqrtPriceX96792281625142643375935439503360000
Randomness SourceChainlink VRF V2.5 (direct funding, native ETH)
VRF Random Words Per Request1 (3 values derived via keccak256)