Live on Solana mainnet

A shared canvas where every pixel is a signed transaction.

Pick a color, click a pixel. It is placed by a real on-chain command, interpreted by a backend built with @wirebus/server, and shown to everyone live. No wallet connection. Every pixel signed, ordered and permanent.

Free to paint on real mainnet. Our Wirebus wallet pays every on-chain fee in the background, so you can test it without any SOL, without a wallet, without connecting anything.

Every pixel is a real Solana mainnet transaction, with fees sponsored by the Wirebus demo wallet. In a real app, each user signs from their own wallet and pays their own tiny fee.

Recent pixels
    How it works
    1. You paint. Pick a color and click a pixel.
    2. Sign + send. A wirebus call signs a transaction with the paint command. No wallet connect.
    3. On-chain. The transaction lands on Solana mainnet: signed, ordered, permanent.
    4. Listen. @wirebus/server streams it and decodes it.
    5. Apply. The interpreter validates it and runs the paint handler.
    6. Live. Everyone sees the pixel appear, each with an explorer link.
    Documentation

    Build this yourself

    1. Install

    npm install wirebus @wirebus/server @solana/web3.js

    2. The paint command (envelope v1)

    { "v": 1, "cmd": "paint", "args": { "x": 10, "y": 4, "color": 8 } }

    3. Paint from the SDK (client)

    import { sendCommand } from 'wirebus';
    
    await sendCommand(connection, signer, {
      controlAddress: INBOX,
      cmd: 'paint',
      args: { x: 10, y: 4, color: 8 },
    });

    4. The canvas backend (server)

    import { serve } from '@wirebus/server';
    
    serve(connection, {
      openMode: true,
      apps: [{
        namespace: 'canvas',
        controlAddress: INBOX,
        commands: {
          paint: {
            schema: { parse: (a) => { /* validate x,y,color */ return a; } },
            handler: (ctx) => setPixel(ctx.args.x, ctx.args.y, ctx.args.color),
          },
        },
      }],
    });

    This demo

    Notes (honest)