Skip to main content

veGAME

veGAME (vote-escrowed GAME) is the non-transferable governance and revenue-share token issued when $GAME holders lock their tokens in the VeGAME.sol contract.

Why veGAME?

The vote-escrow model aligns voting power with long-term commitment:

  • Short-term holders have minimal voting influence
  • Long-term committed holders earn more governance power and more fee revenue
  • Flash loan attacks are impossible — votes require tokens locked before the proposal snapshot

Locking Mechanics

To receive veGAME, call VeGAME.lock(gameAmount, durationSeconds) with a valid lock duration:

Lock DurationSecondsveGAME MultiplierExample: 10,000 GAME
3 months7,776,0000.25×2,500 veGAME
6 months15,552,0000.50×5,000 veGAME
1 year31,536,0001.00×10,000 veGAME
2 years63,072,0002.00×20,000 veGAME
4 years126,144,0004.00×40,000 veGAME
Exact Durations Only

The smart contract accepts only these five durations. Any other value reverts with InvalidLockDuration. There are no intermediate options.

Linear Decay

veGAME balance is not static — it decays linearly back to zero as the lock approaches expiry:

veBalance(t) = gameAmountLocked × multiplierBps × (lockEnd − t) / (lockDuration × 10,000)

Where:

  • t = current timestamp
  • lockEnd = timestamp when lock expires
  • lockDuration = lockEnd − lockStart
  • multiplierBps = 2500, 5000, 10000, 20000, or 40000

Key behaviour:

  • At lock start: full veGAME balance (maximum voting power)
  • At halfway point: exactly half the original balance remains
  • At lock expiry: exactly zero — $GAME becomes withdrawable

Managing Your Lock

Extending a Lock

Call extendLock(newDurationSeconds) to reset the lock to a new (longer) duration from the current time. The new duration must result in a later lockEnd than the current one. Your veGAME balance immediately recalculates at the new multiplier.

Adding to a Lock

Call addToLock(additionalGameAmount) to add more $GAME to an active (non-expired) lock at the same multiplier.

Withdrawing

After lock expiry, call withdraw() to reclaim your full $GAME amount. veGAME balance is exactly zero at expiry, so no voting power is lost by waiting.

Fee Revenue Distribution

veGAME holders receive a share of weekly protocol fee revenue as $GAME (Shape A pipeline):

  1. FeeCollector accumulates mint fees (USDC) and streaming/exit fees ($GNDX on the contract).
  2. Contract $GNDX is swapped to USDC; then a treasury USDC cut is sent out (treasurySplitBps).
  3. The post-treasury USDC remainder is swapped once to $GAME (with a minGameOut slippage floor).
  4. That $GAME is split between VeGAME (staker leg) and burn (buyback leg); VeGAME credits lockers pro-rata using the same accumulator model as before (weight = initial ve at lock, not live decaying balance).

Your share of each staker-leg deposit:

yourReward ∝ yourInitialVeWeight / totalInitialVeWeights × gameToStakers

Longer locks earn more — both because of the higher initial multiplier and because decay is slower for longer locks.

Delegation

$GAME holders who prefer not to actively vote can delegate their veGAME voting power to a trusted community member:

  • Call delegate(delegateeAddress) to delegate
  • Delegation is revocable at any time — just call delegate(anotherAddress) or delegate(yourOwnAddress)
  • Delegation does not transfer tokens — you retain ownership and fee revenue
  • The governance portal highlights recognized delegates with their voting histories

Non-Transferability

veGAME is non-transferable. It cannot be sold, gifted, or used as collateral. It represents a commitment to the protocol, not a tradeable asset.


See also: Locking $GAME · Governance · veGAME Mechanics