Midnight Ledger
A Compact contract that logs choreography to the public ledger while the author's identity stays behind a private-witness ZK proof. Reading is public — writing needs the Lace wallet, the local proof server, and a small amount of tDUST from the faucet.
Hit a 1010 InvalidDustSpendProof, DustSpendProcessed decode error, or /check 400 bad input? See known issues →
Not yet deployed. Run bun scripts/deploy-midnight.mjs locally — the script writes the address + tx into src/data/midnight-contract.preview.json.
Not yet deployed. Run VITE_NETWORK_ID=preprod bun scripts/deploy-midnight.mjs locally — the script writes the address + tx into src/data/midnight-contract.preprod.json.
Lace ships as a mobile wallet today (iOS / Android, the MetaMask / Phantom equivalent for Cardano) — but only for Cardano. Midnight support on mobile is not shipped yet, so use the Lace desktop browser extension for these demos.
MIDNIGHT_WALLET_SEED="your words stay local" bun scripts/check-midnight-wallet.mjs --network=preview
The preview faucet only accepts an unshielded address (mn_addr_preview…).
Public ledger view · preprod
Read-only. Pulled from the Midnight preprod Indexer over GraphQL — no Lace wallet required to browse.
VITE_NETWORK_ID=preprod bun scripts/deploy-midnight.mjs; it writes the deployed address into src/data/midnight-contract.preprod.json and this page hydrates from the Indexer.Try it locally (writable demo)
The write path (Lace + WASM + local proof server) is a client-only, browser-globals-heavy stack that will not run under this site's SSR shell. Grab the full recipe from the strategy page and run it on your machine.
- Install Lace, switch it to Midnight preview or preprod, get tDUST from the matching faucet.
compact update→compact compileyour.compactfile.docker run -p 6300:6300 midnightntwrk/proof-server:latest midnight-proof-server -v- Paste any mega-prompt from this repo into Lovable — it wires Lace + the proof server + Indexer for you.