₹144 crore lost to
fake institutes.
Scholarship money follows paper that nobody checks at scale. Mohar puts issuer accreditation, tamper-proof credentials, and live revocation on chain. A scheme officer screens a thousand applications without seeing a single name or income. When an audit finds a fake institute, one revocation flips every credential it ever issued.
- applications screened, zero false flags
- 1,000
- applications screened, zero false flags
- gas per credential on Base Sepolia
- 542
- gas per credential on Base Sepolia
- servers in the verify path
- 0
- servers in the verify path
Acharya Institute of Technology
acharya.ac.in
Sealed Credential
Issued to
Ananya Rao
Document title
Enrolment Certificate · B.E. AI & ML
Year 3 · Active
15 July 2026
Issued on
MHR-Y5R9-A42P-SZC2-E
Sealed on a public blockchain. Verifiable by anyone, without trusting the issuer's website.
- IssuerMinistry-listed institute
- Domainacharya.ac.in vouches
- SignatureEIP-712 · matches
- RootAnchored · batch root
- StatusNot revoked right now
Every one of these attacks is caught in the test suite against a live chain.
Why this matters
830/1,572
institutions in one scholarship audit were alleged to be non-operational, fake or partly fake.
About ₹144 crore of scholarship money went to them between 2017-18 and 2021-22, according to a CBI case registered in August 2023. The money followed paper: enrolment letters and certificates nobody could check at scale.
Figures as alleged in the FIR and reported in Parliament. Mohar's demo uses synthetic people and demo issuers only.
Bulk screen · 120 synthetic applications
Before the audit
2
flagged invalid
Animation: 120 applications are screened. After the authority revokes one institute with a cut-off date, the ten applications that used its enrolment certificates turn invalid, with no file re-uploaded.
- 01
Authority
lists each institute and revenue office on chain, with its type and who vouched for it
- 02
Issuers
use AI to digitise legacy paper records, then seal enrolment and income certificates on chain
- 03
Student
shares one bundle with only the flags the scheme asks for. No name, no income figure, no address
- 04
Officer
drafts scheme rules from legal text using AI, then screens a thousand applications at once
AI strictly for administration. Officers use LLMs to translate legal texts into JSON checklists, and issuers use OCR+LLMs to digitize legacy paper. The AI never touches the cryptography or decides a verification verdict.
Honest limits. Income and caste flags are signed by the issuer, not zero-knowledge proofs. Mohar cannot tell if a genuine institute enrols a fake student, and it cannot stop a valid bundle being handed in twice; it flags duplicates. It is designed for data minimisation and claims no legal compliance.
Open the demo room →Try it yourself · about 3 minutes
No wallet. No install. Everything checks against the live chain.
Follow the four steps in order. Each one tells you which file to download, where to drop it and what you should see. All data is synthetic and every issuer is labelled DEMO. Contracts run on Base Sepolia.
- 1
Anyone
Verify a certificate on your own phone
- Open the demo room on this screen.
- Scan any QR card with your phone camera (mobile data is fine).
- Try Valid, then Tampered, Revoked and Expired.
You should see
VERIFIEDTAMPEREDREVOKEDEXPIRED - 2
Student
Apply as a student, without oversharing
- Download Kavya's three sealed certificates.
- On the scholarship page, keep “I'm a student” and drop all three in.
- See what leaves your device and what stays, then click “Download application.mohar”.
You should see
Only yes/no flags leave · income stays hidden - 3
Officer
Decide as the scholarship officer
- Click “I'm an officer” at the top of the scholarship page.
- Drop the application.mohar you just downloaded.
- Then drop the forged one below: its income certificate was edited.
You should see
Yours: ELIGIBLEForged: INVALID · income TAMPERED - 4
Officer, at scale
Screen a whole district's batch
- Download the batch of 27 applications.
- Drop the ZIP on the bulk screen. Every seal is checked in your browser.
- Filter by verdict, open a row for its reason, export CSV. Look for app-0015: a fake institute.
You should see
Eligible / not eligible / invalid, each with a reasonapp-0015 flips to ISSUER_REVOKED once the audit revokes its institute
Bonus: on the scholarship page, let AI draft a scheme's rules from plain English. You confirm every requirement. AI never decides a verdict.
Three questions, answered by math
A verdict you don't have to take on faith.
01 · WHO
Who issued it?
The signing key is accredited in an on-chain registry, and the institution's own domain publishes a DNS record naming that key. Two independent roots of trust.
02 · WHAT
Was anything changed?
Every field is salted and hashed into a Merkle tree. Edit a single character and Mohar tells you exactly which field was forged.
03 · NOW
Is it valid right now?
Revoked, suspended, expired: read live from the chain, with the reason and the date.
Active
Suspended
Active
Revoked
04 · PRIVACY
Share only what you choose
Holders hide their income or address. What they reveal still verifies.
05 · SCALE
1,000 certificates, one transaction
A batch anchors a single root. Each certificate carries its own short proof.
Gas per certificate as the batch grows: about 580 at 200 certificates.
06 · INDEPENDENCE
Works even if we disappear.
Verification runs in your browser and reads the chain through independent providers that must agree. Don't trust the page? Every result comes with the exact command to check it yourself.
$ cast call 0xe7f1…0512 "getCert(bytes32)" 0x3fa9…c21e \
--rpc-url $RPC
→ 1 # state: 1 = Active0
applications screened
bulk verdict equal to the single check on every one, 0 false flags
0
gas per certificate
measured on Base Sepolia in a 200-certificate batch
0
contract tests
unit, 1,000-run fuzz, invariants and a hostile pass
0
personal data on chain
only a 32-byte root ever leaves the browser
How a seal is made
Four steps.
Zero trust required.
The issuer does three. The whole world can do the fourth, forever, for free, with nothing but a browser or a terminal.
01Hash
In the issuer's browserEach field gets a random 32-byte salt and becomes a leaf. The leaves form a Merkle tree. Salts mean nobody can guess a hidden income by hashing candidates.
leaf = keccak256(keccak256( abi.encode(path, value, salt))) root = MerkleTree(leaves).root02Sign
The issuer's walletThe accredited key signs the root as typed EIP-712 data, bound to this chain, this contract and a nonce. The signature cannot be replayed anywhere else.
Issue(address issuer, bytes32 root, uint64 expiresAt, uint256 nonce) domain: "Mohar" v1 · chainId · registry03Anchor
One transactionOnly the 32-byte root lands on chain, with no names and no incomes. A batch of a thousand certificates is still one root and one transaction.
CertificateRegistry.issue(root, exp, sig) → certId = keccak256(root) → MHR-7F3K-92QD-X4MP-C04Verify
Anyone, anywhereThe verifier rebuilds the root from the document, checks it against the chain through independent providers, then checks the issuer, the DNS record and the live status.
verify(file) → { verdict: "VERIFIED", checks: 5/5, providers: { asked: 2, agreed: 2 } }
Twelve precise verdicts
Not just “invalid”.
A revoked institute, a forged income flag and an unreachable network are different problems. Mohar names each one, and never confuses “could not check” with “fake”.
Authentic
Issued by an accredited issuer, anchored on chain, and still in good standing.
Authentic, domain unchecked
Everything on chain checks out, but the issuer's domain could not be checked live right now. The accreditation authority's earlier confirmation is shown below.
Revoked
The issuer withdrew this certificate. It was genuine once, but it is no longer valid.
Suspended
The issuer has put this certificate on hold. The hold can be lifted, so check again later.
Expired
This certificate was genuine, but its validity period has ended.
Do not trust
What you are looking at does not match what the issuer signed. Treat this document as forged or altered.
Unknown issuer
The signer is not an accredited issuer, or its domain no longer vouches for it.
Issuer key revoked
The key that signed this certificate was revoked as of a date before it was issued.
No record found
Nothing on chain matches this certificate. It may be forged, or issued on a different network.
Wrong network
This certificate lives on a different blockchain from the one this verifier reads.
No verdict
We could not reach enough independent blockchain providers to answer. This says nothing about the certificate being good or bad.
Could not read
That input is not a Mohar certificate link, code or file.
One protocol, five doors