https://github.com/prof-faustus/bsv-poker
Dealerless, non-custodial multiplayer poker on Bitcoin SV (post-Genesis, regtest). Web + Windows desktop; real BSV node + bonded sub-sat channel; built from spec.
https://github.com/prof-faustus/bsv-poker
Last synced: about 2 months ago
JSON representation
Dealerless, non-custodial multiplayer poker on Bitcoin SV (post-Genesis, regtest). Web + Windows desktop; real BSV node + bonded sub-sat channel; built from spec.
- Host: GitHub
- URL: https://github.com/prof-faustus/bsv-poker
- Owner: prof-faustus
- Created: 2026-06-02T08:03:02.000Z (about 2 months ago)
- Default Branch: master
- Last Pushed: 2026-06-02T10:00:43.000Z (about 2 months ago)
- Last Synced: 2026-06-02T10:08:11.447Z (about 2 months ago)
- Language: TypeScript
- Size: 440 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# bsv-poker
[](https://github.com/prof-faustus/bsv-poker/actions/workflows/ci.yml)
A dealerless, non-custodial multiplayer **poker** platform on **Bitcoin SV** (post-Genesis,
regtest by default). Built to the specifications in [`/spec`](./spec):
- `spec/bsv-poker-spec.md` — protocol / crypto / transaction core (the authoritative spec).
- `spec/bsv-poker-app-architecture.md` — the application layer (desktop + web, multi-game).
- `spec/bsv-poker-spec-redteam-01.md` — Red-Team Review 01 (applied).
- `spec/BUILD-KICKOFF.md` — the build instruction this repository executes.
## Non-negotiable rules (enforced, not aspirational)
1. **BSV-only, post-Genesis.** No BTC. `OP_CHECKLOCKTIMEVERIFY`/`OP_CHECKSEQUENCEVERIFY`
are no-ops; all timing is at the **transaction level** (`nLockTime` + `nSequence`).
2. **`OP_RETURN` is banned everywhere.** Every commitment is pushdata in a live script
(` OP_DROP`). `pnpm lint:opreturn` fails the build if opcode `0x6a` appears in any
locking/unlocking script. (core P11 / §6.5; HANDOVER §3.)
3. **Zero fabrication.** Every vector/byte-size is generated by running code; `pnpm reproduce`
regenerates them all and exits non-zero on any mismatch.
4. **Real-interpreter tests.** Script spends run through the real BSV Script interpreter with
Genesis rules; negative tests fail *inside* the interpreter.
5. **Traceability is complete.** Every `REQ-*` maps to code and a passing test
(`pnpm trace`).
6. **Engineering bar:** NASA NPR 7150.2 assurance + documented Power-of-Ten adaptation +
Microsoft SDL.
## Download & run
### Windows desktop (download the installer)
Get the latest installer from **[Releases](https://github.com/prof-faustus/bsv-poker/releases/latest)**:
- **`bsv-poker_0.1.0_x64-setup.exe`** (NSIS) — double-click, install, launch **bsv-poker** from the
Start menu. (`…_x64_en-US.msi` is the MSI alternative.)
- Needs the Microsoft **WebView2** runtime (already on Windows 11). The app opens with a
**REGTEST — play money** banner and plays heads-up NL Hold'em vs a bot. Unsigned for now, so
SmartScreen may say "unknown publisher" → **More info → Run anyway**.
### Web (container)
The web client is published to GHCR by [`publish-web.yml`](.github/workflows/publish-web.yml):
```
docker run --rm -p 8080:80 ghcr.io/prof-faustus/bsv-poker-web:latest
# open http://localhost:8080
```
> First time only: GHCR makes new packages **private** by default. To allow anonymous `docker pull`,
> open **github.com/users/prof-faustus/packages/container/bsv-poker-web/settings → Change visibility
> → Public** (one click). Or build/run it yourself:
> ```
> docker build -f apps/client-web/Dockerfile -t bsv-poker-web . && docker run --rm -p 8080:80 bsv-poker-web
> ```
## Toolchain
- Node ≥ 24 (TypeScript runs directly via native type-stripping; `node --test` for tests).
- pnpm 9 (workspace). Go ≥ 1.24 for `relay-go` / `indexer-go`. Rust/Tauri for the desktop
shell (later phase).
## Commands
| Command | What it does |
|---|---|
| `pnpm typecheck` | `tsc --strict --noEmit` across the workspace |
| `pnpm test` | run all `node --test` suites |
| `pnpm reproduce` | regenerate every committed vector; non-zero on mismatch (core §14.5) |
| `pnpm lint:opreturn` | fail if `OP_RETURN` (0x6a) appears in any script (rule 2) |
| `pnpm trace` | requirements → code → test traceability check (core §13.3) |
| `pnpm ci` | the full CI pipeline (core §16, app §A14.2) |
## Status
See [`spec/BUILD-STATUS.md`](./spec/BUILD-STATUS.md) for the honest per-phase build status
and metrics. Built in phases (core §17): Phase 0 foundations → Phase 1 heads-up NL Hold'em.