Live on Monad testnet · chain 10143

Satellites see the smoke. Nobody pays the person who reaches it.

Indonesia's fire season is a detection problem that was already solved — and a last-mile problem that was not. ASAP turns a hotspot into an on-chain bounty and pays the first responder who can prove they got there.

asap (n., Indonesian) — smoke.   ASAP (adv.) — how fast the payout clears.

The ASAP map showing fire hotspots read from Monad: 80 hotspots on-chain, 3 bounties open, and the detail panel for hotspot 5 with a 0.010 MON pool and bond.
The live app, not a mockup. 80 hotspots read one by one from HotspotRegistry — no indexer, no backend, no database.

The gap, in three numbers

17,108 hotspots detected across Indonesia in a single day, 26 provinces under haze. SiPongi · Kementerian Kehutanan · 12 Oct 2026
22,760 detections inside the bounding box we publish on-chain, from a different sensor and window. NASA FIRMS · VIIRS SNPP C2 NRT
0 of those coordinates carried a budget, a proof of arrival, or a payment. that is the part we built

Somewhere past this track is a hotspot the satellite already recorded.

Nobody is on this road — and until now, nothing would have paid them if they were.

How a fire gets answered

Four steps, one block.

Detect

An oracle commits the hash of the raw FIRMS file, then publishes the parsed rows. Anyone can re-download it and prove it was not altered.

HotspotRegistry
Fund

Whoever carries the risk opens a bounty on that coordinate: a concession, a carbon project, a CSR budget, a local disaster agency.

escrow in MON
Respond

A responder stakes a bond and submits geotagged evidence — a photo, hashed and stored content-addressed. The contract enforces radius and time.

bond ≥ pool
Settle

Two verifiers attest and the payout clears. Two rejections slash the bond and reopen the bounty. Nobody shows up, and the expiry is public.

quorum = 2

Mechanism

Two ways to make a fire expensive

Permit bond
Bounty
Who pays
Permit bondthe liable company, into a restoration fund, after the burn
Bountythe responder, into their own wallet, in the same block
Who acts
Permit bondan officer who is already on payroll
Bountywhoever gets there first
Where it works
Permit bondonly inside a registered concession
Bountyany hotspot, no permit or registry needed
When nobody comes
Permit bondthe case stays open, nobody is named
BountyBountyExpired on chain: the fire is on record as unanswered

A bond punishes someone after the land has burned. A bounty pays someone to reach the smoke while it is still small. Both belong in the same country; only one of them moves a person.

Why it does not get gamed

A fake report has to be more expensive than it is worth.

  • ✓Bond equals the pool. Claiming costs as much as the reward, so lying is strictly unprofitable — and the honest responder gets it back.
  • ✓Evidence cannot predate the satellite pass. The contract checks the capture timestamp against the hotspot's acquisition time.
  • ✓Distance is enforced on-chain. A flat-earth approximation within 8° of the equator, accurate to about 1% — 25 km radius.
  • ✓Expiry is a feature. A bounty nobody answered stays on the public record as a fire that was funded and ignored.
// the claim that matters
claim(bountyId, evidence, lat, lon, capturedAt)
  payable(bond) · within 25 km · after acqTime

// two of these settle it
attest(claimId, true)

What is actually deployed

180high-confidence hotspots published on-chain in one batch, anchored to the source file hash.
2contracts, source-verified on Sourcify, holding zero balance in every terminal state.
<1 sfrom a verifier's second approval to the responder being paid. That is the Monad part.

What this does not do yet

Satellite data lags.

NRT is hours behind reality, and we never claim a fire is burning right now — only that it was detected in the last 24 hours.

Trusted quorum.

Verification is two whitelisted addresses today. v2 is stake-weighted verifiers with an appeal window.

Bond excludes the poorest.

A 100% bond makes fraud unprofitable, and also means a volunteer with no capital cannot respond. A cooperative bond pool is the fix.

Testnet only.

Contracts run on Monad testnet. No real money has moved, and none of this is an offer of insurance.