On the chain

Why any of this is on a blockchain at all

Not because it sounds impressive. Because a chess rating is a claim about the past, and a claim about the past is exactly the kind of thing a chain is good at holding.

The argument

Your rating is somebody else's database row

On every chess site you have ever used, your rating is a number in a table that somebody else can edit. Usually nobody does. But you cannot check, you cannot take it with you, and if the site closes it goes with them.

ITZA Chess moves the referee. In a rated game the contract validates every move from both players, decides the result itself, and writes the rating change. There is no function anywhere that lets a client say "my rating is now this". Not for you, not for us.

The side effect is the nice part: because the record lives with your wallet rather than with an account on a server, it follows you. Sign in on a borrowed laptop and your games and your rating are already there.

Three rules the whole thing rests on

  • Your browser only ever authors your own moves. It never decides an outcome.
  • A game may only affect a rating if the contract refereed every move in it.
  • There is no entry point for setting a rating. It can only be computed by the contract, from a game the contract watched.

A game played entirely in the browser is practice. It is saved, it is labelled, and it counts for nothing - by design.

One move, in detail

What happens between your finger and the board

Packed and signed

Your move is packed into a single sixteen-bit value - from square, to square, and what happened - and signed by your wallet. Small enough that one move can afford to be one transaction.

Checked by the referee

The contract runs the same Rust rules engine your browser runs. If the move is not legal in the stored position it is rejected and the game state is left exactly as it was.

Written and pushed

The game object updates and the block settles, which the cluster does in about a hundred milliseconds. Both players subscribe to the game wallet, so the write wakes them and the nodes push the new position from there.

Settled by the contract

Mate, stalemate, resignation, an accepted draw, threefold repetition or a claimed timeout: the contract decides, computes the rating change and files the game to both players' histories.

Clocks nobody owns

Time is projected from the chain's record of when each move landed, so both players read the same clock. Increment is applied by the contract. A fifteen-second grace after the flag keeps a dropped connection from being an instant loss.

The chain always wins

If your device and the chain ever disagree about the position, the client discards its copy and replays the game from the chain's record. There is no negotiation, and you generally will not notice it happen.

Both sides, every move

Because each move is its own transaction, the game has a move-by-move record with real timings attached - which is the raw material for the fair-play work coming next.

The part that should not be possible

Centralised speed, without the centralised part

A chess server can be fast because one company owns one machine and that machine decides what happened. A blockchain is slow because nobody owns it and everybody has to agree. ITZA settles a block in about a hundred milliseconds, which means you get the second thing at the speed of the first.

About 100ms to settle

Not a block time, not an optimistic confirmation you are asked to trust while the real one catches up. The move is validated, applied, recorded and pushed to your opponent inside that window.

Every move, not just the result

Plenty of games put a scoreboard on a chain. Here the chain IS the referee: each move is a transaction the contract validates against the rules before it is allowed to exist.

Served by the nodes

The app is not a website with a chain bolted on. The pages, the engine and the board come off the same cluster that referees the game. There is no game server in the middle to fall over or quietly decide something.

What that is worth: bullet chess that plays like it is local

One-minute chess is the honest test, because at that speed nothing can hide. Most chains cannot referee a bullet game at all - by the time the move is final the clock has moved on. On ITZA the move lands, settles and reaches your opponent inside the same block, so a rated bullet game against a stranger feels like a local one and is still refereed end to end by a contract.

That is the claim worth checking, and it is the one this whole project rests on: a decentralised system running at the speed people expect from a centralised one.

Time to settlement, published figures, mid-2026. Settlement is when the result is final - not when a block is produced.
NetworkSettlementNotes
ITZAabout 100ms What ITZA Chess runs on today
Suiunder 400ms Owned-object transactions, which skip full consensus
Aptosabout 1sBFT consensus, final at each block
Cosmos chains1 to 6sTendermint, final at each block
Solanaabout 12.8s Alpenglow targets 150ms, but it is still in testing and not on mainnet
Ethereumabout 13minDeepest economic security of any chain
Bitcoinabout 60minSix confirmations

Nothing running today settles faster

These are published figures as of mid-2026, and on settlement ITZA leads every one of them. The nearest competitor is not close: Solana finalises in about 12.8 seconds on mainnet today. Its Alpenglow rewrite targets 150 milliseconds, and even that target does not beat what ITZA already does.

That is the whole point of the section. This is not a chain that will be fast enough one day. It is refereeing bullet chess, move by move, right now.

Ratings

Three ladders, kept honestly apart

Beating a machine is not the same as beating a person, and neither is spotting a tactic, so the three are not mixed into one number. All three are awarded by the contract and none of them can be touched by your browser.

A rated game against a Challenger, with the on-chain referee badge
Mid-game. The header states what it is: rated, with the contract refereeing. Every move here, the computer's replies included, was an ai_move transaction.
The same game finished, showing checkmate on a rated on-chain game
Settled. Checkmate, and the contract writes the result. This game moved a real Bots rating from 1184 to 1190 on chain; the browser was never asked what it thought had happened.
Live

Players

Earned in rated online games against people. This is the ladder that counts, and the only one most players will care about.

Starts at
1200
Adjustment
K-factor 24
Awarded by
The contract, at settlement
Status
Running now
Live

Bots

Earned against the Challengers in Normal mode only. The contract plays the machine's side, so it referees the whole game. Learner and Offline never touch it, and no ladder is ever touched by another.

Starts at
1200
Opponents
820 up to 2590, across nine engine levels
Awarded by
The contract, at settlement
Status
Running now
Live

Puzzles

Earned solving tactics in Normal mode. The contract holds the position and the answer, hands out the one and checks the other, which is what separates this from a tactics score kept on somebody's server.

Starts at
1200
Judged on
The line you play, checked on chain
Awarded by
The contract, at settlement
Status
Running now

How the number is worked out

A standard Elo calculation, done in whole numbers rather than floating point so that every node computing it arrives at exactly the same answer. Both ratings start at 1200 and move by a K-factor of 24, which means two evenly matched players swap twelve points on a decisive game.

The app shows all three ratings everywhere they matter: on the account chip, in the settings profile, on the end-of-game panel, which says which ladder just moved, and on every entry in your history. A rating the app has not loaded yet shows as a dash rather than a made-up 1200.

After a rated game the client watches the chain until the new rating lands, so the winner sees the change without reaching for refresh. The number stored on the chain is the real one; the copy on your device is only a cache of it.

What can and cannot change a rating

Rated online game
Players
Casual online game
Neither
Computer, Normal
Bots
Computer, Learner
Neither
Computer, Offline
Neither
Pass & play
Neither
Puzzles, Normal
Puzzles
Puzzles, Offline
Neither
Analysis
Neither
Anything your browser says
Nothing

Your account

There is no account. There is a wallet.

Sign in the way you already do everywhere else on ITZA: scan the code with your ITZA Vault and confirm the six digits, or use a username and password, or bring a wallet you already have.

A username and password does not create a record on our server - it derives your key. Same name and same key means it is you. Same name with a different key means the password is wrong, and you are told so plainly rather than being signed into somebody else's name. A name nobody holds is registered to you there and then.

Advanced users can generate a raw wallet with a recovery phrase and a key file, or restore one they already keep. And a key that belongs to a different cluster is turned away at the door rather than producing a session that looks fine and quietly does nothing.

  • Scan with ITZA Vault, or use a username and password.
  • Create or restore a raw wallet, with recovery phrase or key file.
  • Play offline with no account at all.
  • Signing out removes every local trace and reloads clean.
A figure in a sealed spacesuit, face hidden behind a gold visor

You are a public key. Your games, your two ratings and your history are attached to a wallet, not to a name and an email address on somebody else's machine. Change device, keep everything.

Roadmap

What is running, what is next, what is further out

Written plainly, including the parts that are not finished. The cluster is live and two-player games already run on it move by move.

Running now
  • Rated two-player games, refereed move by move
  • The Players ladder
  • Lobby, clocks, draw offers and timeout claims
  • Cross-device game history on the chain
  • Wallet sign-in, including ITZA Vault
  • Encrypted in-game chat
  • Rated games against the computer, with the contract playing its side
  • The Bots ladder and the Puzzles ladder
  • Contract-refereed tactics puzzles
  • Quick match, pairing you from a seek pool
  • Bullet, blitz and rapid clocks
  • Ten opponents, thirteen lessons, teaching and learner modes
  • 2D and 3D boards, installable app, offline play
Next
  • Separate ratings for bullet, blitz and rapid, the way every serious platform splits them
  • Daily and correspondence games, one move at a time over weeks
  • Puzzle rush and puzzle battle
  • Spectating a game in progress
  • Chess960 castling polish
Further out
  • Staked games, once iCHESS goes live
  • An attestation ladder for staked play
  • Bonds and slashing for repeat offenders
  • Dispute handling through the People's Court
  • Integrity signals built on per-move timing from the chain

Staking is not enabled and free play does not depend on it. Nothing here is an offer or an invitation to invest; see the disclosure document.

Built as an ITZApp

Hosted the same way it is played

The app is an ITZApp: it is served from the chain, talks to the node over a single WebSocket, and makes no third-party requests at all. No content delivery network, no font service, no analytics, nothing that could disappear or watch you.

There is one deliberate exception to the on-chain rule, and it is in your favour: if the chain library fails to load, the app still starts. Games against the computer, pass & play, the lessons and the analysis board all keep working. Only online play needs the chain.

How it is put together

Contract
One contract, one dispatcher
Transport
WebSocket to the node
Updates
Subscribe to the game wallet, pull on change
Reads
Free - no transaction to look at a game
Rules engine
Shared by the contract and the browser
Third-party calls
None

A rating you can point at.

Play a rated game and watch the result get written by something other than the browser it was played in.