Track alignment
Double counting is this track's named core problem: the same carbon credit counted twice — issued twice, retired twice, traded after retirement — silently inflates claimed climate action. Registry Auditor is a deterministic audit tool for carbon-credit registries that detects exactly those failure modes and anchors every audit report to a smart-contract commitment, so a report can later be proven unaltered.
Problem
Registries publish credit lifecycles (issued / transferred / retired), but cross-checking them for double-counting is manual and episodic. Errors and fraud both survive because nobody re-runs the whole ledger, and an audit report itself can be edited after the fact.
Solution
The auditor ingests a registry dataset and runs four deterministic detectors — duplicate serials, double retirement, retired-then-traded, and quantity mismatch. Every finding quotes its evidence records; a clean dataset returns zero findings with the suspicious-but-legitimate patterns (near-misses) explained, because an auditor that manufactures fraud is worse than none. Each report is canonically hashed (SHA-256) and the hash is committed through a minimal smart contract (AuditAnchor.sol — commitment + timestamp, nothing financial). Recomputing the hash of any later copy proves whether it is the report that was anchored; the demo ends with a tamper test failing verification, live.
Verification dashboard
The repo ships dashboard.html: batch history, every finding with its evidence, the near-miss explanations, the anchor receipt, and a tamper demonstration — plus a "Recompute & verify" button that re-derives the report's canonical SHA-256 in the judge's own browser and compares it with the anchored hash (the in-browser canonicalizer is verified byte-identical to the Python canonical form). No install, no server, no trust in our say-so.
Users, scale, adoption
Registry operators and independent verifiers are the users: the tool runs locally on an export, needs no blockchain infrastructure to audit, and the anchor step is one $0 testnet transaction per batch. The ingest interface is a documented JSON shape that a real registry export (Verra / Gold Standard style) maps onto with minimal adapter code; the shipped dataset is a labeled synthetic fixture with all four failure modes planted plus clean near-miss cases.
What is real, what is labeled
Real: the four detectors, the evidence reports, the canonical hashing, the Solidity contract, the dashboard, and the test suite — 13 tests, all passing. The testnet deployment is fully kitted and preflight-proven (scripts/deploy_preflight.py prints READY with the exact bytes32 to commit); until the deploy transaction lands, the in-repo anchor is a clearly labeled local fixture implementing the contract's semantics — it is never presented as a blockchain. The dataset is synthetic and says so in the file itself.
Log in or sign up for Devpost to join the conversation.