- Rust 84.3%
- Python 9%
- HTML 4.4%
- Nix 1.9%
- Just 0.4%
|
|
||
|---|---|---|
| .github/workflows | ||
| cinder-pay | ||
| docs | ||
| hush-auction | ||
| scripts | ||
| src | ||
| tests | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| flake.lock | ||
| flake.nix | ||
| justfile | ||
| LICENSE | ||
| README.md | ||
| rust-toolchain.toml | ||
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.
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.”
-
Run
nix run path:.#demo. Read the explanation above the arena. Each scene stays visible for seven seconds; Enter or N advances it. -
Press
Spaceto pause; pressPto 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. -
Press
Spaceto resume. The boss falls and three real confidential loot outputs appear. -
Press
X(or let the tour reach the protection checks). The application actually submits invalid inputs to Flame verification and shows four rejections. -
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.
