Inspiration
Carbon markets only work if a credit means one real tonne removed, once. Today the same forest can be sold twice, evidence gets recycled across projects, and verification is slow and opaque. Buyers can't tell good credits from bad ones. We built CarbonTrust to make double counting structurally impossible and fraud visible before credits exist.
What it does
CarbonTrust is an on-chain carbon credit registry with a built-in risk engine.
- Double counting reverts on-chain. Each project claims geohash cells. If any cell overlaps an existing project, or an evidence hash is reused, registration fails at the contract level.
- Credits have a full lifecycle. Issued, transferred, and retired. Retiring burns the credits and emits a public receipt, shown as a printed registry-style certificate.
- Every project gets a risk score (0-100). Signals include credits-per-hectare vs. methodology benchmarks, z-score anomaly detection, area inflation, protected-area overlap, reused documents, and vintage anomalies. Each score comes with plain-language reasons and a report hash.
- Public dashboard. A Leaflet map, a credit explorer with lifecycle timeline, red/amber/green risk badges, and a live overlap-alert feed.
- One-click demo. Register a legitimate project, watch a duplicate get rejected, see a fraudulent project flagged, then retire a credit and get a receipt.
How we built it
- Contracts: Solidity ERC-1155 registry with Hardhat. 10 on-chain invariants, 100% line coverage, and tests for 8 double-count attacks (same land under a new ID, partial overlap, reused evidence, double issuance, selling after retirement, double retirement, and more).
- Risk engine: deterministic TypeScript with no external API calls, so results are reproducible and free to run. Rules plus z-score anomaly detection.
- Frontend: Next.js, Tailwind, and Leaflet, designed as a "field ledger" public-record interface.
- Network: local Hardhat for the demo, targeting Base Sepolia.
Challenges
- Solidity's "stack too deep" error forced us to restructure registration around a struct.
- Efficient on-chain overlap checks: we used precision-6 geohash cells to keep gas manageable.
- Making the risk engine deterministic (no clock or network dependence) so the same input always gives the same score.
What we learned
Transparency needs both layers: hard on-chain guarantees for what can be enforced, and explainable scoring for what can't.
Track alignment
Carbon Markets & Emissions Transparency. Blockchain-based credit verification, smart contracts that prevent double counting, and a transparent public registry.
Scalability and adoption
- Geohash cell sets scale to large projects, and the registry can move to an L2 for low fees.
- Registries like Verra and Gold Standard could mirror their issuances into CarbonTrust as an independent double-count check.
- The risk engine can later take satellite and IoT data as additional signals.
- Buyers and auditors can verify any credit's history and risk score without trusting an intermediary.
What's next
Deploy to Base Sepolia, add satellite-based evidence verification, and integrate with existing registry APIs.
Built With
- base
- blockchain
- erc-1155
- ethereum
- ethers
- geohash
- hardhat
- leaflet.js
- nextjs
- openzeppelin
- react
- solidity
- tailwindcss
- typescript
Log in or sign up for Devpost to join the conversation.