Inspiration
What it does
How we built it
Challenges we ran into
Accomplishments that we're proud of
Inspiration Since 1 January 2026, every tonne of cement, steel and aluminium entering the EU carries a carbon price under CBAM. Türkiye supplies close to a third of the EU's imported cement, yet most emissions evidence is still a spreadsheet. Exporters that can't prove their real emissions pay on default values with a mark-up. And carbon price already paid at home can be claimed twice by different importers. We wanted proof that anyone can check and no one can quietly change. Mizan is Turkish for "balance", the scales of account.
What it does Mizan turns the meters inside a factory into verifiable evidence, from meter to customs:
Measure: every meter signs each 15-minute reading with ML-DSA-44, the NIST post-quantum signature standard (FIPS 204). Detect: an AI integrity engine scores every interval with five independent detectors and explains each finding in plain language. A human verifier decides, and that decision retrains the model. Anchor: readings are sealed every 6 hours into a Merkle tree and anchored on-chain with their emissions and risk score. An accredited verifier attests each window on-chain. Certify: one ERC-721 certificate per shipment. The contract computes embedded emissions itself and lets each tonne, each euro of carbon price paid in Türkiye, and each CBAM deduction be used exactly once. Verify: a public verifier checks signatures, Merkle proofs and contract state in the visitor's own browser, without trusting Mizan's server. Plan: a CBAM exposure planner projects costs from 2026 to 2034 and prices decarbonisation levers such as renewable power, fuel switching and lower-clinker cement. How we built it Contracts: three Solidity smart contracts (MizanRegistry, MRVLedger, EmissionsCertificate) on OpenZeppelin 5, tested with Hardhat. Backend: a TypeScript Fastify API with SQLite. AI integrity engine: an isolation forest written from scratch, robust statistics, physics and mass-balance limits, and noisy-OR fusion of the detectors. Meter simulator: signs readings with ML-DSA-44 using @noble/post-quantum. Frontend: React + Vite. It re-verifies proofs directly from the chain with ethers.js. Hosting: the backend runs on Render and the frontend on Cloudflare Pages. Challenges we ran into Size of post-quantum signatures: ML-DSA signatures are far larger than ECDSA ones, so batching, storage and request limits had to be designed around them. Transaction nonces: concurrent on-chain writes collided on nonces. We fixed it with a per-wallet transaction queue and by disabling RPC caching. Making the AI explainable: turning anomaly scores into explanations a verifier can act on, such as "0.297 kWh/kg is below the physical minimum of 0.330". Trustless verification: the browser had to check everything on its own instead of trusting our API. Deployment: we packaged the chain, API and live meter simulation into a single cloud service. Accomplishments that we're proud of A full end-to-end system, not mock-ups: meter → AI → chain → certificate → public verification. Live tamper detection: a grid meter altered to report 68% of real load is flagged within one interval, with an estimate of the CO₂e it would have hidden. Double claims are blocked by the smart contract (AlreadyClaimed). A value edited directly in the database fails the signature, Merkle and on-chain checks. 13 contract tests plus unit tests, run in CI on every push. What we learned CBAM's real weak point is trust in the data, not calculating carbon prices. Post-quantum cryptography is practical today, even on small devices. An AI flag only earns trust when a human can see why it fired and has the final decision. A blockchain is most useful as a shared record that prevents double counting, not as a database. What's next for MIZAN Pilot with a Turkish cement or steel exporter using real meters and hardware-secured keys. Deploy to a public testnet, then a permissioned network for accredited verifiers. Map outputs directly to the EU CBAM Registry reporting format. Connect with Türkiye's ETS so carbon price paid at origin is recognised automatically. Extend to fertilisers, hydrogen and electricity, the remaining CBAM sectors.
What we learned
What's next for MIZAN
Built With
- css-frameworks-and-libraries:-react
- ethers.js
- fastify
- github-actions-(ci)
- github-databases:-sqlite-apis:-ethereum-json-rpc
- hardhat
- html
- javascript
- merkle-proofs-if-the-form-only-takes-single-tags
- openzeppelin
- react-router
- server-sent-events-for-live-updates-blockchain:-ethereum-(evm)
- solidity
- sql
- use-these:-typescript
- vite
- ypescript
- zod
Log in or sign up for Devpost to join the conversation.