FishinhoodFISHINHOOD$FIH

Don't trust us. Check.

Every trigger publishes signed telemetry, hash-chained video segments, a drand round, and Merkle roots — enough for a stranger with no relationship to us to re-derive every result. We built the tool that would catch us cheating.

Telemetry hash-chain head

live at launch

Once the rig is streaming, the live hash-chain head — updated every frame and anchored on-chain every 1,000 blocks — appears here, so anyone can pin the exact telemetry that drove any trigger.

drand shuffle history

Every round's committed drand round and revealed zone map will list here after launch. Each drand round number is committed on-chain before that beacon exists — grinding is impossible; the only choices are the one true signature or a detectable fake. Nothing to show yet — the first round writes the first row.

The verifier CLI

Open source, standalone, no account needed: packages/verifier in the public repo.

  • fih-verify verify-beacon <round>

    fetch a drand beacon and BLS-verify its signature

  • fih-verify verify-shuffle <roundId> <sig> <mapping>

    re-derive a round's zone shuffle

  • fih-verify verify-chain <telemetry.jsonl>

    check the telemetry hash chain + Ed25519 signatures

  • fih-verify verify-payout <round.json> <address>

    recompute a Merkle root and check a payout

  • fih-verify verify-jackpot <tickets.json> <sig> <roundId>

    re-derive a jackpot winner

  • fih-verify recompute-twab <checkpoints.json> <window>

    reproduce the full TWAB distribution

Threat model, honestly

No. The effect→zone map is committed on-chain from drand randomness before each round opens. The edge box can only report a cell; the contract rejects any effect that doesn't match the committed map. Even a fully compromised operator key can't choose the effect.

Full written threat model ships in the repo (docs/threat-model.md) — including what an operator with physical access could still do, and what it would cost them. Pick any trigger and start checking →