Track
Carbon Markets & Emissions Transparency: improving trust, transparency and efficiency in carbon markets by preventing over-claiming and double counting.
Inspiration
Investigations of major forest-offset programmes have found that a large share of credits did not represent real emission reductions. The reasons are consistent: project developers overstate how much forest they protect, forests get cleared after credits are sold, and verification is slow, paid for by the seller, and done on paper. Once a bad credit enters the market, there's no reliable way to trace or cancel it. We wanted a system where a credit cannot exist unless the forest behind it can be seen from space, and where its whole life, from issuance to retirement, is public.
What it does
CarbonLens is a verification-to-issuance pipeline for forest carbon credits.
- Sees the forest. For each project, it reads baseline and current multispectral images (blue, green, red, near-infrared, short-wave infrared) and classifies every 10 m pixel as forest or not.
- Measures honestly. It bias-corrects the mapped area with the model's own accuracy matrix and credits only the lower 95% confidence bound, so model error can never inflate credits.
- Catches clearing. It compares baseline and current maps. Loss beyond the model's measured false-change rate is treated as a carbon reversal and subtracted.
- Issues on-chain. The result goes to the CarbonRegistry smart contract, which mints
min(claimed, verified)credits, flags over-claims, assigns each credit a unique serial number, and stores the SHA-256 hash of the full AI report. - Prevents double counting. A monitoring period can be verified only once. Retired credits leave circulation permanently and can never be transferred or retired again.
- Shows the evidence. A dashboard shows each project's claim against what the imagery supports, the evidence maps, and the on-chain receipt.
In the demo, five projects claim 71,100 credits. CarbonLens issues 21,785 and blocks 49,315 unsupported credits. It catches one project overstating its forest area by 1.8× and two projects that cleared forest after claiming credits.
How we built it
- ML (Python, scikit-learn): a random-forest classifier on 5 spectral bands plus NDVI, NDWI, NBR and EVI, with a 3×3 majority filter. Area estimation follows Olofsson et al. (2014), the standard method for area estimation from classified maps. Change detection subtracts the expected false-loss count and applies a 3σ significance test.
- Blockchain (Solidity, Hardhat):
CarbonRegistry.sol, with verifier roles, per-period verification, serial-numbered issuance, transfer, permanent retirement and public report-hash checks. 12 automated tests cover issuance caps, double issuance, serial uniqueness, retirement and access control. - Bridge (ethers.js):
anchor.jsdeploys the registry, records every AI report, and writes the ledger the dashboard reads. - Dashboard (HTML/CSS/JS): a single self-contained page that works offline and on mobile.
Challenges we ran into
Our first run rejected every project, honest ones included. The classifier was right 98.7% of the time, but across 16,000 pixels per scene that still produced about 1.5% fake "deforestation", and at roughly 550 tonnes of CO₂ per hectare of forest, that noise wiped out every claim. We fixed this the way remote-sensing practitioners do: majority filtering, measuring the false-change rate on held-out data and subtracting it, requiring statistical significance, and building confidence intervals from a realistic 800-point accuracy sample instead of every pixel. After that, honest projects passed and real clearing was still caught.
Accomplishments that we're proud of
- An end-to-end pipeline that runs from pixels to an on-chain credit in one command.
- Conservative-by-design crediting: uncertainty always reduces credits, never increases them.
- Contract guarantees backed by tests: no double issuance, unique serials, irreversible retirement.
What we learned
Accuracy alone is a misleading metric for carbon. A 99% accurate map can still create thousands of fake tonnes, so what matters is how error propagates into credits. We also learned that the blockchain's value here is narrow but real: it isn't where the truth comes from, but it makes the record of what was verified, issued and retired impossible to quietly rewrite.
What's next for CarbonLens
- Live Sentinel-2 ingestion through Google Earth Engine, with cloud masking.
- Above-ground biomass from GEDI LiDAR, to measure tonnes rather than hectares.
- Multiple independent verifier nodes with a dispute window before minting.
- An ERC-1155 interface so credits can trade on existing marketplaces.
- A pilot with a community forestry project in India's Western Ghats.
Prototype note
The prototype uses simulated Sentinel-2-style imagery (realistic reflectance per land-cover class) so judges can reproduce every number offline. Projects are fictional. Real tiles plug into the same pipeline through a loader.
Built With
- blockchain
- css3
- ethers.js
- hardhat
- html5
- javascript
- matplotlib
- numpy
- python
- scikit-learn
- scipy
- solidity
Log in or sign up for Devpost to join the conversation.