Start here
Core concepts
The vocabulary, the actors, and what happens to one epoch from the moment it opens to the moment its rewards are claimed.
Terms#
| Term | Meaning |
|---|---|
| Gooner | A wallet that has signed in. There are no accounts, emails or usernames. |
| Goon Power (GP) | The accounting weight used to split an epoch's emission. Not a token, not transferable, not redeemable by itself. Stored as integer milli-GP. |
| Grinding | Fighting enemies in Goontown. Time spent landing hits is what the session category credits. |
| Bounty | One of three daily combat goals. Each pays a fixed amount of Goon Power once per epoch. |
| Goon Epoch | The period over which rewards are computed. 86,400 seconds on mainnet. |
| Period | The off-chain index of an epoch-length window: floor(unixTime / epochSeconds). Exists before activation. |
| Era | 210 consecutive epochs. Emission halves at each era boundary. |
| Goon Vault | The token account, owned by a program-derived address, that holds the mining reserve. |
| Goon Streak | Consecutive epochs in which a wallet earned at least the eligibility minimum. |
| Goon Proof | A signed claim from an allowlisted integration that a wallet did something. |
| Root | The Merkle root of every wallet's cumulative allocation, published on-chain once per epoch. |
| Goon Claim | The on-chain withdrawal of a wallet's unclaimed allocation. |
Actors#
| Actor | What it does | What limits it |
|---|---|---|
| Miner | Earns Goon Power, claims GOON. | Per-source caps, a global cap, diminishing returns, cluster rules. |
| API (operator) | Verifies activity, computes scores, settles epochs, builds the tree. | Everything it settles is published; the program bounds the total. |
| Oracle key | Signs the transaction that publishes a root. | Emission cap, monotonic epochs and totals, settlement delay. |
| Guardian key | Cancels a pending root; pauses the program. | Cannot publish or move tokens. |
| Admin key | Binds the mint before activation, rotates roles. | Cannot move tokens or change the schedule after activation. |
| Program | Holds the vault and enforces every rule above. | Its code. See the on-chain reference. |
| Issuer | Signs integration proofs for its own users. | Allowlist, per-proof and per-wallet caps, revocation. |
| Reviewer | Scores community contributions. | Category ceilings, weekly limits, no self-review. |
The life of one epoch#
- Open. The epoch begins at a UTC day boundary. Wallets earn Goon Power from four sources. Scores shown during the epoch are live previews.
- Close. At the boundary the epoch stops accruing. A 10-minute grace window follows so late integration proofs and revocations can land.
- Score. Final Goon Power is computed for every wallet, with exclusions and network-cluster adjustments applied. This is deterministic integer arithmetic.
- Split. The epoch's pool is divided pro rata by Goon Power. Each reward is added to the wallet's lifetime allocation.
- Commit. A Merkle tree is built over every wallet's cumulative allocation. The root, the total and the SHA-256 of the distribution file are published on-chain.
- Wait. The root is pending for the settlement delay. Anyone can inspect the file. The guardian can cancel.
- Settle. After the delay the root becomes the active root. Claims against it open.
- Claim. A wallet presents its cumulative amount and a Merkle proof. The program pays the difference between that amount and what the wallet has already claimed.
Protocol states#
| State | Condition | What miners see |
|---|---|---|
| Pre-launch | No mint is bound to the program. | Provisional Goon Power only. Nothing claimable. |
| Vault filling | A mint is bound; the vault holds less than the reserve or has not been activated. | Provisional Goon Power, plus bonding-curve progress. |
| Mining live | The vault held the reserve and activate has run. | Epochs settle on-chain; allocations become claimable after each delay. |
| Paused | The guardian or admin paused the program. | Goon Power keeps accruing; publishing and claims are halted. |
Cumulative, not per-epoch
Each root covers every allocation ever made, not just the latest epoch. A leaf is (wallet, lifetime amount). This means a wallet can ignore the protocol for a month and then claim once, a new root never invalidates money already owed, and the program only ever needs to remember one root and one number per wallet.