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.
Numbers from the test suite, not the brochure
Circuits
18 provable, each with its own prover and verifier key, plus 5 pure helpers.
Contract tests passing
Every guard mutation-checked: 43 of 43.
Provable field slots
26 in use, 6 reserved. Depth 5, width permanent. The field list (opens in a new tab)
Verifier keys on chain
Each pinned by hash in the deploy record.
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 →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)
Commit, prove, refuse.
The mechanics behind the plain answers on the buyer's screen.
- 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. - 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.
- 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.
Clone the repository
The README covers compiling the contract and running the test suite.
git clone https://github.com/VINPassport/VINPassport.git cd VINPassport
More for builders
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 →