Inspiration
What it does
How we built it
Challenges we ran into
Accomplishments that we're proud of
What we learned
What's next for CarbonTruth
Inspiration
In 2023, a study in Science examined voluntary forest-carbon credits and found that the vast majority did not represent real, additional carbon — inflated baselines, weak additionality, systematic over-crediting. That finding stuck with us: every phantom credit is a tonne someone paid to remove that is still sitting in the atmosphere.
The reflex answer in our space is "put it on a blockchain." But a ledger only proves a number never changed — not that it was ever true. Write a bad baseline on-chain and you've made the lie permanent and tradeable. That gap — the oracle problem — is the half everyone skips, and it's the half that actually matters. We built CarbonTruth to close it: the trust layer that sits in front of the chain, not just on it.
What it does
CarbonTruth turns raw satellite pixels into a Verified Climate Claim (VCC) — a receipt that is:
- AI-measured from independent Earth-observation data,
- consensus-verified by multiple independent oracles,
- anchored on-chain with an evidence hash, and
- globally unique via a geo-temporal fingerprint, so it can never be double-counted.
In the live demo you are the verifier: pick a real reforestation project, submit a claim, watch the oracle network agree (or reject an over-claim), mint the VCC, trade it, retire it once, and even try to forge the ledger — and watch it break.
Verify once, trusted everywhere.
How we built it
The pipeline is four auditable stages: observe → estimate → verify → mint.
1. Observe. We pull Sentinel-2 optical bands over the plot (before/after) and compute vegetation index from the red and near-infrared bands:
$$\mathrm{NDVI} = \frac{B_{08} - B_{04}}{B_{08} + B_{04}}$$
Scene discovery runs against Microsoft's Planetary Computer STAC through a Vercel serverless function — no API key required.
2. Estimate. The carbon number is not a hand-tuned curve — it's a trained neural network. We trained a multilayer perceptron ($6 \rightarrow 32 \rightarrow 16 \rightarrow 1$, ReLU) on GEDI-calibrated data, mapping spectral features $(\mathrm{NDVI}, \mathrm{SAVI}, \mathrm{NIR}, \mathrm{red}, \text{ratio}, \mathrm{NDVI}^2)$ to aboveground biomass. Biomass converts to CO₂e with the IPCC carbon fraction $CF = 0.47$:
$$E = \mathrm{AGB} \cdot CF \cdot \frac{44}{12}$$
The model reached $R^2 \approx 0.98$ on held-out data. Crucially, we froze the weights to JSON and wrote a pure-standard-library forward pass, so the trained net runs client-side with zero dependencies.
3. Verify. Multiple independent sources (optical, lidar, archive) each produce an estimate $m_i$ with uncertainty $\sigma_i$. We fuse them by inverse-variance weighting:
$$\mu = \frac{\sum_i w_i m_i}{\sum_i w_i}, \qquad w_i = \frac{1}{\sigma_i^2}$$
A claim clears only if confidence passes the gate $\theta = 0.90$ and a $k$-of-$n$ quorum agrees. Spoof one feed and it's rejected as an outlier.
4. Mint. Verified claims are appended to a SHA-256 hash-chained ledger, each block linked to the last:
$$h_n = \mathrm{SHA\text{-}256}\big(h_{n-1} \,|\, \text{payload}_n\big)$$
A geo-temporal fingerprint enforces retire-once uniqueness, and recomputing the chain makes any tampering evident instantly.
The prototype is deployed on Vercel (static front end + a serverless STAC function) and auto-deploys from GitHub. One primitive — the VCC — spans all four ClimateChain tracks: AI/data verification, the MRV evidence trail, on-chain integrity, and portable trust.
Challenges we faced
- Keeping the math honest while keeping it in the browser. We wanted a real trained model, not a toy, but also zero backend for inference. Freezing the MLP to JSON and reimplementing standardization + the forward pass by hand — then calibrating the biomass backbone so a canonical plot landed at a realistic $\approx 4{,}096$ tCO₂e — took several training/validation cycles.
- Making fraud visible, not just handled. A rejection that happens silently convinces no one. We designed the demo so an over-claim is caught live on screen and a forged block visibly breaks the chain.
- A subtle front-end bug. Our scroll-reveal animation started the demo panel at
opacity: 0and relied on an IntersectionObserver to un-hide it — so the pipeline sometimes animated behind an invisible panel. We fixed it by force-revealing the demo the instant any run starts, so the sequence always reads continuously. - Framing. The hardest part wasn't code — it was articulating why blockchain alone fails. Landing the oracle-problem framing is what makes the whole project click.
What we learned
- Trust is the product, not tonnes. The market isn't short on demand; it's short on proof. That reframing drove every design decision.
- Verification has to be adversarial by design. Consensus, outlier rejection, and replay protection matter more than any single clever measurement.
- Published science beats black boxes. Grounding the estimator in peer-reviewed allometry (Chave et al., 2014) with transparent uncertainty is what makes the number defensible to a buyer or a regulator.
References
- West et al., Science (2023) — systematic over-crediting. doi:10.1126/science.ade3535
- Chave et al., Global Change Biology (2014) — pantropical allometric models. doi:10.1111/gcb.12629
Built With
- css3
- github
- html5
- javascript
- microsoft-planetary-computer
- nasa-gedi
- node.js
- numpy
- python
- scikit-learn
- sentinel-2
- serverless
- stac
- vercel
- web-crypto
Log in or sign up for Devpost to join the conversation.