Chess dialect
The shared communication contract: roles, message fields, causal obligations and a finite move bound. Every signed proposal names this exact dialect. Each peer also uses chess.js to check the proposed board transition.
Chess
Chess is the human-readable name. Signed messages identify the exact contract version by its canonical hash.
Canonical protocol identity
CBCL derives this name from the canonical dialect definition. Formatting changes preserve the name; changing the contract changes its identity.
Loading…
The protocol repeats White’s move and Black’s move 512 times: up to 1,024 plies, or 512 full moves. Causal ancestry identifies each turn; delivery order does not.
The alignment boundary
This demo makes a narrow alignment question concrete: does a proposed action conform to the shared contract before the application acts on it? Players can use different strategies and the engine can propose moves; every peer checks the public evidence under the same pinned rules.
The contract is inspectable in the Chess dialect panel, and each proposal is inspectable as a raw signed message. This game uses one fixed dialect. Runtime negotiation and adoption of new contracts are outside this demo.
The Rust CBCL verifier runs as WebAssembly. Ed25519 signatures bind messages to this game, its rules and players. Each independent replica runs chess.js to validate the exact predecessor board and move. Stockfish only proposes Black's move using Black’s received position; the host signs it and each recipient checks it through the same path.
This is a local demo: both player keys live in this browser's memory. There are no clocks, remote matchmaking, encrypted delivery or durable key storage. The protocol allows 1,024 plies and automatically ends on chess.js draw conditions.
Boards are provisional. When a client receives two conflicting legal moves signed by the same player from one position, it exposes the fork and freezes at their common predecessor. Detection requires both messages to arrive. Signatures identify the signing key; deciding a remedy requires an additional agreement.
These checks establish conformance to the selected rules. Choosing good rules, ensuring fair outcomes, delivering withheld messages and enforcing actions outside this application require further mechanisms.
Engine: Stockfish.js 19.0.1, lite single-threaded. GPLv3 license · Corresponding source and build instructions.