Live on Solana mainnet
A chessboard where every move is a signed transaction.
Click a piece, click a square. The move is sent as a real on-chain command, interpreted by a backend built
with @wirebus/server, and applied for everyone live. No wallet connection. Every move is signed,
ordered and permanent.
Free to play on real mainnet. Our Wirebus wallet runs in the background and pays every on-chain fee for you, so you can test it without any SOL, without a wallet, without connecting anything.
Every move is a real Solana mainnet transaction. The fees are sponsored by the Wirebus demo wallet, so playing is free for you. In a real app, each player signs from their own wallet and pays their own tiny fee.
Moves…
How it works
- You move. Pick a piece and a target square.
- Sign + send. A
wirebuscall builds and signs a transaction with the move command. No wallet connect. - On-chain. The transaction lands on Solana mainnet: signed, ordered, permanent.
- Listen.
@wirebus/serverstreams it (websocket + backfill) and decodes it. - Apply. The interpreter validates it and runs the
movehandler, updating the board. - Live. Everyone sees the move appear, with an explorer link to the transaction.
Documentation
Build this yourself
1. Install
npm install wirebus @wirebus/server @solana/web3.js
2. The move command (envelope v1)
{ "v": 1, "cmd": "move", "args": { "from": "e2", "to": "e4" } }
3. Send a move (client)
import { sendCommand } from 'wirebus';
await sendCommand(connection, signer, {
controlAddress: INBOX,
cmd: 'move',
args: { from: 'e2', to: 'e4' },
});
4. The chess backend (server)
import { serve } from '@wirebus/server';
serve(connection, {
openMode: true,
apps: [{
namespace: 'chess',
controlAddress: INBOX,
commands: {
move: {
schema: { parse: (a) => { /* validate squares */ return a; } },
handler: (ctx) => applyMove(ctx.args.from, ctx.args.to),
},
reset: { handler: () => resetBoard() },
},
}],
});
This showcase
- Chess inbox (control address):
… - Signer (mainnet):
… - Cluster:
mainnet-beta
Run it locally
cd wirebus-showcase npm install SHOWCASE_SIGNER_SECRET=<funded mainnet key> npm start # http://localhost:8095
Notes (honest)
- Real mainnet, so each move costs a tiny network fee. The signer must hold a little SOL.
- This is a shared board, anyone can move any piece. Full chess legality lives in the handler, easy to add.
- Board state is in memory and resets on restart.