Portrait of Evan

Gambit

Celo MiniPay chess — backend & on-chain payouts

2026Backend & smart contractsTypeScriptSolidityCeloMiniPay
25 / 61
commits in a three-person team
3
person team
Gambit chess interface on Celo MiniPay

Gambit is a chess product built for Celo MiniPay, where matches are settled with on-chain payouts. I worked on the backend and the payout contracts in a three-person team, contributing 25 of the project’s 61 commits.

The problem

MiniPay users expect a mobile-first experience with near-instant settlement. A chess match has a long-lived lifecycle — pairing, moves, resignations, timeouts — but the payout should only happen once the result is final. The backend had to be the source of truth for game state while keeping on-chain writes small and predictable.

What I built

  • Match lifecycle services that own game creation, move validation, and result finalisation.
  • Payout flows that translate a finished game into a single on-chain transaction, with idempotency guards so a retry cannot double-pay a player.
  • Contract-side helpers for recording results and releasing rewards to the winner.

What I learned

Keeping the chain as a settlement layer rather than a game server made the system easier to reason about. The hard part was not the Solidity; it was designing the backend state machine so that every path — resignation, timeout, abandonment — ended in exactly one payout.