Transition period recommendation by Arbitration Council: 28+14 epochs (see Graph Horizon: transition period)
| Contract | Parameter | Current protocol | Graph Horizon
(testnet) | Graph Horizon
(mainnet) | Function call to update it | Comments |
| --- | --- | --- | --- | --- | --- | --- |
| HorizonStaking | maxThawingPeriod - maximum thawing period allowed for a provision, in seconds. | N/A | 2_419_200
(28 days) | 2_419_200
(28 days) | setMaxThawingPeriod() | |
| GraphPayments | PROTOCOL_PAYMENT_CUT - protocol payment cut (burnt amount), in PPM. | 10_000
(1%) | 10_000
(1%) | 10_000
(1%) | Requires contract upgrade. | |
| PaymentsEscrow | WITHDRAW_ESCROW_THAWING_PERIOD - thawing period for escrowed funds withdrawal (payers), in seconds. | 2_592_000
(30 days) | 10_800
(3h) | 2_592_000
(30 days) | Requires contract upgrade. | Note that it’s expected to be 2 days more than POI lifecycle. |
| GraphTallyCollector | REVOKE_AUTHORIZATION_THAWING_PERIOD - thawing period for authorized signers revoke, in seconds. | 2_592_000
(30 days) | 10_800
(3h) | 2_592_000
(30 days) | Requires a new contract deployment. | |
| DisputeManager | disputePeriod - dispute period, in seconds. Establishes the thawing period for SubgraphService provisions. | N/A
(thawing period 28 days) | 28_800
(8h) | 2_419_200
(28 days) | setDisputePeriod() | |
| DisputeManager | disputeDeposit - deposit required to create a dispute. | 10_000 | 10_000 | 10_000 | setDisputeDeposit() | Long term it should match the cost for resolving a dispute. |
| DisputeManager | fishermanRewardCut - Percentage of indexer slashed funds to assign as reward, in PPM. | 500_000
(50%) | 500_000
(50%) | 500_000
(50%) | setFishermanRewardCut() | |
| DisputeManager | maxSlashingCut - Maximum percentage of indexer provisioned stake that can be slashed at once, in PPM. | N/A
Fixed 2.5%. | 100_000
(10%) | 100_000
(10%) | | Can we have a better “formula” for the recommended slashing amount? |
| SubgraphService | minimumProvisionTokens - Minimum amount of tokens required to create a provision for the SubgraphService. | 100_000 | 100_000 | 100_000 | setMinimumProvisionTokens() | |
| SubgraphService | maximumDelegationRatio - Multiplier for how much delegation the service provider can effectively use. | 16 | 16 | 16 | setDelegationRatio() | |
| SubgraphService | stakeToFeesRatio - Locked stake multiplier for query fee collection. | N/A | 10 | 10 | setStakeToFeesRatio() | GIP-0051 suggests an average stake to query fee rebates for indexers of 1000 in 2022.
GIP-0068 Appendix A suggest an equivalent “stake to fees ratio” in the current protocol of ~200 as of January 2025 and ~150 as of Sept 2025.
Not apples to apples comparison, but there is a trend as total stake in the protocol goes down which the increase in query fee volume does not compensate for.
Considering this we think a stakeToFeesRatio=10 is a safe starting point being one order of magnitude smaller than the “current best estimate”. |
| SubgraphService | maxPOIStaleness - Maximum amount of time allowed between POIs to qualify for indexing rewards, in seconds. | 28 epochs
(28 days) | 28_800
(8 hours) | 2_419_200
(28 days) | setMaxPOIStaleness() | |
| SubgraphService | curationFeesCut - The cut curators take from query fee payments, in PPM. | 100_000
(10%) | 100_000
(10%) | 100_000
(10%) | setCurationCut() | |