Skip to main content
Honest scope disclosure is a scoring criterion, not a weakness. Nullis maintains a clear line between what is real and what is mocked, and never lets code, docs, or UI claim something that isn’t built.

Real — running today

Real on-chain ZK

A Noir/UltraHonk proof of the Nullis circuit is verified on Stellar testnet inside verify_and_execute, gating an actual USDC payment. The credential secret is never revealed.

The circuit

Proves possession of credential_secret, Poseidon2 commitment membership in approved_root (depth-8 Merkle), and correct nullifier derivation.

Cross-impl hashing

Canonical Poseidon2-BN254 computed byte-identical across the contract, the TypeScript SDK, and the Noir circuit — cross-validated by golden vectors and nargo execute.

Atomic verify_and_execute

On-chain Soroban (Protocol 27) — atomic proof-to-action.

Real asset movement

Actual testnet asset movement via the escrow reference adapter (contract → recipient).

Replay prevention

Nullifier + action_id replay prevention, proven on-chain.

Action binding

Recipient / amount / asset / consuming-contract / network — bound and checked on-chain and in tests.

Policy lifecycle

Policy registry + versioning + root-rotation revocation + expiry.

Two apps, unlinkable

One engine, two apps, with unlinkable nullifiers — reproducible.

Privacy Receipt

Emitted on success and rejection.

Mocked / roadmap — honestly disclosed

These are not claimed as production-ready. They are reference implementations or roadmap items, disclosed plainly.
ItemStatus
The reference issuerPerforms no real KYC — admitting a user is adding to the root.
In-circuit sparse-Merkle non-membership revocationRoadmap. v0 uses root rotation.
Multi-issuer governanceRoadmap.
Mainnet + a security auditRoadmap.
The escrow executorA reference execution adapter. Authorized-transfer is the production path.
The mock-verifier build featureExists only for the fast deterministic contract-logic test suite. The deployed wasm always uses the real verifier.

The one line that matters

Move items from “mocked” to “real” only when they truly are. A reviewer can check every “real” claim above against a live transaction or a one-command test — and every “roadmap” item is labeled as such wherever it appears.

Verify the real claims

Every “real” item maps to a testnet transaction or a deterministic test.