Inspiration

Carbon credit double-counting costs the voluntary market billions in credibility. Verra, Gold Standard, and CAR run separate registries with no cross-registry overlap detection. A bad actor can register the same forest parcel under different names across registries and collect credits twice. I wanted to build something where the land itself — not the project name — is the unique identifier, enforced on-chain where no single party can override it.

What it does

VeriCarbon checks every carbon credit submission in three stages: 1) Satellite verification: NDVI analysis checks whether the claimed land has vegetation. 2) Duplicate detection: H3 hexagonal indexing and fuzzy entity matching identify potential overlaps across registry entries. 3) On-chain enforcement: An Ethereum smart contract rejects submissions containing already-claimed H3 cells, even if the project name and organization are different.

How we built it

I developed the smart contract in Solidity and deployed it to Ethereum Sepolia using Foundry. The Python FastAPI backend handles satellite verification, geospatial processing using H3 and Shapely, and entity matching. The React and TypeScript frontend provides an interactive map, pipeline visualization, and analytics dashboard. I also implemented AccessControl-based validator governance, requiring two independent validators to approve a project before it reaches Verified status.

Challenges we ran into

Getting H3 hexagonal cells to work across the full stack was the hardest part. The cells need to be computed in Python (geospatial layer), converted to uint64 for Solidity storage, and compared across submissions for overlap detection — all while keeping gas costs manageable for polygons with hundreds of cells. I also had to handle the partial-overlap edge case carefully: the off-chain risk score might say LOW when names don't match, but the on-chain guard still needs to catch the shared cells.

Accomplishments that we're proud of

The demo's third scenario tells the whole story. A user draws a polygon that partially overlaps an existing registry entry, enters a completely different name and organization, and the off-chain duplicate check scores it as LOW risk. A name-based system would approve it. But our smart contract still rejects it — CellAlreadyClaimed. You cannot rename your way past geometric truth. That single interaction demonstrates why on-chain spatial enforcement matters more than string matching.

What we learned

I learned that off-chain checks alone cannot guarantee that the same land will not be claimed twice. Names and organizations can change, but the geographical overlap remains. By storing H3 cell ownership on-chain, VeriCarbon adds an enforcement layer that prevents conflicting claims. I selected H3 resolution 7 to balance spatial precision and gas costs, with typical parcel operations designed to stay below 20 million gas.

What's next for VeriCarbon: Satellite + Blockchain Carbon Integrity

Integration with real Sentinel-2 satellite imagery via STAC endpoints — our pipeline already supports live mode, I ran the demo in synthetic mode for deterministic results. Cross-chain deployment so multiple registries can share one cell-ownership map without trusting a single chain. And a validator incentive layer where independent attestors stake tokens against their verification accuracy, creating economic accountability for every carbon credit that gets issued.

Built With

Share this project:

Updates

Submission history