Reward Distribution

How are indexing rewards and query fees distributed?

Distribution of indexing rewards

Indexing rewards are distributed across subgraphs in proportion to the subgraph's curation signal. Indexers receive their indexing rewards proportional to the stake they have allocated on a particular subgraph.

Indexing rewards are generated by protocol inflation which is set to 3% annual issuance.

All allocations need to be closed with a valid proof of indexing (POI).

Proof of indexing (POI)

The so-called proof of indexing (POI) verifies that Indexers have factually indexed the subgraphs they have allocated their stake on. The POI for a block is a digest for all entity store transactions detailing deployment on a subgraph. In order to receive indexing rewards, Indexers have to close an allocation with a valid proof of indexing (POI) that meets the standards set by the arbitration charter. Indexers are not eligible for rewards without a valid POI. When closing an allocation, a POI for the first block of the current epoch must be submitted by the Indexer.

Indexing rewards are collected and distributed whenever Indexers close their allocations. While they are active, allocations keep accruing rewards continuously. Indexers can either force close their allocations manually or let them be closed automatically after the maximum allocation lifetime (every 28 epochs).

1 epoch = ~24 hours

For more information on rewards distribution and allocation lifetime, see:

pageAllocation Lifecycles

Pending indexer rewards

The total amount of pending rewards can be monitored via Oracleminer.com. The website also allows to differentiate between indexer rewards and delegator rewards.

Alternatively, the RewardsManager contract can be used to check pending Indexer rewards manually with the getRewards function.

To do so, query the mainnet subgraph to get the IDs for all active allocations:

query indexerAllocations {
  indexer (id: "<INDEXER_ADDRESS>") {
    allocations {
      activeForIndexer {
        allocations {
          id
        }
      }
    }
  }
}

After this, switch to the Etherscan interface for Rewards contract to call getRewards():

  • Expand the 10. getRewards dropdown

  • Enter the allocationID in the input

  • Click the Query button.

Distribution of query fee rebates

Whenever an allocation is closed (either manually by an Indexer or automatically after the maximum allocation lifetime), query fees are collected by the protocol's gateway. The query fees are accumulated in the subgraph's query fee rebate pool. The distributed amount of query fees from the rebate pool is calculated based on Indexer's contributions to the rebate pool and their allocated stake on the subgraph.

After an allocation has been closed, query fees can only be claimed by Indexers after the dispute period has passed. Once an Indexer successfully claims the query fees, rebates are distributed to the Indexer and their Delegators.

Last updated