Skip to main content

The Game Cycle

GlobalPVP operates in a repeating cycle of three phases: Countdown, Voting, and Execution. Understanding this cycle is critical to playing effectively.

Phase 1: Countdown (4 Hours)

The game begins with a 4-hour countdown. During this phase:

  • Trading is fully open — Buy and sell any alive country's tokens
  • Standard fees apply — 1-5% dynamic fee based on volatility
  • Market caps shift — Prices move based on buying and selling pressure
  • Alliances form — Players coordinate to pump specific countries

The goal during this phase is to position yourself advantageously before voting begins. You want to either:

  • Become the top holder of any alive country — that's how you earn a seat at the voting roundtable
  • Hold tokens in countries unlikely to be nuked (safe havens)
  • Accumulate tokens in countries you think will receive buyback ETH after the nuke

What Determines Market Cap?

Market cap = token price x total supply (1 billion per country). Since supply is fixed, market cap is purely a function of the Uniswap pool price. More buying pressure = higher price = higher market cap.

The country with the highest market cap when the countdown expires becomes the immune country for the round — it gets a seat at the roundtable and cannot be targeted by the nuke.

Phase 2: Voting (5 Minutes, Secret Roundtable)

When the countdown hits zero, anyone can call triggerVote(). This:

  1. Snapshots the highest market cap country as the immune country
  2. Activates the Nuke Window — a 20% sell fee on ALL country tokens
  3. Starts a new GovernanceVotingV2 round; the keeper computes a ranking of every alive country by market cap, looks up each country's top holder, and publishes the Merkle root of Poseidon(countryCode, rank, topHolder) leaves on-chain
  4. Opens a 5-minute voting period

Who Can Vote?

Only the top holder of each alive country. One seat per alive country — the roundtable starts full (every country in the game gets a seat) and shrinks by one every time a country is nuked.

Each seat's weight is its market-cap rank:

RankWeight (with aliveCount alive countries)
#1 (immune)aliveCount — most powerful seat, can't be nuked
#2aliveCount - 1
......
Last1

Formula: weight = aliveCount - rank + 1.

How the Vote Stays Secret

Each leader submits a zero-knowledge proof (built from a Noir circuit in the browser, ~3–5s) that they are a legitimate top holder of some alive country, without revealing which one. Alongside the proof, the actual target is NaCl-box-encrypted to the keeper's on-chain public key. The contract stores a keccak binding commitment so the keeper cannot later forge or substitute votes.

Until the voting window ends, no one — not even the keeper — knows who voted for whom. No bandwagoning, no last-second tactical switching, no public kingmaker coercion.

Reveal

When the window closes, the keeper decrypts every ciphertext off-chain and submits a single revealAndFinalize transaction. The contract:

  1. Verifies each reveal's keccak commitment matches what was posted at vote time
  2. Rejects any reveal targeting the immune country
  3. Tallies weighted votes and emits the final target

What If Nobody Votes?

If no votes are cast during the window, a random alive country (excluding the immune #1) is selected for elimination during the VRF-driven nuke phase.

The Nuke Window

During voting, a 20% sell fee applies to ALL token sales across every country. This mechanic:

  • Prevents panic selling during the vote
  • Makes it expensive to dump tokens of the likely-nuked country
  • Incentivizes holding through the vote
  • Creates a temporary liquidity lock effect

Phase 3: Execution (The Nuke)

After the 5-minute voting period ends, anyone can call executeNuke(). Execution happens in two on-chain steps using Chainlink VRF for verifiable randomness:

Step 1: Request Randomness (Phase 1)

When executeNuke() is called:

  • The governance vote is finalized — the nuke target is determined (or marked as needing random selection if nobody voted)
  • A randomness request is sent to Chainlink VRF V2.5
  • The game enters a brief "VRF pending" state (typically 1-2 blocks)

Step 2: VRF Callback (Phase 2)

When the Chainlink VRF node delivers the verified random number:

  • If no votes were cast, the random number selects the nuke target
  • ALL 7 liquidity positions in the target country's Uniswap pool are removed
  • The recovered ETH is redistributed via buyback swaps

Step 3: Redistribute ETH

The recovered ETH is distributed via three buyback swaps, with targets chosen using the VRF random seed:

RecipientShareMechanism
Immune (#1) Country40%ETH swapped into the immune country's tokens
Random Country #140%ETH swapped into a random surviving country (not the winner)
Random Country #210%ETH swapped into another random surviving country (distinct from winner and #1)
Treasury10%Sent directly to protocol treasury

Each buyback swap immediately increases the receiving country's token price. This is one of the primary ways players profit. All random selections use Chainlink VRF to ensure no one — not validators, not the protocol — can predict or manipulate which countries receive buyback ETH.

Step 4: Anti-Snipe Protection

After each buyback swap, a 5-minute anti-snipe window activates on the receiving pool. During this window, selling fees start at 90% and decay linearly back to normal over 5 minutes.

This prevents bots and frontrunners from immediately dumping after the buyback pump, ensuring organic price discovery.

Step 5: Mark and Reset

The nuked country is permanently marked as dead. Its token still exists as an ERC20 but can no longer be traded through the router. A new 4-hour countdown begins.

The Endgame

As countries are eliminated, the dynamics change dramatically:

  • Fewer countries = larger share of buyback ETH per survivor
  • Concentrated liquidity = more ETH flowing into fewer pools
  • Higher stakes = each vote becomes more consequential
  • Alliance shifts = previously allied countries may turn on each other

The game continues until only one country remains.

Game Over & The Prize Pot

When the final nuke reduces the alive countries to 1, the game ends automatically:

  1. gameOver is set to true — no more countdowns or votes
  2. The surviving country is recorded as the winningCountry
  3. The Prize Pot is finalized — its ETH balance and the winning token's supply are snapshotted

The winning country's token holders can then forfeit their tokens to claim proportional ETH from the prize pot. This is the RFV (Risk-Free Value) — a guaranteed payout for every token held.

Throughout the game, 30% of all trading fees across every country flow into the Prize Pot. The more trading volume the game generates, the larger the pot grows. See Prize Pot & RFV for full details on how claiming works.

Cycle Timing Summary

PhaseDurationKey Action
Countdown4 hoursTrade freely, build market cap
Voting5 minutesTop holders cast secret, ZK-proved votes
Reveal1 txKeeper decrypts and submits revealAndFinalize
Execution (Phase 1)InstantRequest Chainlink VRF randomness
VRF Pending~1-2 blocksWaiting for verified random number
Execution (Phase 2)InstantNuke target, redistribute ETH
Anti-Snipe5 minutesHigh sell fees decay on buyback recipients
New Countdown4 hoursCycle repeats