Somebody did the thing, uploaded the proof, paid the gas, and their claim is on the contract. The issuer opens the bounty and the app shows an empty page. They cannot accept a claim they are never shown, so the prize stays escrowed and the claimant is never told why.
What the two sides say
For every bounty in the payout queue, this page walks
bountyClaims(bountyId, i) on the deployed contract until it reverts, reads each
claims(id) struct, and keeps only the claims whose bountyId field
points back at the bounty. Then it asks poidh's own endpoint,
poidh.xyz/<chain>/bounty/<siteId>/data, for the same bounty.
| chain | id | bounty | prize | on chain | site | the claims the site omits |
|---|---|---|---|---|---|---|
| base | #265 | GM Farcaster Sponsor Referral Bounty | $1,278 | 2 | 0 | #1548 Done — 0x6e89e8e7…, 18 Jun 2026 #2104 My refferal on GM farcaster — 0xdb12b7b9…, 07 Aug 2026 |
| base | #204 | Interview a Politician About Crypto for The | $203 | 1 | 0 | #1396 Gm — 0x4d2fff56…, 01 Jun 2026 |
| base | #7 | hit it grip it and rip it 😤🏌️ | $95 | 2 | 0 | #102 This is for Poidh — 0x5864b747…, 29 Jan 2026 #1375 hit it — 0x921bc01f…, 30 May 2026 |
| arbitrum | #144 | find a ~30 year old textbook that beats Pang | $70 | 1 | 0 | #570 Found one — 0xb79cdabf…, 07 Aug 2026 |
| base | #120 | Battle for the Bronx | $30 | 1 | 0 | #831 Sedgwick Avenue — 0x6cc6f9a0…, 08 Apr 2026 |
| base | #102 | find a business with a Cascadia flag 🌲 | $19 | 1 | 0 | #417 Cascadia Flag Banner on Bookstore — 0xa75911d7…, 13 Mar 2026 |
| arbitrum | #116 | get out in a forest 🌲🌳🌴🍁 | $18 | 4 | 0 | #479 Natural forest — 0x8f2d6752…, 01 May 2026 #480 Went out with my distant cousin — 0xd6a3ea62…, 02 May 2026 #483 On Forest — 0x3be9815d…, 03 May 2026 #500 out in the Hoh — 0x10fc964e…, 10 May 2026 |
| arbitrum | #4 | Adel's for Arbitrum | $17 | 2 | 0 | #108 My Picture With Adel's Halal Food Truck — 0xebf1bff7…, 26 Feb 2026 #109 Good — 0x4ed31552…, 26 Feb 2026 |
| arbitrum | #115 | Highlight A Business That Gives Back 🏬 | $17 | 1 | 0 | #494 Free tests for the community — 0xc5412b7a…, 06 May 2026 |
| base | #90 | Group Cleanup Proof | $13 | 1 | 0 | #1026 Group clean ✅ — 0x3298a4c3…, 29 Apr 2026 |
| base | #160 | take a photo in Turkey | $13 | 1 | 0 | #1279 Antique pool — 0x0788bd04…, 16 May 2026 |
| base | #163 | find poidh in Seattle 📍 | $8 | 2 | 0 | #1094 Easy find — 0xebc6fb83…, 04 May 2026 #1359 This is the poidh sticker I found on the Kenny’s pic — 0xbdf8181c…, 27 May 2026 |
| base | #164 | find poidh in Seattle 📍 | $8 | 3 | 0 | #987 Poidh — 0xb464fc1d…, 25 Apr 2026 #1093 Gm — 0xebc6fb83…, 04 May 2026 #1146 Poidh In Seattle — 0x8d2a253a…, 06 May 2026 |
| arbitrum | #125 | #busch4busch | $8 | 1 | 0 | #557 busch beer — 0xf3542fbf…, 15 Jun 2026 |
| base | #166 | Louis posts beautiful Glia shell code | $6 | 1 | 0 | #1402 Glia shell — 0xaf21d6f7…, 02 Jun 2026 |
Why this is not a measurement error
- The two sides are the same bounty. poidh numbers bounties differently from the
contract (base +986, arbitrum +180, mainnet +0, degen +0), and fetching the wrong
id would produce exactly this result for free. Every row above is checked twice: the
endpoint's own
onChainIdmust equal the contract's id, and the titles must match. Rows failing either check are dropped, and this run dropped 2. - The claims really belong to these bounties. A claim id appearing in
bountyClaimsis not enough; eachclaims(id).bountyIdis read back and has to agree. - It is not the paginated-getter bug. This walks the array index by index rather than
using
getClaimsByBountyId, whose offset argument does not advance (contracts #1441). Every bounty here has four claims or fewer, well under that getter's page. - It is not moderation. Each response carries an empty
banlist and sayshasClaims: false— the indexer is not hiding these claims, it has no record of them. - It is not only old data. The claims below span Jan 2026 to Aug 2026, so whatever the cause, it did not stop.
- A dead RPC is not an empty array. The walk ends on an actual revert. An endpoint that times out is retried on the other endpoints and raises rather than being counted as the end of the list — that failure mode shortens every list in the direction that would flatter this page.
Separately, 13 more bounties have some claims indexed and others missing, which is the same problem in a form that is harder to notice: the issuer sees a plausible-looking list and picks a winner out of it.
If it is your bounty
This page reads the claim list off the contract instead of the
indexer, so it shows the entries above, and it sends the payout call
(acceptClaim, or submitClaimForVote when the bounty has had an
outside contributor) from your own wallet. It never sees a key.
Raw output, both sides, one row per bounty: invisible.json.