Skip to content

Latest commit

 

History

History
83 lines (61 loc) · 3.64 KB

File metadata and controls

83 lines (61 loc) · 3.64 KB

Mainnet E2E Proof - March 27, 2026

Result: PASS

First on-chain ownership attestation anchored on Zcash mainnet.

Artifacts

Invoice

  • ID: 82fe11f3-dd98-44de-8f97-b8979e0ebcb9
  • Amount: 0.0101 ZEC (1,010,000 zat)
  • Type: program
  • Wallet hash: e2e_wallet_20260327
  • Status: paid
  • Payment txid: 0f0bf6c66c5484a47e1c262a2cef125a7ca8d6a2f28021d52aa44b57972bdb28
  • Block: 3,286,623
  • Detected via: mempool (confirmed in block)

Merkle Tree

# Event Leaf Hash Serial
1 PROGRAM_ENTRY 075b00df286038a7b3f6bb70054df61343e3481fba579591354a00214e9e019b -
2 OWNERSHIP_ATTEST de62554ad3867a59895befa7216686c923fc86245231e8fb6bd709a20e1fd133 Z15P-E2E-001

Root: 024e36515ea30efc15a0a7962dd8f677455938079430b9eab174f46a4328a07a

Anchor Transaction

  • Txid: 98e1d6a01614c464c237f982d9dc2138c5f8aa08342f67b867a18a4ce998af9a
  • Block: 3,286,631
  • Memo: ZAP1:09:024e36515ea30efc15a0a7962dd8f677455938079430b9eab174f46a4328a07a

Verification

  • /verify/de62554a... page: all fields present and consistent
  • Independent verifier (verify_proof.py): VERIFIED
  • Hash recomputation: all 3 hashes match (leaf1, leaf2, root)

Pass/Fail Criteria

Criterion Result
Invoice created via authenticated API PASS
Payment detected exactly once PASS
PROGRAM_ENTRY leaf exists PASS (manual insert - bug found, see below)
OWNERSHIP_ATTEST leaf created on /assign PASS (automatic)
Root anchored with real mainnet txid PASS
Anchor height recorded PASS (3,286,631)
/verify page shows consistent proof bundle PASS
Independent verifier confirms proof PASS

Bug Found During Run

Mempool leaf insertion missing. When a payment is detected via mempool scanning, the scanner records the payment and sends a Signal notification, but does NOT create the PROGRAM_ENTRY Merkle leaf. The block confirmation path has the leaf logic, but the dedup check prevents it from firing because the mempool already recorded the payment and transitioned the invoice to "paid."

Root cause: The mempool code path in scanner.rs calls record_payment but doesn't check transitioned_to_paid for leaf insertion. Only the block scan path had this logic.

Fix: Added leaf insertion to the mempool detection path. Code committed but not yet rebuilt/deployed.

Workaround used: Manual leaf insertion via sqlite3 for the PROGRAM_ENTRY leaf. The OWNERSHIP_ATTEST leaf was created automatically by the /assign endpoint (no bug there).

Infrastructure State at Time of Proof

  • Zebra 4.3.0 at chain tip (block 3,286,624, sync_lag=0)
  • zap1 running on host network, scanner operational
  • All 4 containers healthy (zebra-mainnet, zap1, signal-cli, n8n)
  • Payment page QR code working (server-side SVG via qrcode crate)
  • Signal notifications delivered for both invoice creation and payment

What This Proves

  1. zap1 creates invoices with unique Orchard shielded addresses
  2. The scanner detects payments via trial decryption on mainnet
  3. The Merkle tree produces deterministic, verifiable leaf hashes
  4. Serial assignment creates an OWNERSHIP_ATTEST commitment
  5. The Merkle root can be anchored on Zcash via a shielded memo transaction
  6. The /verify page renders a complete proof bundle
  7. An independent verifier can recompute and confirm the proof without trusting the operator

Anchor Address for Section VI Filing

The anchor transaction was sent to: u1qzfssuy2n2puqvafzjtq6qvjul7e985u75xsrnppcpd5c0sujs727xngaecx5yt4ljy6qlkr8hxsvj6d8gmxd7g6c9p3993hh5zwenq7

This address (diversifier index 2) can serve as the Wyoming DAO LLC Section VI smart contract identifier.