A competitive fighting game with player-versus-player wagering and publicly verifiable settlement on Solana
Meme Fighters is a browser-based multiplayer fighting game in which participants may wager SPL tokens on the outcome of a match. Outcomes are determined solely by gameplay. The platform contains no chance-based mechanics, no randomised rewards, and no wagering on events external to the game.
Between two and seven participants stake an equal amount into a match escrow. Following the match, the pot is transferred to the winner less a one per cent platform fee. Tournaments operate in parallel, funded from a project treasury and awarded to the champion by on-chain transfer. Completed tournaments are published in full, including participant addresses, results, and the settlement transaction signature, enabling independent verification that a prize was paid.
The application runs entirely in a web browser. No installation is required, and participation without tokens is unrestricted; a wallet is necessary only in order to wager.
This document describes the system as implemented at the date of publication. It is technical and operational in nature and does not constitute an offer of securities, investment advice, or a solicitation of any kind.
| Term | Definition |
|---|---|
| Match | A single contest between two or more participants, resolved by gameplay. |
| Room | A lobby in which participants assemble prior to a match. A room specifies its participant limit, round count, and whether a stake applies. |
| Stake | The token amount committed by each participant in a wagered match. |
| Pot | The sum of all stakes in a match, awarded in full to the winner less the platform fee. |
| Escrow | The wallet holding participant stakes for the duration of a match. |
| Treasury | The wallet from which tournament prizes are funded. |
| Rated match | A match affecting competitive ranking. Wagered matches and tournaments are rated; casual matches are not. |
| Void | The state of a match whose outcome could not be established, resulting in the return of all stakes. |
Informal wagering between competitors is long established in competitive gaming and is presently conducted without infrastructure. Funds are transferred through personal accounts, disputes are resolved by negotiation between the parties, and the participant holding the pot is necessarily the participant the other must trust.
Blockchain-based gaming has to date addressed this poorly. A substantial proportion of projects position the token as the primary product and the game as a mechanism for distributing it. Where the underlying game does not sustain independent engagement, activity declines in proportion to token performance.
Meme Fighters adopts the inverse position. The game is designed to be played without any token involvement, and the blockchain is applied to a single well-defined function: holding participant stakes and settling them publicly, with a transaction record available for independent verification.
The application is a two-dimensional fighting game with directional movement, jumping, attacking, defending, and combination inputs. The control scheme is straightforward to learn while retaining substantial depth, producing a pronounced and readily apparent skill differential between experienced and inexperienced participants — a property material to the integrity of wagered play.
| Type | Participants | Stake | Rated |
|---|---|---|---|
| Casual | 2–7 | None | No |
| Wagered | 2–7 | Equal stake per participant; winner takes the pot | Yes |
| Tournament | 2–16 | None; prize funded by the treasury | Yes |
Participants select between casual and wagered play when creating a room. Both accommodate between two and seven participants; wagered play is not restricted to one-versus-one. Tournaments constitute a third category and are created by the operator rather than by participants.
Casual matches are recorded in match history but do not affect ranking. This separation prevents ladder position being accumulated through arranged matches while retaining a complete record of play.
Movement W A S D Jump J Attack K Defend L
Two participants may share a single keyboard, with the second assigned to the arrow keys.
┌─────────────┐ ┌───────────────────────┐ ┌──────────┐
│ Browser │◄───────►│ Game Server │◄───────►│ Solana │
│ │ wss │ │ RPC │ │
│ game client │ │ matchmaking / relay │ │ SPL │
│ wallet │ │ verification / payout │ │ transfers│
└─────────────┘ └───────────┬───────────┘ └──────────┘
│
┌─────▼─────┐
│ Database │ participants, matches,
│ │ stakes, settlements
└───────────┘
Match simulation is performed by the participating clients. The server does not simulate gameplay; its responsibilities are matchmaking, relaying inputs between clients, recording connection state for integrity purposes, verifying deposits against the blockchain, and executing settlement.
The platform employs standard SPL token transfers and does not deploy a custom on-chain program. The token conforms to the Token-2022 standard; both client and server determine the owning token program at runtime rather than presuming it, as classic SPL and Token-2022 derive distinct account addresses for an identical wallet and mint.
Participants are requested to sign two categories of item, and no others:
The platform does not request token approvals or delegated authority, does not present transactions it did not itself construct, and does not request transfers of SOL or of any asset other than the game token.
Fighting games are materially sensitive to input latency. A naïve lockstep implementation advances a frame only upon receipt of the corresponding frame from the opposing client, incurring a full network round trip per frame. Locally this is imperceptible; across the public internet it renders play unviable.
The platform applies participant input on a fixed short delay and advances the local simulation ahead of confirmation. Both clients apply identical input on identical frames, preserving simulation equivalence, while neither is required to wait upon the other. The result is consistent latency in place of intermittent stalling.
This technique is standard in networked fighting games. It exchanges a small constant input delay for the elimination of variable interruption.
Clients periodically compare simulation state by frame index. A mismatch indicates divergence between the two simulations, and the match is halted rather than permitted to produce a result that neither participant would reasonably accept. Where this occurs in a wagered match, stakes are returned.
Rollback techniques — predicting remote input and re-simulating upon correction — yield superior responsiveness and represent the intended long-term direction. Implementation requires complete save and restore of simulation state and constitutes a substantial undertaking. Input delay buffering is the appropriate measure at the platform's present stage.
Rated matches award points on an Elo-derived curve. Defeating a higher-ranked opponent yields a greater award; defeat by a lower-ranked opponent incurs a greater deduction. Point totals are floored at zero.
| Relative standing | Winner | Loser |
|---|---|---|
| Equivalent tier | +25 | −15 |
| Opponent of higher tier | +35 | −25 |
| Opponent of lower tier | +15 | −10 |
| Tier | Points required | Approximate wins |
|---|---|---|
| Bronze | 0 | — |
| Silver | 100 | 4 |
| Gold | 250 | 10 |
| Platinum | 500 | 20 |
| Diamond | 1,000 | 40 |
Only rated matches affect standing. Casual matches do not award or deduct points under any circumstance, on any code path by which a match may conclude.
Stakes are specified in SOL and converted to a token amount at the point of room creation. The conversion rate is fixed at creation rather than at deposit, ensuring that all participants stake an identical token amount irrespective of intervening market movement.
The pot is the stake multiplied by the number of participants. In a seven-participant room at 0.05 SOL each, the winner receives 0.35 SOL less the platform fee. The winner receives the entire pot; there are no placement-based distributions.
Once all deposits are complete, stakes are committed. The consequence of a participant departing depends upon the size of the match.
Departure constitutes forfeiture. Following expiry of the reconnection window described in section 10, forfeiture is recorded and the remaining participant is awarded the full pot less the platform fee, on the same basis as a victory achieved through play. The departing participant forfeits their stake.
This treatment is deliberate. A wagered match from which a participant could withdraw without consequence would afford no assurance to the opposing party.
The match proceeds. The departure of one participant neither concludes the match nor confers victory upon another; remaining participants continue and the outcome is determined in the ordinary manner. The departing participant forfeits their opportunity to win, and their stake remains in the pot.
No award is made. Stakes are returned, either upon resolution of the match or through the reconciliation process described in section 9.
Payment is made only where the platform can establish that a participant won. Departure from a two-participant match establishes a winner, namely the participant remaining. Departure from a larger match establishes only that the participant is no longer competing. Where an outcome cannot be established, stakes are returned.
No fixed maximum applies. A stake is bounded by the participant's actual holdings, verified against the blockchain at room creation and again as each participant joins. A fixed ceiling would be unsound in either denomination: expressed in tokens it varies in value with the market, and expressed in SOL it would in time obstruct legitimate matches. A minimal floor applies in order to exclude negligible stakes.
For the duration of a match, stakes are held in an escrow wallet controlled by the operator. This constitutes a custodial arrangement and is not an on-chain escrow program. Participants rely upon the operator and the operator's infrastructure for the period during which a stake is held. This is stated explicitly: a platform representing itself as trustless while retaining control of a private key would be describing itself inaccurately.
A stake is held in escrow for the duration of one match, ordinarily two to three minutes, after which it is paid or returned. Escrow is not intended to accumulate balances, and its holdings between matches are maintained near zero so that a residual balance constitutes a visible indication requiring attention.
| Circumstance | Treatment |
|---|---|
| A participant does not deposit | Depositing participants are returned their stake in full upon expiry of the window. No fee is applied. |
| A deposit settles but the client fails to report it | The blockchain is queried for the deposit before any conclusion is drawn, and the stake is returned. |
| A participant departs during the deposit window | The match is resolved immediately rather than requiring remaining participants to await expiry. |
| The server restarts during a match | Unresolved stakes are reconciled against the blockchain on startup and returned. |
| Participants report conflicting outcomes | Resolved from connection records where possible; otherwise the match is voided and all stakes returned. |
| No outcome is reported | Deadlines resolve the match from server-observed data, or void it and return stakes. |
| All participants disconnect | No winner is recorded and stakes are returned. |
The principle common to each case is that stakes are returned where a winner cannot be established. A stake is not retained on account of an inconclusive match, and no payment is made upon an outcome that could not be verified.
Wagered matches are declined where escrow holds insufficient balance to meet its obligations, comprising transaction fees and account rent necessary to pay a winner or issue a return. Declining a match is preferred to accepting a stake the platform might be unable to return.
Clients report the outcome independently. Where reports agree, the match settles. Where they conflict, the server determines the outcome from directly observed data — connection records, disconnection timing, and participant presence — rather than relying upon either report.
Where the server cannot establish a winner from its own records, a wagered match is voided and stakes returned. No payment is made upon a contested outcome. This constitutes the platform's principal integrity rule: an incorrect payment is materially worse than no payment, as it cannot be reversed.
Where multiple participants report, a single assertion cannot determine the pot. A wagered outcome is settled only where a majority of participants in the match agree upon the winner. Absent such agreement the match is voided and all stakes returned, including where the deadline expires with no reports received.
Departure from a match in progress constitutes forfeiture. As a dropped connection and a deliberate departure are indistinguishable at the moment of occurrence, forfeiture is not recorded immediately: a participant is afforded twenty-five seconds in which to reconnect. A participant experiencing a transient connection failure retains their stake; a participant who has withdrawn does not return, and forfeits.
A participant declining to report cannot hold a match open indefinitely. Once one report is received, remaining participants are subject to a bounded window; a match with no reports is subject to a longer maximum duration. Both resolve conservatively, recording a winner only where the available evidence supports one.
The operator may remove a participant obstructing a room by declining to indicate readiness. A removed participant cannot rejoin that room. Suspensions are enforced at authentication and persist through account maintenance operations.
Tournaments are single-elimination brackets created by the operator, with prizes funded from the project treasury rather than from participant stakes. Entry is free of charge.
Each completed tournament is published in full, comprising participant addresses, damage dealt, win-loss records, and the settlement transaction. The record is available to any party, not solely to the operator.
A single fee of one per cent applies to wagered match settlements and to tournament prizes. No deposit, withdrawal, listing, or subscription charges apply.
Wagered match — two participants at 25 each Pot 50 Fee (1%) 0.50 Awarded to winner 49.50 Tournament — prize of 1,000 Fee (1%) 10 Awarded to champion 990
| Wallet | Holds | Disburses |
|---|---|---|
| Escrow | Participant stakes, for the duration of a match | Settlements and returns |
| Treasury | Project funds | Tournament prizes |
Fees arising from wagered matches accumulate in escrow and are periodically transferred to the treasury. Such transfers are bounded by escrow's holdings in excess of its outstanding obligations, and accordingly cannot draw upon a stake belonging to an unsettled match.
Fee revenue funds infrastructure, continued development, and tournament prize pools.
The token functions as the unit in which participants stake and receive winnings. It confers no governance rights, no entitlement to revenue, and no yield. Its role is deliberately confined.
| Property | Value |
|---|---|
| Network | Solana |
| Standard | SPL Token-2022 |
| Transfer fee extension | Not present — transfers settle at full value |
| Transfer hook | Not present |
| Mint authority | Revoked — supply is fixed |
| Freeze authority | Revoked — accounts cannot be frozen |
The absence of a transfer fee extension and transfer hook is material to a wagering system: either would cause a recipient to receive less than the amount sent, invalidating exact-amount deposit verification. A revoked freeze authority ensures that no party, including the operator, is able to freeze a participant's tokens.
Holding the token is not a condition of participation. Free play is unrestricted and is not degraded in any respect.
Each settlement constitutes a Solana transaction. Rather than requiring participants to accept a reported result, the platform publishes the transaction signature.
The intent is that a participant disputing an outcome need not rely upon the operator's account of it.
Participants staking tokens should consider the following.
Participants should not stake amounts they are unwilling to lose. Nothing in this document constitutes financial advice or an offer of any security.