Protocol

How MintID works

Protocol-level identity on a sovereign Cosmos SDK chain: the network publishes trust roots, not identities. KYC happens once with an accepted issuer; everything after is the holder proving claims in zero knowledge against those roots.

The core guarantees

ZK

Zero-knowledge presentations

Selective-disclosure proofs for predicates like grade ≥ A3, age threshold, credential active, issuer accepted and credential unexpired — without revealing raw attributes.

Root-based status

The chain stores compact issuer status commitments, not per-holder state. A signed status root is published every 30 seconds, with immediate emergency roots.

10s

10-second presentations

A presentation is valid for ten seconds and bound to a unique challenge, exact audience/origin, requested policy, current status root and finalized chain height.

Holder self-revocation

A holder can revoke their own credential without the issuer, in a way that reveals neither their identity nor a normal credential identifier.

A

Private assurance grades

Assurance is one of A1–A4; only a commitment is public. A verifier receives a threshold proof such as “grade ≥ A3” without learning the exact grade.

O(1)

Bounded state growth

Live state scales with issuers, verifiers, validators and active commitments — never with the number of holders or presentations.

Lifecycle

From KYC to a perishable proof

fig. 1 — what a presentation binds · nothing else leaves the wallet

01

Issuance

An accepted issuer performs KYC once and issues an anonymous credential bound to keys the holder controls.

02

Status commitment

The issuer publishes a signed status root every 30 seconds; revocation is a private witness against that root, not a per-holder record on-chain.

03

Presentation

On a verifier’s challenge, the holder assembles a 10-second zero-knowledge presentation, fully bound to verifier, origin, policy, root and chain height.

04

Verification

A KYC-approved verifier checks the proof against the latest finalized issuer and verifier state, online, and stores only a minimal decision record.

05

Revocation & recovery

Issuers can revoke (including immediate emergency roots); holders can self-revoke; lost keys are recovered only by fresh KYC and a new, unlinkable credential.

This loop is reusable KYC in practice — one verification, many proofs. For the plain-language walkthrough, read Reusable KYC explained on the blog.

Engineering

A language boundary that is a security boundary

Built on Cosmos SDK + CometBFT with Protocol Buffers for every message and state. No network, clock, randomness, HSM, RPC or FFI ever runs in a block-execution path.

Go

The chain

Consensus-visible logic: idchaind, Cosmos SDK modules, deterministic transaction handlers, registries, token economics, CLI and node APIs.

Rust

The proof core

Anonymous-credential and zero-knowledge proof core: circuits, revocation witnesses, the self-revocation prover, and known-answer test vectors.

Python

Simulation & testing

Simulations, load and fault harnesses, integration-test orchestration, automation and analytics — never consensus-path or production-crypto code.

Wondering how these choices stack up against other identity chains? See MintID vs Concordium for an honest side-by-side.

Wallet roadmap · post-MVP

Who checked my identity, when, why

Your wallet keeps its own encrypted log of every presentation and every disclosure — reconcilable against the on-chain disclosure receipts, so you can prove to yourself the record is complete. There is no server-side log anywhere to ask, subpoena or leak: the only complete history of your identity’s use is the one you hold.

Go deeper into the specification

Requirements R1–R28, the consensus and validator program, monetary policy, and the module map all live in the protocol spec.