No description
  • Rust 84.3%
  • Python 9%
  • HTML 4.4%
  • Nix 1.9%
  • Just 0.4%
Find a file
tsk 67d82c83b7
Some checks failed
Check / nix (push) Failing after 6s
init
2026-10-03 09:26:45 +00:00
.github/workflows init 2026-10-03 09:26:45 +00:00
cinder-pay init 2026-10-03 09:26:45 +00:00
docs init 2026-10-03 09:26:45 +00:00
hush-auction init 2026-10-03 09:26:45 +00:00
scripts init 2026-10-03 09:26:45 +00:00
src init 2026-10-03 09:26:45 +00:00
tests init 2026-10-03 09:26:45 +00:00
.gitignore init 2026-10-03 09:26:45 +00:00
Cargo.lock init 2026-10-03 09:26:45 +00:00
Cargo.toml init 2026-10-03 09:26:45 +00:00
flake.lock init 2026-10-03 09:26:45 +00:00
flake.nix init 2026-10-03 09:26:45 +00:00
justfile init 2026-10-03 09:26:45 +00:00
LICENSE init 2026-10-03 09:26:45 +00:00
README.md init 2026-10-03 09:26:45 +00:00
rust-toolchain.toml init 2026-10-03 09:26:45 +00:00

Slides: nix run path:.#present opens the offline slides directly in your terminal. Use arrows to advance, N for notes, Q to quit.

Judging demo: run nix run path:.#hush-present for the animated TUI with a separate bidder signer and visible rigged-winner rejection. Follow the 90-second TUI script. Slides and PDF are optional backups.

Three projects on Flame

Hush Auction — bid privately for the last coffee machine on Mars, prove the winner without revealing amounts, and inspect the real cryptography.

nix run path:.#hush       # interactive auction with live crypto
nix run path:.#hush-demo  # guided auction

Cinder Pay — confidential contractor payouts from CSV, persistent bookkeeping, separate recipient receipts, and selective disclosure.

nix run path:.#pay-demo   # guided real-world workflow
nix run path:.#pay        # interactive payment desk

Backup: Ember Arcade, documented below. Its existing commands remain available.


EMBER ARCADE

Private money. Public boss fight.

A cooperative terminal raid built on Flame. Three heroes tip the arcade with confidential payments, defeat the Cinder Wyrm, and receive a split of the loot. Every attack builds a real Flame transaction. Every payout settles on a real, in-process Flame devnet chain.

The EMBER ARCADE terminal arena

Play

nix run path:.           # interactive arena
nix run path:.#demo      # narrated tour: pay → fight → privacy → rewards

Use a terminal of 120 × 40 or larger for the full layout (minimum 90 × 34), with a Unicode monospace font and true color. The first Nix build fetches pinned dependencies; subsequent runs work offline. No node setup, credentials, faucet, or wallet installation required.

Key Action
1 / 2 / 3 Select Mica, Byte, or Nova
← / → Choose Spark, Solar Wave, or Meteor
Enter / N Advance one tour step (Enter casts moves when playing manually)
+ / − Set your private tip: 1,000 / 3,000 / 7,000 sparks
P Switch spectator / local wallet view
X Try transaction tampering, double-spending, a wrong viewing key, and note corruption
A Start or pause the guided tour
Space Pause/resume during the tour; cast a move during manual play
V Show or hide technical transaction details
E Independently replay and export public receipts to receipts/
R Leave the tour and play a fresh raid yourself
? / Q Help / quit

Spark deals 20 damage and restores one energy. Solar Wave deals 30 for one energy. Meteor deals 40 for two. Each hero starts with two energy. Damage is independent of the tip amount. Defeating the boss unlocks equal rewards for all three heroes; the highest-damage hero gets any indivisible remainder, with party order breaking ties. Each attack and the final payout pay a 100-spark fee.

The 90-second hackathon pitch

“Your audience should be able to power a shared experience without publishing their spending history. This is a playable example: a raid where the action is public and the money is confidential.”

  1. Run nix run path:.#demo. Read the explanation above the arena. Each scene stays visible for seven seconds; Enter or N advances it.

  2. Press Space to pause; press P to switch between the spectator and local wallet views. Amounts and memos are encrypted in the transaction, while addresses, graph, output counts and fees remain public.

  3. Press Space to resume. The boss falls and three real confidential loot outputs appear.

  4. Press X (or let the tour reach the protection checks). The application actually submits invalid inputs to Flame verification and shows four rejections.

  5. Press E. Copy the receipt filename from the feed and verify it in a second terminal:

    nix run path:. -- verify receipts/ember-<timestamp>.json
    

The second process holds no wallet keys. It reconstructs genesis and validates every block, signature, proof, membership and state transition from public bytes.

Headless demo

nix run path:.#smoke
nix run path:. -- demo --receipt raid.json
nix run path:. -- verify raid.json

A real sample receipt is included: nix run path:. -- verify docs/example-raid.json.

Receipt export refuses to overwrite an existing file. Receipts contain the three public genesis allocations and canonical serialized blocks, with no wallet seeds or commitment openings. An unfinished raid can also be exported and verified: verification attests local chain validity, not victory or fair game rules.

What is built on Flame

Component Actual SDK integration
Disposable wallets flamekd / flamepayments::Account, OS randomness, fresh receiving address for every output
Private payments build_transfer, confidential token commitments, Bulletproof constraints, MuSig authorization
Encrypted receipts SDK payment-note sealing and recipient-side open_note; fixed 32-byte memos
Local settlement flamechain::Blockchain, real blocks and Utreexo proof refresh after every block
Loot Spend the host's pot UTXOs into three confidential outputs
Independent verification Decode canonical public wire data and replay into a new Flame chain

The application pins Flame to 8021a125 and pins the SDK's Merlin and Bulletproofs forks. It uses the supplied transfer builder instead of implementing its own cryptography. See architecture and boundaries.

This is a local hackathon devnet. Genesis sparks are disposable; no Bitcoin is burned and no public consensus is claimed. The process owns all four wallets, the host controls gameplay and the pot, and wallets disappear on exit or reset. The privacy toggle shows two perspectives inside that trusted demo process. Transactions protect amounts and memos from a public verifier, not from their sender or recipient. Genesis allocations are public. This is not an anonymous payment system or a production wallet.

Develop

nix develop path:.
just run
just demo
just quick-check
just final-check

Without Nix, install the toolchain from rust-toolchain.toml, then use cargo run --release or cargo run --release -- demo. Nix exposes a package, development shell, formatter, formatting check, Clippy check, unit tests and a complete six-hit settlement/replay integration test. The build is validated on x86_64 Linux; the flake also exposes native Linux ARM and macOS outputs, which need validation on those hosts.

For a walkthrough, see DEMO.md. No network is needed at runtime.