Prove what a vehicle is. Reveal only what the asker is entitled to see.

A Digital Circularity Vehicle Passport built on Midnight's zero-knowledge blockchain. One canonical vehicle record, anchored once. From then on each party, whether buyer, recycler or border authority, is shown exactly what they are entitled to and provably nothing more.

SEE A LIVE PASSPORT READ THE CONTRACT

No wallet. No account. No login. A buyer scans a QR code and sees a verdict; every transaction fee is sponsored.

The four buyer questions
01Has it ever been written off?≤ 0
02Any reported accidents?≤ 0
03One keeper from new?≤ 1
04Mileage under 150,000 km?≤ 150k

Each is answered yes, or the transaction fails. The value that satisfied the bound is never published, and “not proven” is rendered as exactly that: no claim, never a quiet no.

VINPassport contract data Compact 0.31.1 Ledger 8 Sheet 01 of 01
01 Circuits in the contract 5 All with proof: true; artifacts committed
02 Contract tests passing 67 Both integrity rules mutation-checked
03 Provable field slots 32 26 in use, 6 reserved. Depth 5, width permanent
04 Private values on the ledger 0 Asserted by test, not by this sentence

Pre-alpha, under active development. The contract is written, compiles and is covered by tests; the application layer around it is being built.

02 · How privacy is achieved

A commitment per field

The ledger stores persistentCommit(value, salt), never the value and never the salt. Each field also carries an integrity rule, written once at creation, so a caller cannot pick the flattering rule at the moment they need it.

Rules that only point one way

Mileage, accidents, keepers, services and write-off category may never fall. To write a new value the caller must prove, inside the circuit, that they know the current one and that the change respects the rule. A rollback by one kilometre is refused.

Claims that expire honestly

A recorded claim names the commitment its proof opened. Record a new reading and the old claim no longer matches the field, so a verifier can see it is superseded without being told.

03 · Three surfaces, one ledger
/console/

Intake

For a registrar

Fill in the fields, submit, and watch the compiled circuits accept and refuse. A rollback update aborts in-circuit, is shown as refused, and writes nothing.

Open the console →
/proofs/

Proof explorer

For an auditor

Every claim on the ledger, grouped by vehicle and marked current or superseded. Nothing here requires trusting VINPassport. Every row is a claim anyone can check.

Open the explorer →
/

Verification

For a buyer

Scan the QR code on a vehicle or its listing and this page opens on its passport. The page never sees a VIN, only its hash.

See a verdict →
04 · Why this exists

A mandate with a conflict inside it

A vehicle passport has to be verifiable by strangers and confidential at the same time. A full history is commercially sensitive to a dealer and personally identifying to an owner. Publishing the record solves the first and destroys the second. Keeping it private leaves the first where it is today: trust the seller.

Read the regulation in full on its own page

13 AUG 2026 Regulation (EU) 2026/1738 enters into force
FEB 2027 EV battery passport becomes mandatory under Reg (EU) 2023/1542. Slot 29 is the link out to it
1 SEP 2028 The regulation generally applies. Manufacturer circularity strategies follow a year later
1 SEP 2032 Every vehicle placed on the EU market must carry a Digital Circularity Vehicle Passport
TODAY Title washing, undisclosed accident history, fabricated service records, mileage fraud
05 · What this does not prove

A producer who commits a false value produces a cryptographically valid proof of a false fact.

VINPassport proves a reading is the one that was committed, and that it satisfies a bound. It does not prove the reading matched physical reality. Closing that gap needs hardware attestation at the source. That is scoped as Phase 2 rather than pretended away, and stated in full in docs/ARCHITECTURE.md.

06 · Built on
The platform Midnight Network

The zero-knowledge chain the passport lives on, at ledger 8. The contract, its five circuits and both integrity rules are ours, written in Compact and covered by our own tests.

Two libraries, narrow jobs
@odatano/dpp-sdk
Used for one thing: the salted-Merkle field panel that holds the 32 commitments.
@odatano/nightgate-tx
Used for one thing: building and proving our transactions locally, against our own key. The hosted NIGHTGATE service pays and submits them.

Nothing about the passport logic is delegated. Every transaction is assembled, proven and signed locally before it leaves the machine, so the submission service pays a fee it cannot read and never sees a witness.

07 · Try it

Run the whole thing locally in one command

Node 22+. No Docker, no wallet, no network access, no API keys. Three surfaces and the real compiled circuits, in-process.

$npm install && npm run app→ localhost:8790
VIEW ON GITHUB THE 90-SECOND WALKTHROUGH