Skip to main content

Parameters Reference

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

Game Parameters (DelistGame)

ParameterDefault ValueOwner-SettableDescription
countdownDuration4 hoursYesTime between rounds
voteDuration5 minutesYesHow long the voting window stays open
winnerBuybackBps4,000 (40%)YesShare of delisting ETH that buys blue-chip index tokens
spreadBuybackBps4,000 (40%)YesShare that buys a random index's tokens
randomBuybackBps1,000 (10%)YesShare that buys another random index'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.

Randomness Provider Parameters

Robinhood Chain has no randomness oracle (no Chainlink VRF, Pyth Entropy, or Gelato VRF), so IndexPVP uses Quiver VRF from the Quiver Foundation — a verifiable two-party commit–reveal randomness coordinator behind the provider-agnostic IRandomnessProvider interface, fulfilled by the QuiverRandomnessProvider adapter. See QuiverRandomnessProvider for the full design.

ParameterValueOwner-SettableDescription
RANDOMNESS_TIMEOUT1 hourNo (constant)Time after which the owner can trigger the fallback via cancelPendingDelisting()
Randomness providerQuiverRandomnessProviderYesSwappable via DelistGame.setRandomnessProvider()
Quiver coordinator / provider addressesChain-selectedEnv overrideSelected by chain id in Deploy.s.sol; overridable via QUIVER_COORDINATOR / QUIVER_PROVIDER
Random word derivationkeccak256(userRandom ‖ providerRevelation)NoTwo-party value: fair as long as either the consumer or Quiver is honest
Fallback entropykeccak256(blockhash(block.number - 1), block.timestamp, ...)NoUsed only by the timeout fallback — never block.prevrandao (constant 1 on Arbitrum-stack chains)
info

The game contract pays the provider in native ETH per request and must hold a balance to cover request fees. The owner can replenish via direct transfer or withdraw unused balance via withdrawRandomnessBalance().

Fee Parameters (DelistGameHook)

Immutable Constants

ParameterValueDescription
ABSOLUTE_MAX_FEE_BPS500 (5%)Hard cap on base fee — cannot be changed by admin
CIRCUIT_BREAKER_MAX_FEE_BPS9,000 (90%)Starting sell fee while a circuit breaker is active
CIRCUIT_BREAKER_DURATION300 seconds (5 min)Circuit-breaker decay window
HALT_WINDOW_SELL_FEE_BPS2,000 (20%)Sell fee during the voting trading halt
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
gameDelistGame addressImmutable, only address that can call finalize()
ownerDeployer addressImmutable, only address that can call sweep()
snapshotPotSet at finalizationETH balance frozen when the market closes
snapshotSupplySet at finalizationWinning token total supply at market close

Redemption formula (NAV): ethOut = (tokenAmount * snapshotPot) / snapshotSupply

Token Parameters (IndexToken)

ParameterValueDescription
Total Supply1,000,000,000 (1B)Fixed supply per index
Decimals18Standard ERC20
Initial Distribution100% to DelistGameAll 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%

News Wire Parameters

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

Governance Parameters (ZK Roundtable)

ParameterValueDescription
Vote Duration5 minutesVoting window length
Seats Per RoundOne per listed indexOnly the top holder of each listed index can vote
Votes Per Index1 per roundNullifier Poseidon(2, roundId, indexCode) enforces no double-voting
Vote WeightaliveCount - rank + 1#1 market cap = heaviest seat (and immune); last place = weight 1
Immune Index#1 market cap (blue chip)Cannot be voted as the delisting target; still gets a seat
Merkle Tree Depth8Supports up to 256 listed indexes
Leaf FormatPoseidon(indexCode, rank, topHolder)Included under the per-round rankingRoot
Vote EncryptionNaCl box (curve25519-xsalsa20-poly1305)Encrypted to keeperPublicKey() on-chain
Binding Commitmentkeccak256(voterIndex, targetIndex, salt)Posted at vote time; keeper cannot substitute plaintext at reveal
ZK CircuitNoir vote_eligibilityVerified by Barretenberg UltraHonk (HonkVerifier contract)
Minimum Indexes2Game requires at least 2 listed indexes

Game Constants

ConstantValue
Total Indexes117
Tokens Per Index1,000,000,000
Liquidity Positions Per Index7
ChainsRobinhood Chain (4663, production), Robinhood Chain Testnet (46630, staging)
Tick Spacing60
Initial sqrtPriceX96792281625142643375935439503360000
Randomness SourceQuiver VRF via QuiverRandomnessProvider (two-party commit–reveal, native ETH)
Random Words Per Request1 (3 values derived via keccak256)