<aside> 💡
This document explains how the protocol state is mutated, transferred—or remains unchanged—with Graph Horizon. It aims to clarify the actions required from each protocol participant following the upgrade assuming they wanted to continue to operate indexing subgraphs and serving queries through the SubgraphService
data service.
</aside>
State | Description | Actions required | |
---|---|---|---|
Service provider | Existing stake in the protocol | - Stake deposited will remain credited to the service provider |
SubgraphService
by calling HorizonStaking.provision()
. |
| | Stake that was thawing before the upgrade | - Stake will continue to thawwithdraw()
| - |
| | Delegation parameters | - Delegation parameters set before horizon will NOT be automatically migrated.
| Service provider needs to set the delegation cuts with HorizonStaking.setDelegationFeeCut()
for each payment type (indexing rewards and query fees). |
| | Operator access | - Operators authorized before horizon will be automatically authorized to operate on the SubgraphService
provisionSubgraphService
they can register the service provider, manage allocation lifecycle and collect fees. | - |
| | Subgraph indexing registration and configuration | - Indexers’ registration will NOT be automatically migrated.SubgraphService.register()
and re-configure their rewards destination address with SubgraphService.setRewardsDestination()
(though the register call allows specifying a rewards destination address). |
| | Existing (legacy) allocations | - They are NOT migrated to the SubgraphService
however the staking contract will allow collecting and closing them during the transition period. | - |
| Delegator | Existing delegation in the protocol | - Delegation assigned to a specific indexerwithdrawDelegated()
. Note that the function signature is what differentiates the new withdraw flow from the legacy one. | - |HorizonStaking
HorizonStaking.closeAllocation()
HorizonStaking.collect()
SubgraphService
SubgraphService
provision automatically: HorizonStaking.provision()
SubgraphService.register()
HorizonStaking.setDelegationFeeCut()
for indexing rewards and query fees (two calls)unstake()
if the time remaining on the transition period is less than the thawing period. Once the transition period ends the unstaking is immediate.