Skip to main content
Euro 7 applies to new vehicle types from 29 Nov 2026Euro 7 from 29 Nov 2026Euro 7 has applied to new vehicle types since 29 Nov 2026Euro 7 since 29 Nov 2026 · What it means
Developers

The contract is open. Read it, run it, test it.

VINPassport is written in Compact for the Midnight network and published under Apache-2.0.

The contract at a glance

Numbers from the test suite, not the brochure

Compact 0.36.0Ledger 9Apache-2.0Live on Preview
23

Circuits

18 provable, each with its own prover and verifier key, plus 5 pure helpers.

176

Contract tests passing

Every guard mutation-checked: 43 of 43.

32

Provable field slots

26 in use, 6 reserved. Depth 5, width permanent. The field list (opens in a new tab)

18

Verifier keys on chain

Each pinned by hash in the deploy record.

Try it live

Run it against the live contract.

Every page below works on Midnight's Preview test network or on circuits running in your browser.

Live chain demo

Run a real passport onto Midnight Preview: real proving, real fees, real blocks, and a receipt only you can open.

Open the demo →

Check a disclosure

One vehicle, three audiences. A buyer, a dealer and an authority each receive a different bundle, and this page checks every value in it against the ledger, in your browser.

Check a disclosure →

Intake console

Register a vehicle passport. Values stay local; only commitments and proven claims reach the ledger.

Open the console →
The contract on Midnight Preview

22723f4a56a61d2c8f87f7327b8b40cba13612a493ea6282ed6607d9788af7cd

  • Deployed 9 November 2026 in two steps, blocks 28785 and 28830.
  • A full guided run, blocks 29328 to 29516, read back from the public indexer: 13 checks of 13.
  • Registrar governance on chain (blocks 29162 and 29247), and maintenance handed to a 2-of-3 committee (block 29549).

The deploy record (opens in a new tab) · Check it yourself: the indexer query needs no key (opens in a new tab)

How a check works

Commit, prove, refuse.

The mechanics behind the plain answers on the buyer's screen.

  1. Store

    The ledger keeps persistentCommit(value, salt) for each field, never the value or the salt. Records are keyed by the hash of an identifier.

  2. Prove

    A check proves a value satisfies a bound, such as mileage under 150,000 km, without publishing the value. Transactions are built, proven and signed locally.

  3. Refuse

    Each field's rule is fixed at creation. Under neverFalls, a lower later reading fails in-circuit and writes nothing. Writes are bound to a named registrar, and changing who may register takes two registrars' approval.

Run it locally

Clone the repository

The README covers compiling the contract and running the test suite.

git clone https://github.com/VINPassport/VINPassport.git
cd VINPassport
Open the README on GitHub → (opens in a new tab)
Go further

More for builders

Proof explorer

Inspect the proofs behind a passport's answers, field by field.

Open the explorer →

Architecture

The design notes, including what is planned for phase 2, such as sensor-signed readings.

Read the architecture notes → (opens in a new tab)

Built on Midnight

A data-protection blockchain for proving facts without revealing them. VINPassport's mainnet launch is coming.

How privacy works →