Track

Climate Data & Environmental Monitoring. Fire Watch turns public satellite fire data into records that two sides of a dispute can check for themselves, without trusting Fire Watch.

Inspiration

Watchdog groups watch plantation land in Indonesia by satellite. When a concession burns, they file a grievance with the companies that buy from it. Companies answer in two ways: the fire "originated outside" and spread in, or the allegation "does not identify the specific sites, dates or the basis" for it. The buyer then holds two accounts of one fire and nothing shared to check them against. Fires keep coming back to the same concessions almost every year.

What it does

Fire Watch reads NOAA-20 fire detections from NASA FIRMS every hour, matches them to pulpwood concessions on Trase's map of Indonesia, and seals each record's fingerprint on Base Sepolia, a public test blockchain. For one fire it shows:

  • Where its records first place the fire, against the concession's edge. It names a side only beyond 375 m from the edge, and says "first seen", never "started".
  • How it spread, replayed one satellite pass at a time.
  • An estimate of its damage: the ground that likely burned, the COâ‚‚ and the cost, split at the concession's edge.
  • A complaint pack at one link, printable to PDF. The buyer's browser rebuilds each record's fingerprint and checks it against the chain, and says how long after the satellite's pass each was sealed.

The example pack is a real fire at ID-WOOD-CONCESSION-0332 in Central Kalimantan: first recorded 3,100 m outside the concession on 12 Oct 2026, then 283 detections over 8 passes, 164 of them inside. The record doesn't decide the case. It gives both sides the same checkable facts, gaps included.

How we built it

  • Recorder (Python, Azure Container Apps job, hourly): pulls FIRMS, matches detections to concessions in PostGIS, and seals one Merkle root per run on a FireRuns contract (Solidity, Foundry).
  • API (FastAPI, Neon Postgres): groups detections into fires, works out the first sighting, spread and damage by a published rule.
  • Page (React, TypeScript, Vite, Google Maps, Azure Static Web Apps): the tool, the landing walkthrough and the complaint pack. Seals are checked in the visitor's browser with viem, not on our server.
  • Everything runs at $0 on free tiers.

Challenges

  • Claiming no more than the data shows. Two hostile reviews found claims the chain didn't support — "started", "every record", "the satellite first saw it" — and each one was cut back.
  • One transaction per detection was too slow and too costly, so runs moved to one Merkle root each, with a recorder key an owner key can replace.
  • The damage estimate first overstated burned ground; it now uses shares Fire Watch measured against NASA's MODIS burned-area map for 2023.

What we learned

A seal only proves a record hasn't changed since it was sealed, not since it was seen, and not that nothing was left out. Each of those needed its own check or its own caveat.

Limits

No watchdog or buyer has tested it yet. It reads one satellite and one map. Seals sit on a test network. The damage is an estimate, and the spread forecast is weak on a 2023 replay, so the complaint pack leaves it out.

What's next

More concession maps, more satellites, and Base mainnet once the cost per run is known.

Links

Built With

Share this project:

Updates

Submission history