👻 Phantom Drop
Haunted claim links for stealth TARI on Tari Ootle. Seal an amount into a secret link. Whoever holds the link can open it and receive the funds privately, even with no wallet and zero balance. If nobody opens it before midnight (an expiry epoch), the link dies and only the sender can take the money back.
Built for the Tari October Build Contest, Spooky Secrets. Native Ootle stealth primitives only, no custom template.
Peek inside a sealed envelope
Same envelope, two viewers. Toggle between what anyone scanning the chain sees and what the person holding the link sees.
Try the five acts
This is the narrated demo from the repo (cargo run --example haunted_demo --features sim), replayed step by step. Every transaction runs on the real Ootle engine in-process: Bulletproofs, balance proofs, condition trees, timelocks, signatures and fees. CI re-runs it on every push.
Live on Esmeralda testnet
The same phantom CLI, run against the public Esmeralda network on 2026-10-12. Two envelopes sealed in one transaction, one opened by a brand-new wallet, a second open rejected, and the other reclaimed after expiry.
Why it's spooky
| Amount | Hidden. Pedersen commitment plus range proof. |
| Owner or recipient | None. Locked by a Merkle root, not a public key. |
| Claim key, refund key, expiry | Hidden behind the root until a branch is used. |
| Message or riddle | Encrypted memo, readable only with the link. |
| Sender | Not linkable when funded from stealth UTXOs (--fund utxos). |
| Zero-funds claim | The claim pays its fee out of the envelope itself (5 TARI in, 4.95 out). |
| Riddle locks | Claim key derived from Argon2id(answer), so a link can be posted publicly without being front-run. |
Run it yourself
git clone https://gitlab.com/hycorange/phantom-drop.git && cd phantom-drop cargo test cargo run --example haunted_demo --features sim 2>/dev/null cargo build --release # CLI: target/release/phantom (see docs/ESMERALDA.md for testnet)
MIT licensed. Testnet only; nothing here touches real funds.