An allocation is a commitment: this much of my stake, pointed at this subgraph, which I undertake to index and serve. It is the unit that earns indexing rewards.
The Proof of Indexing.
A POI is a hash committing to the data you derived for a subgraph up to a block. Two indexers who indexed the same subgraph honestly, from the same chain data, produce the same POI. Two who did not, do not.
The protocol never re-executes your work. It cannot, affordably. Instead it makes your claim comparable: publish a POI, and anyone who indexed the same thing can check it against theirs. Disagreement is grounds for a dispute.
What Horizon changed.
Previously an allocation had to be closed to collect its rewards, which produced a distinctive operational rhythm: open, run, close to collect, reopen. Every cycle cost transactions and created a window where stake was not earning.
Under Horizon, per the indexing overview, “allocations can remain open indefinitely. There is no requirement to close an allocation to collect rewards.” You present POIs periodically and collect against them.
The constraint that replaces the deadline is staleness. If your most recent POI is older than 28 days, the allocation is stale and stops earning. Nothing is confiscated. It simply stops paying, which is easy to miss.
The part most pages leave out.
The registry records this as Indefinite and marks it disputed, because the protocol capability and the operational reality are not the same thing today.
This distinction is the single best example of why this site exists. Either page alone gives you a confident answer, and an operator who reads only the first will be surprised by their own agent’s behaviour.
What actually earns.
Three conditions, all required:
- The allocation is open against a subgraph.
- Your POI is fresh, within the staleness window.
- The subgraph carries signal. Allocating to a subgraph with no curation signal earns no indexing rewards, however diligently you index it.
Condition three catches people. A technically flawless allocation to an unsignalled subgraph earns nothing, and nothing about the machine looks wrong.
Failure modes worth monitoring.
- The stale allocation. POIs stopped, earning stopped, everything still running. Monitor POI age directly, not merely whether the process is alive.
- The failed deployment. A subgraph fails on a contract upgrade. It has an open allocation, produces no new POIs, and goes stale in a month.
- The wrong POI. Divergence from other indexers, usually from a chain data difference or a graph-node version difference. This is the one that gets disputed, and comparing your POIs against other indexers before publishing is cheaper than arbitration.
- The unsignalled allocation. Earning nothing for a reason that is economic rather than technical.
Before reading on: why was requiring a close to collect rewards a problem worth removing?
It coupled a payment event to a capital event, and the coupling was expensive in two directions.
Closing to collect meant repeatedly paying transaction costs for something that was purely about payment, and it created gaps where stake was between allocations and earning nothing. Operators responded by tuning the cycle, which is effort spent on the mechanism rather than on serving queries.
It also distorted behaviour. If collecting requires closing, then the decision “should this stake stay here” gets entangled with “I need to collect now”, and those should be independent questions.
Separating them lets an allocation persist as long as it is the right place for the stake, with payment following proofs rather than following a closure. The staleness window keeps the obligation honest: prove you are still doing the work, or stop being paid for it.
What happens if your POI goes past the staleness limit?
It stops paying. Nothing is confiscated and no alarm sounds, which is why POI age is worth alerting on directly rather than inferring from process health.
The protocol permits indefinite allocations. What does the indexer stack actually do at Horizon launch?
The Horizon changes page is explicit that the stack continues the short-lived lifecycle for an easier transition, with allocations recycled typically every 28 days. Protocol capability and shipped behaviour are different layers, and you need both to plan.
An allocation is open, POIs are fresh, and it earns nothing. Most likely reason?
Indexing rewards depend on signal. A technically flawless allocation to an unsignalled subgraph earns nothing, and nothing about the machine looks wrong. The failure is economic rather than technical.
0 of 3 answered