Summary
The subgraph deterministically halts on any contract-creation transaction (tx.to == null) that emits a protocol event. On 2026-07-18 it froze Arbitrum One at block 485100965 (deployment QmUW5cHnwoSbiDUgWvUsAujEYaB5gjbWkPMNBP7H5XQVuf, subgraph FE63YgkzcpVocxdCEyEYbvjYqEf2kb1A6daMYRxmejYC) — all indexers health: failed, freezing every downstream consumer.
Root cause
The offending tx (0x1eb52cd3…) is a Tenderize unlock deployed via its constructor, so event.transaction.to is null (graph-ts types it Address | null). createOrLoadTransactionFromEvent only sets tx.to when a recipient exists, but Transaction.to is String!, so graph-node aborts:
missing value for non-nullable field `to`
This is the first contract-creation tx to emit a protocol event. Not specific to earningsClaimed — the helper is shared by 32 handlers across 11 contracts, so any handled event from a creation tx aborts the same way.
Fix
Make Transaction.to nullable (String! → String) — matches Ethereum/JSON-RPC and graph-ts (to: Address | null). No mapping change. → #245.
Alternative (#244): default to to the zero address — non-breaking, but reuses 0x0 as a stand-in for "no recipient." Merge one. Redeploy requires a full resync (grafting disabled).
Summary
The subgraph deterministically halts on any contract-creation transaction (
tx.to == null) that emits a protocol event. On 2026-07-18 it froze Arbitrum One at block485100965(deploymentQmUW5cHnwoSbiDUgWvUsAujEYaB5gjbWkPMNBP7H5XQVuf, subgraphFE63YgkzcpVocxdCEyEYbvjYqEf2kb1A6daMYRxmejYC) — all indexershealth: failed, freezing every downstream consumer.Root cause
The offending tx (
0x1eb52cd3…) is a Tenderize unlock deployed via its constructor, soevent.transaction.toisnull(graph-ts types itAddress | null).createOrLoadTransactionFromEventonly setstx.towhen a recipient exists, butTransaction.toisString!, so graph-node aborts:This is the first contract-creation tx to emit a protocol event. Not specific to
earningsClaimed— the helper is shared by 32 handlers across 11 contracts, so any handled event from a creation tx aborts the same way.Fix
Make
Transaction.tonullable (String!→String) — matches Ethereum/JSON-RPC and graph-ts (to: Address | null). No mapping change. → #245.Alternative (#244): default
toto the zero address — non-breaking, but reuses0x0as a stand-in for "no recipient." Merge one. Redeploy requires a full resync (grafting disabled).