diff --git a/README.md b/README.md index 6b9ff17..80c90fd 100644 --- a/README.md +++ b/README.md @@ -109,6 +109,8 @@ If all checks pass you’ll see `✅ proof verified`. * **Base‑64 engine** – now uses `engine::general_purpose` for encoding and decoding. * **Optional Halo 2 backend** – design allows dropping in a different ZKP backend with Cargo `--features halo2-backend` later. +For a more detailed plan of upcoming work, see [ROADMAP.md](ROADMAP.md). + --- \## Directory layout diff --git a/ROADMAP.md b/ROADMAP.md new file mode 100644 index 0000000..e89a046 --- /dev/null +++ b/ROADMAP.md @@ -0,0 +1,29 @@ +# Project Roadmap + +This document outlines the current status of the Private Proof-of-Reserve CLI prototype and the recommended next steps. + +## Overall assessment + +| Aspect | What’s strong already | Gaps / caveats | Priority fixes | +| --- | --- | --- | --- | +| **Privacy** | • Pedersen commitments hide individual UTXO values.
• Bulletproof reveals only `total – min ≥ 0`.
• Merkle root hides which UTXOs are included. | • Still leaks **count** of UTXOs.
• Proof JSON exposes the commitment list. | • Consider batching commitments (e.g., hash-to-point of all UTXOs) to hide count. | +| **Security / key handling** | • PSBT round-trip keeps seeds on the hardware device.
• Works for single-sig and (with spec) multisig.
• No private data shown in CLI logs. | • Ownership-proof step not implemented yet.
• Snapshot is current UTXO set—no guarantee it matches the declared height. | **High:** implement ownership-proof verification and snapshot-at-height. | +| **Reproducible builds** | • `Cargo.lock` committed again → deterministic CI.
• Clean `.gitignore`. | — | — | +| **Extensibility** | • CLI sub-command design is clean; easy to add `build-psbt`, `attach-sigs`.
• Proof JSON is versioned. | • Versioning/upgrade path not encoded yet (add `"proof_format": 1`). | Medium. | +| **Usability** | • Works headless (`cargo run`) or with QR hardware.
• Detailed README planned. | • Animated QR in terminal may be slow on some shells.
• Need progress bars for large UTXO sets. | Low/Med. | +| **Performance** | • Pure Rust; no FFI headaches.
• Commitment & Merkle root linear in UTXO count. | • Range-proof verification still `TODO` (Bulletproofs verify cost ~O(n log n)).
• For thousands of UTXOs, QR frames explode. | Consider commitment aggregation. | +| **Compliance / auditability** | • Clear separation of cryptographic steps makes audit easier. | • Bulletproof gadget not audited; same for Merkle inclusion logic. | Engage external audit once code stabilizes. | + +## Should we keep going with this architecture? + +Yes. Offline signing via PSBT leverages a mature ecosystem, and Pedersen commitments plus Bulletproofs follow well-tested cryptographic designs. The remaining features for multisig, descriptor wallets and snapshot-at-height do not require an architectural overhaul. + +## Suggested near-term roadmap + +1. **Ownership verification** – implement signature extraction and on-verify checks; support `m-of-n` (1–2 dev‑days). +2. **Snapshot at declared height** – either pause a pruned node at `--height` or fetch an assumeUTXO hash (2–4 dev‑days). +3. **Finalize proof JSON v1** – add `proof_format`, `signing_type`, and `psbt_hash`; lock the field set (0.5 day). +4. **Automated regtest suite** – spin up `bitcoind`, auto-mine, generate a proof and verify it (1 day). +5. **Docs & README** – deployment guide, security model description and QR signer list (0.5 day). + +When these land the project should be a viable MVP for exchanges or treasury desks to trial on testnet.