Skip to main content
@nullis/cli is the operator-facing tool. Before a policy touches the chain, the CLI checks it is well-formed and canonical; after a decision, it renders the Privacy Receipt in a readable form — for successes and blocks alike.

The policy manifest

A policy is a readable JSON manifest, hashed to policy_hash and registered on-chain with an active version.

Field reference

policy_hash is computed over ordered fields, never over raw JSON — field order and whitespace would make it non-canonical. The CLI enforces the canonical structure so what you publish is exactly what the circuit and contract expect. See Cryptographic design.

Validate a manifest

If a field is missing, mistyped, or the manifest has extra keys, validation fails before anything is committed on-chain — you never publish a policy the circuit and contract would disagree with.

Render a Privacy Receipt

The receipt renders the same way whether the decision was a success or a block — that duality is the point.

Canonical vocabulary

The CLI — and everything in Nullis — uses one fixed set of terms, no synonyms:

Publish flow

How policies are registered and versioned on-chain.