Private balance attestation
LP-0005 for the Logos Execution Zone. Prove a private LEZ
token account holds balance >= N without
revealing the balance, the account, or the nullifier key.
Verify on-chain through a SPEL program or off-chain over
Logos Messaging.
This page runs the public-side checks — gate-id derivation,
journal-field inspection, field-equality verification —
entirely in your browser. Cryptographic receipt verification
and ed25519 signature checks need the CLI:
cargo install attestation-cli from the
repo.
1. Pick a gate
The gate's context_id is a domain-separated hash
of the gate's identifying inputs. The prover commits it to
the journal; the verifier rejects any proof whose
context_id doesn't match. Trailing colons on
every domain prefix prevent cross-domain collisions.
Context id:
—
2. Inspect a journal
The journal is the proof's public output:
merkle_root, threshold, context_id, presenter_pk,
program_owner, circuit_version. Everything else from
the witness — balance, npk, nonce, data — never reaches the
verifier. Pick a mode below.
Receipts come out of attestation-cli prove --out
./out/proof.bin. The parser scans the file for a
140-byte JournalFields-shaped section.
No journal loaded.
3. Sign a challenge as the presenter
Presenter binding (the bounty's "Known Open Problem"). The
verifier issues a fresh 32-byte challenge; the presenter
signs it with the secret key whose public half is embedded
in the account's data field and committed as
presenter_pk. A forwarded proof without the
spending key cannot pass this step.
4. Verify against a gate
Field-equality checks (context_id,
threshold, merkle_root,
circuit_version) plus the ed25519 signature
check from step 3. The only piece left for the CLI is the
RISC0 receipt cryptographic check — the output shows the
exact command for that.
Not run.