Whitepaper · v1.0

A fair mining game with a SUI-backed floor.

GTStar turns play into mining. Every participant earns GTS, winners split the pot proportionally, and every token is backed by real SUI held in an on-chain reserve.

1,000,000Max supply
0Premine
ImmutableSupply
Jan 2030Emission ends

Abstract

GTStar is a 5×5 board game that runs entirely in smart contracts on Sui. In each round players deploy SUI onto tiles. When the round ends, one winning tile is drawn using Sui's native randomness (sui::random). Everyone on the winning tile gets their stake back plus a proportional share of the losing pot.

At the same time, a fixed amount of GTS is emitted each round and split among all participants by their share of deposits, winners and losers alike. The game is therefore also a fair launch: no premine, no team allocation, no presale. Every GTS in existence was mined through play.

Part of every fee flows into a reserve that backs the token. Any holder can burn GTS at any time for a proportional share of that reserve, which gives GTS an on-chain redemption value that does not depend on an external exchange.

Motivation

On-chain mining games such as ORE proved there is real demand for mechanisms where play produces a token. They share three structural problems:

  • Single winners. Most participants leave most rounds with nothing, which pushes small players away.
  • Perpetual emission. A fixed issuance rate means years of dilution for holders.
  • Exchange-dependent value. Without external liquidity the token has no anchor.

GTStar addresses all three: proportional payouts on the winning tile, GTS for every participant, emission that halves toward a hard cap, and a reserve that provides built-in redemption value.

Game mechanics

DeploySUI onto any of the 25 tiles
Close60 seconds, deposits lock for the final 5
DrawOne winning tile via sui::random
ClaimSUI for winners, GTS for everyone

Round lifecycle

  • A round starts with its first deposit and lasts 60 seconds. No deposits means no round and no emission.
  • Deposits close 5 seconds before the end, which prevents last-second entries based on mempool information.
  • The minimum deposit is 0.01 SUI per tile, which prevents dust spam.
  • Once time is up, anyone can call settle. A dedicated keeper does this automatically within seconds, and the app exposes a manual fallback.

Payout

losing_pot = total_deposits - winning_tile_total pot_after_fees = losing_pot * 95% payout = my_stake_on_winner + pot_after_fees * my_stake_on_winner / winning_tile_total

If nobody deployed on the winning tile, the entire pot (after fees) goes to the reserve and benefits every GTS holder.

GTS and emission

Emission is time-based and front-loaded. Every round mints 1 GTS to miners, split across all participants by their share of deposits, plus 0.1 GTS to stakers, streamed over 7 days. Both halve every six months, counted from the first round ever played, and emission stops permanently on January 1, 2030.

miners(t) = 1 GTS >> floor((t - genesis) / 6 months) // 0 after 2030-01-01 stakers(t) = miners(t) * 10% my_gts = miners(t) * my_deposits / round_total_deposits
PeriodMiners / roundStakers / roundMax emittedMax cumulative
Months 0 – 610.1289,278289,278
Months 6 – 120.50.05144,639433,917
Months 12 – 180.250.02572,320506,237
Months 18 – 240.1250.012536,160542,397
Months 24 – 300.06250.0062518,080560,477
Months 30 – 360.031250.0031259,040569,517
Month 36 – Jan 20300.0156250.0015625≤ 4,520≤ 574,037

"Max" assumes a round every minute, around the clock. Rounds only happen when players deposit, so actual emission is lower whenever activity is lower, and GTS that is not mined in its period is never minted later. The code also enforces an absolute hard cap of 1,000,000 GTS on every mint, which the schedule can never reach.

The reserve

4% of every losing pot is added to an on-chain reserve (Treasury.vault). If nobody deployed on the winning tile, the whole pot goes there too. Any holder can burn GTS for a proportional share:

redeem(x GTS) -> SUI = reserve * x / total_supply // x GTS is burned floor_price = reserve / total_supply
  • Redemptions never lower the floor. Reserve and supply shrink in the same proportion, and rounding favours remaining holders.
  • Fees raise the floor. Every round adds SUI to the reserve.
  • Emission dilutes. New GTS enters circulation without matching SUI, so the floor rises when fee inflow outpaces emission, which becomes easier with every halving.
  • No exchange dependency. Redemption value exists on-chain even without a liquidity pool.

The floor is a redemption value backed by assets actually held in the reserve. It is not a price guarantee and it moves with the balance between fee inflow and emission.

Fees

Fees are taken only from each round's losing pot, never from winners' stakes. The rates are fixed in the contract and can never change.

DestinationShare of losing potPurpose
Winners95%Split proportionally across the winning tile
Reserve4%Backs every GTS and raises the redemption floor
Creator1%Paid only to a fixed address set in the contract

Stakers are not paid from fees; they earn newly mined GTS (see below), and they benefit from the reserve like every holder.

Staking

Holders stake GTS to earn yield in GTS, like ORE. There is no lock-up: deposit, withdraw and claim at any time, or claim and re-deposit in one step.

  • Source of yield. Every round mints an extra 10% of its GTS reward to stakers.
  • Streamed. Each round's staker reward streams over 7 days, so yield accrues every second and is split by stake size.
  • No sniping. Staking right before a round settles and leaving right after earns only for the seconds actually staked.
  • Nothing is lost. If nobody is staked, the stream pauses and resumes when the next staker arrives.

Architecture

ModuleResponsibilityObjects
gameBoard, deposits, settlement, claims, creator feeBoard shared, Miner owned
gts_token::gtsToken, hard cap, emission ceiling, reserve, redemption (immutable)Treasury shared
stakingDeposits, withdrawals, streamed GTS yieldStakePool shared, StakePosition owned
  • Non-custodial. The app is a static site with no backend and no keys. Every action is signed in the player's wallet, and all funds live in contract objects.
  • Composed transactions. Creating a miner, claiming the previous round and deploying into the next one happen in a single programmable transaction.
  • Keeper. A keeper calls settle at the end of each round. The function is permissionless, so any player can settle if the keeper is down.
  • Fully on-chain state. Board, reserve, supply and staking are read directly from the chain.

Security

Randomness

The winning tile is drawn from sui::random, a distributed randomness beacon produced by Sui validators. Settlement is a private entry function, so it cannot be wrapped by another contract that aborts when the outcome is unfavourable.

Internal review

FindingSeverityStatus
Staking rewards received while the pool was empty were locked foreverHighFixed
Staking just before settlement and exiting after could capture feesHighFixed, fees stream over 7 days
Token metadata frozen with an icon that could never be updatedMediumFixed
Creator fee transferred every round (gas and object bloat)LowFixed, accrues in contract
Admin could change round timing and minimum depositMediumFixed, admin functions removed
A game upgrade could have minted extra GTSHighFixed, supply and reserve moved to an immutable token contract with an emission ceiling

Testing

  • 15 unit tests cover redemption and the floor price, the supply cap, the emission schedule to 2030, streamed staking rewards, sniping resistance, paused streams, multi-staker splits, withdrawals, two-player solvency, double claims, the freeze window, payment mismatches, minimum deposits and early settlement.
  • End-to-end tests ran every action the app performs against a live network. See Verify on-chain.

Governance and upgrades

GTStar is split into two contracts so the economics are locked while the product can still improve.

ContractContainsUpgradeable
gts_tokenGTS, the 1,000,000 hard cap, the emission ceiling, the SUI reserve and redemptionNo. Immutable at launch
gtstarThe game, fees and stakingYes, for fixes and improvements
  • No extra minting, ever. The token contract only mints through a single minting right held by the game, and never beyond the published ceiling: 1.1 GTS per minute, halving every 6 months, zero from January 1, 2030. Burned GTS is never re-minted. No upgrade to the game can change this.
  • The reserve is untouchable. SUI can only leave the reserve through redemption by GTS holders.
  • No team allocation. There is no premine and no function that could create one.
  • Upgrades. The game contract can be upgraded to fix bugs or add features. Every upgrade is published on-chain and announced in advance.

Risks

  • Game risk. In any round you are likely to lose deposits on tiles that do not win. Only play with amounts you can afford to lose.
  • Smart contract risk. The code has been reviewed and tested, but no code is guaranteed to be free of bugs. The game contract can be patched; the token contract cannot.
  • Token value. Redemption value depends on activity and fee inflow. It is not guaranteed and can decrease.
  • Operational dependency. Automatic settlement relies on a keeper. When it is unavailable any user can settle manually.
  • Regulation. You are responsible for complying with the laws of your jurisdiction.

Roadmap

  1. Launch. Mainnet contracts, live app and settlement keeper.
  2. Stabilise. Monitoring, dedicated keeper infrastructure, official domain.
  3. Liquidity. A GTS/SUI pool on Cetus once demand exists, alongside reserve redemption.
  4. Community. Leaderboards, round history and statistics.

Verify on-chain

Everything in this document can be checked on-chain. This site is currently connected to the following contracts on Sui:

Transaction proofs

Real transactions from the end-to-end test of this release. Each link opens the transaction in the Suiscan explorer.

GTStar Whitepaper v1.0. This document describes the contracts as deployed. The on-chain code is the source of truth.