Starling Foundries· Field Notes · MMXXVI
14 July 2026

Prove the Work, Hide the Nests

A conservation team faces a real and recurring bind: to earn next season’s funding it must prove it covered the ground, but the evidence that proves coverage — where the nests are — is exactly what gets the birds poached. This note shows how the Burin stack resolves it with a zero-knowledge proof: the count and the region are public, and the locations are not in the proof at all.

The bind isn’t hypothetical. Ecologists routinely blur coordinates before publishing, and location leakage from field photos is a documented poaching vector — enough that parks post signs asking visitors to disable geotags. Land defenders documenting encroachment have the same structure of problem: the record needs to convince a court later without guiding a bulldozer now. The standard resolution is an auditor — someone trusted to see everything and repeat only the summary. That works exactly as well as the auditor is honest, unbribable, and unhackable, and it quietly reintroduces the central party the rest of this series has been working to remove.

Why a count is enough

The reason a bare count can replace an auditor comes from the equal-area grid. When every cell is the same share of the Earth’s surface, “we surveyed 5 distinct cells” is a statement about area, not paperwork. And distinctness is what makes it robust: a hundred photographs taken inside one cell count once, so there’s no route you can walk that inflates the number. The claim worth proving is exactly this: at least K distinct cells, all inside the public region R, are committed in this survey tree — and nothing further is disclosed.

That claim is now a real circuit, not a sketch. The survey is committed as a sparse arity-9 Merkle tree over Poseidon (a hash function designed to be cheap inside proof systems), with each leaf committing a cell, a salt, and one photograph’s fingerprint. The PLONK proof — 60,791 gates, proved against the public Powers of Tau ceremony, so there’s no bespoke trusted setup — verifies K Merkle paths against the committed root, checks that every path lands inside R, and requires the K cell identifiers to be strictly increasing. That last constraint is the entire distinctness argument: a strictly increasing list can’t contain a repeat. The verifier sees three public signals — root, region, count. Everything else is zero-knowledge in the technical sense: the cell locations aren’t just omitted from the output, the proof transcript carries no information about them.

as the warden sees it
nests 0 · distinct cells 0 · threshold K = 5 · not yet provable
· ·
Plate. The warden knows every nest. The proof the world checks carries the province, the root, and the count of distinct equal-area cells — nothing else. Note the cell holding two nests: it counts once. Distinct cells, not photographs, are what add up to ground covered. the funder is convinced; the poacher is not helped

Binding the photographs

A count of cells is only as trustworthy as what put them in the tree, so each leaf’s fingerprint isn’t arbitrary — it’s the digest of the photograph’s C2PA manifest, the content-credentials standard now shipping in cameras and editing tools, signed at capture. We generate the manifests with the standard c2patool and the circuit binds each of the K leaves to its manifest digest inside the proof. That fuses the effort claim and the provenance claim into one object: you can’t substitute a stock photo, and you can’t retouch one after the fact, without the proof failing to verify. One scope note, since precision matters here: the circuit binds the digests; verifying the C2PA signatures themselves is the verifier’s normal out-of-circuit step. The proof establishes that the photographs in the survey are bit-identical to the ones in hand — the camera’s signature then speaks for where they came from.

photograph gyrfalcon-nest-041.jpg
C2PA manifest digest ················
leaf — cell ‖ digest ‖ salt ················
survey root — committed ················
 
Plate. Each survey leaf commits the cell, a salt, and the photograph's C2PA manifest digest, so the effort proof and the camera's provenance stand or fall together. Real hashes here; in production the chain runs Poseidon inside a PLONK circuit of 60,791 gates. one byte is enough

A proof that stops growing

A season’s survey is one proof. A long-lived witness — a monitoring station, a satellite attesting for years — is a stream of them, one per epoch, and naively the verification burden grows with the stream. Recursion removes that. Using Nova, a folding scheme, each epoch’s root folds into a running proof whose size is independent of how many epochs it has absorbed. We measured this directly: at 4 epochs and at 16, the folded proof is 6,899,992 bytes — byte-for-byte identical — and verifies in about 11 ms either way. A final compression step (Groth16 over KZG, using sonobe’s lighter decider configuration) reduces that to 384 bytes, verifying in about 5 ms: roughly an 18,000× reduction, small enough to ride the same satellite channel as everything else in this series. The practical consequence: the verification cost of trusting a witness is fixed on day one and never grows, no matter how long the witness operates.

26,280 epochs · one per hour
every receipt, kept
6.1 MB and growing
the folded proof (IVC)
6.9 MB · ~11 ms · constant
the decider (Groth16+KZG)
384 B · ~5 ms · constant
log scale — on a linear one, both constant bars vanish inside year one
Plate. Slide the witness through a thirty-year career: the receipt pile compounds, the folded proof does not move, and the 384-byte decider — eighteen-thousand-fold smaller than the proof it compresses — still verifies in five milliseconds. The trust a verifier must extend is bounded on day one and never grows again. decades, checked in a blink

The pattern

The same move appears at every layer of this stack, and seeing it repeat is what convinced me it’s the right primitive. The fold proves coverage while hiding the resolution of the work. The survey proof proves effort while hiding the map. The recursion proves an entire operating history while transmitting almost nothing. In each case: commit to everything, reveal a property. And the layers compose — photograph into leaf, leaf into root, root into epoch, epochs into a 384-byte object a stranger can check in milliseconds.

Concretely, for the team in the opening paragraph: the warden keeps her map, the funder verifies arithmetic instead of trusting an auditor, and the poacher learns that somewhere in a few hundred square kilometers there are at least five nests — which he already knew.


← All notes