pawnshake (Dart)

Dart implementation of the Pawnshake protocol (../spec/PAWNSHAKE.md), byte-for-byte pinned to the Go and TypeScript implementations by the vectors in ../vectors. Pure Dart (works in Flutter apps), depends only on package:crypto.

Ed25519 is implemented here (lib/src/ed25519.dart, on BigInt): Dart has no package that verifies under ZIP-215, the rules every Pawnshake implementation must share. It reproduces RFC 8032 signatures exactly and accepts all 196 ZIP-215 cases. A verification takes about 2 ms on a desktop VM: plenty for a game, not meant for bulk work.

dart pub get
dart test
tool/coverage.sh     # fails below 100 % lines, branches, functions

In a Flutter app, depend on it by path or git:

dependencies:
  pawnshake:
    path: ../../packages/pawnshake/dart

Move codes are engine-agnostic: pass the legal moves of the position in UCI from your own engine (encodeMove(legal, uci) returns (code, legal.length)).

Libraries

pawnshake
Pawnshake protocol: signed peer-to-peer chess games (spec/PAWNSHAKE.md).