Two-Wallet Demonstration — Operator Workflow¶
The two-wallet demonstration composes two operator-controlled wallets side-by-side on the substrate — one classical secp256k1 wallet (Wallet A) and one UUM-8D PQ-safe wallet (Wallet B) — and exercises Shor against both. The substrate produces the evidence; the operator decides per their actual holdings.
Every step writes an append-only, federation-cosigned, NATS-broadcast row. The substrate-honest stance holds throughout: when a reference library is not yet bound, the substrate refuses the terminal classification but persists the V215 row with the UUM-8D witness, p2pqh address, and V211 seed binding so the keypair lands operator-bound when the library arrives.
Step 1 — Install GaiaFTCL¶
Download the GaiaFTCL.app DMG from gaiaftcl.com. Mount the DMG and copy the application to /Applications. The substrate distributes through mesh, not the App Store.
Step 2 — Sprout the cell¶
Compose the operator cell's substrate-natural Curve25519 federation context keypair:
The substrate writes a V196 substrate_cell_sprout_history row recording the cell's federation context public key. This keypair is the operator cell's identity in the federation mesh; the private half persists in the local Keychain. Subsequent substrate operations sign through this context.
Step 3 — Compose Wallet A (classical, demonstration-exposed)¶
The substrate returns:
wallet_id— substrate-resident identifierpublic_key_hex— secp256k1 public keybit_size— composition cadence label ({16…256}); does not change the secp256k1 ECDLP oracle (always full curve via P256K)scheme—secp256k1
The substrate writes a V215 row with classification = 'demonstration_exposed'. The private key persists at ~/.gaiaftcl/demonstration_wallet_exposed_<id>.toml with mode 0600. Wallet A is operator-controlled at both ends — the substrate refuses to compose anything otherwise.
Step 4 — Compose Wallet B (UUM-8D PQ-safe)¶
gaiaftcl wallet demo create-safe \
--wallet-label <l> \
--pq-scheme ml-dsa-87 \
--paired-exposed-wallet-id <A_id>
The substrate writes a V215 row with classification = 'demonstration_uum8d_safe' and paired_demonstration_wallet_id = <A_id>, pairing Wallet B to Wallet A for the side-by-side projection in Step 7.
Substrate-honest behavior when the PQ reference library is unbound: the terminal classification is reference_library_refused, but the V215 row persists with:
- the UUM-8D witness over the operator-bound keypair generation request,
- the p2pqh address derived from the substrate's UUM-8D composition, and
- the V211 seed binding hash.
When the reference library binds, the keypair lands operator-bound against the persisted V211 binding — no re-composition, no re-derivation, no drift.
Step 5 — Run Shor against Wallet A¶
The substrate composes Shor against Wallet A's secp256k1 public key. The substrate writes a V188 row recording the substrate measurement. On success, the V215 outcome updates to substrate_broke_wallet. The classical wallet falls to the substrate's quantum measurement.
Step 6 — Run Shor against Wallet B¶
The substrate composes a Shor attempt against Wallet B. The substrate writes a V190 row with substrate_mathematical_rationale recording the structural reason Shor does not reduce:
- ML-DSA (Dilithium family) — Module Learning With Errors (MLWE) and Module Short Integer Solution (MSIS); Shor's period-finding does not reduce lattice problems.
- SLH-DSA (SPHINCS+ family) — hash preimage resistance; Shor's period-finding does not reduce one-way hash inversion.
The V215 outcome updates to substrate_proven_safe. The PQ wallet holds against the substrate's quantum measurement.
Step 7 — View side-by-side comparison¶
The substrate projects Wallet A and Wallet B side-by-side through the V208 comms projection: paired wallet IDs, schemes, classifications, V188/V190 outcomes, witness hashes, federation cosignature quintets. The operator reads the substrate's evidence chain directly.
Step 8 — Operator decision¶
The substrate has produced the evidence. The operator decides per their actual holdings:
- Migrate to PQ infrastructure substrate-natively — compose the V188/V189/V190/V193/V194 PQ migration evidence chain against the operator's own wallet endpoints (operator controls both source secp256k1 and destination PQ keys; substrate-resident challenge-response proves both-ends ownership before V194 seals).
- Accept substrate-mathematical vulnerability — the operator's existing classical holdings remain exposed to substrate-quantum measurement; the V215 demonstration record stands as the operator's evidenced acknowledgment.
The substrate does not compose Bitcoin transactions on the operator's behalf, does not derive private keys for third-party public keys, and does not seal evidence for migrations the operator cannot prove ownership of at both ends. The operator's own wallet, the operator's own substrate, the operator's own machine.
Federation cosignature: pending
This page is not yet in the signed manifest. Run gaiaftcl wiki sign --all.