From d058e062e8ce44238d5df4142607a9ba20fbb1b0 Mon Sep 17 00:00:00 2001 From: Miguel de Elias Date: Fri, 19 Dec 2025 10:47:29 -0300 Subject: [PATCH 1/3] fix: handle HorizonRewardsAssigned event on RewardsManager --- abis/RewardsManagerStitched.json | 25 +++++ src/mappings/rewardsManager.ts | 154 ++++++++++++++++++++----------- subgraph.template.yaml | 2 + 3 files changed, 127 insertions(+), 54 deletions(-) diff --git a/abis/RewardsManagerStitched.json b/abis/RewardsManagerStitched.json index dd92f5e9..4c58dd58 100644 --- a/abis/RewardsManagerStitched.json +++ b/abis/RewardsManagerStitched.json @@ -62,6 +62,31 @@ "name": "RewardsAssigned", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "indexer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "allocationID", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "HorizonRewardsAssigned", + "type": "event" + }, { "anonymous": false, "inputs": [ diff --git a/src/mappings/rewardsManager.ts b/src/mappings/rewardsManager.ts index e492b2b8..9ea9d3dc 100644 --- a/src/mappings/rewardsManager.ts +++ b/src/mappings/rewardsManager.ts @@ -2,6 +2,7 @@ import { Address, BigInt } from '@graphprotocol/graph-ts' import { Indexer, Allocation, SubgraphDeployment } from '../types/schema' import { RewardsAssigned, + HorizonRewardsAssigned, ParameterUpdated, RewardsManagerStitched as RewardsManager, RewardsDenylistUpdated, @@ -16,22 +17,109 @@ import { import { addresses } from '../../config/addresses' export function handleRewardsAssigned(event: RewardsAssigned): void { - let graphNetwork = createOrLoadGraphNetwork(event.block.number, event.address) - let indexerID = event.params.indexer.toHexString() + processRewardsAssigned( + event.params.indexer, + event.params.allocationID.toHexString(), + event.params.amount, + event.block.number, + event.block.timestamp, + event.address, + ) +} + +/** + * @dev handleHorizonRewardsAssigned + * - Handles the HorizonRewardsAssigned event emitted after Horizon upgrade + * - Only processes rewards for legacy allocations (created via old Staking contract) + * - New allocations (via SubgraphService) are handled by IndexingRewardsCollected instead + */ +export function handleHorizonRewardsAssigned(event: HorizonRewardsAssigned): void { let allocationID = event.params.allocationID.toHexString() + let allocation = Allocation.load(allocationID) + + // Skip if allocation doesn't exist or is not a legacy allocation + // New allocations have their rewards tracked via IndexingRewardsCollected from SubgraphService + if (allocation == null || !allocation.isLegacy) { + return + } + + processRewardsAssigned( + event.params.indexer, + allocationID, + event.params.amount, + event.block.number, + event.block.timestamp, + event.address, + ) +} + +/** + * @dev handleParameterUpdated + * - handlers updating all parameters + */ +export function handleParameterUpdated(event: ParameterUpdated): void { + let parameter = event.params.param + let graphNetwork = createOrLoadGraphNetwork(event.block.number, event.address) + let rewardsManager = RewardsManager.bind(event.address as Address) + + if (parameter == 'issuanceRate') { + graphNetwork.networkGRTIssuance = rewardsManager.issuanceRate() + } else if (parameter == 'issuancePerBlock') { + graphNetwork.networkGRTIssuancePerBlock = rewardsManager.issuancePerBlock() + } else if (parameter == 'subgraphAvailabilityOracle') { + graphNetwork.subgraphAvailabilityOracle = rewardsManager.subgraphAvailabilityOracle() + } + graphNetwork.save() +} + +// export function handleImplementationUpdated(event: ImplementationUpdated): void { +// let graphNetwork = GraphNetwork.load('1') +// let implementations = graphNetwork.rewardsManagerImplementations +// implementations.push(event.params.newImplementation) +// graphNetwork.rewardsManagerImplementations = implementations +// graphNetwork.save() +// } + +export function handleRewardsDenyListUpdated(event: RewardsDenylistUpdated): void { + let subgraphDeployment = SubgraphDeployment.load(event.params.subgraphDeploymentID.toHexString()) + if (subgraphDeployment != null) { + if (event.params.sinceBlock.toI32() == 0) { + subgraphDeployment.deniedAt = 0 + } else { + subgraphDeployment.deniedAt = event.params.sinceBlock.toI32() + } + subgraphDeployment.save() + } + // We might need to handle the case where the subgraph deployment doesn't exists later +} + +/** + * @dev processRewardsAssigned + * - Common logic for processing rewards assigned events (both legacy RewardsAssigned and HorizonRewardsAssigned) + */ +function processRewardsAssigned( + indexerAddress: Address, + allocationID: string, + amount: BigInt, + blockNumber: BigInt, + blockTimestamp: BigInt, + eventAddress: Address, +): void { + let graphNetwork = createOrLoadGraphNetwork(blockNumber, eventAddress) + let indexerID = indexerAddress.toHexString() // update indexer let indexer = Indexer.load(indexerID)! - indexer.rewardsEarned = indexer.rewardsEarned.plus(event.params.amount) + indexer.rewardsEarned = indexer.rewardsEarned.plus(amount) // If the delegation pool has zero tokens, the contracts don't give away any rewards let indexerIndexingRewards = indexer.delegatedTokens == BigInt.fromI32(0) - ? event.params.amount - : event.params.amount + ? amount + : amount .times(BigInt.fromI32(indexer.legacyIndexingRewardCut)) .div(BigInt.fromI32(1000000)) - let delegatorIndexingRewards = event.params.amount.minus(indexerIndexingRewards) + let delegatorIndexingRewards = amount.minus(indexerIndexingRewards) indexer.delegatorIndexingRewards = indexer.delegatorIndexingRewards.plus(delegatorIndexingRewards) indexer.indexerIndexingRewards = indexer.indexerIndexingRewards.plus(indexerIndexingRewards) @@ -46,7 +134,7 @@ export function handleRewardsAssigned(event: RewardsAssigned): void { // update allocation // no status updated, Claimed happens when RebateClaimed, and it is done let allocation = Allocation.load(allocationID)! - allocation.indexingRewards = allocation.indexingRewards.plus(event.params.amount) + allocation.indexingRewards = allocation.indexingRewards.plus(amount) allocation.indexingIndexerRewards = allocation.indexingIndexerRewards.plus(indexerIndexingRewards) allocation.indexingDelegatorRewards = allocation.indexingDelegatorRewards.plus( delegatorIndexingRewards, @@ -54,8 +142,8 @@ export function handleRewardsAssigned(event: RewardsAssigned): void { allocation.save() // Update epoch - let epoch = createOrLoadEpoch(addresses.isL1 ? event.block.number : graphNetwork.currentL1BlockNumber!, graphNetwork) - epoch.totalRewards = epoch.totalRewards.plus(event.params.amount) + let epoch = createOrLoadEpoch(addresses.isL1 ? blockNumber : graphNetwork.currentL1BlockNumber!, graphNetwork) + epoch.totalRewards = epoch.totalRewards.plus(amount) epoch.totalIndexerRewards = epoch.totalIndexerRewards.plus(indexerIndexingRewards) epoch.totalDelegatorRewards = epoch.totalDelegatorRewards.plus(delegatorIndexingRewards) epoch.save() @@ -64,12 +152,10 @@ export function handleRewardsAssigned(event: RewardsAssigned): void { let subgraphDeploymentID = allocation.subgraphDeployment let subgraphDeployment = createOrLoadSubgraphDeployment( subgraphDeploymentID, - event.block.timestamp, + blockTimestamp, graphNetwork, ) - subgraphDeployment.indexingRewardAmount = subgraphDeployment.indexingRewardAmount.plus( - event.params.amount, - ) + subgraphDeployment.indexingRewardAmount = subgraphDeployment.indexingRewardAmount.plus(amount) subgraphDeployment.indexingIndexerRewardAmount = subgraphDeployment.indexingIndexerRewardAmount.plus( indexerIndexingRewards, ) @@ -79,7 +165,7 @@ export function handleRewardsAssigned(event: RewardsAssigned): void { subgraphDeployment.save() // update graph network - graphNetwork.totalIndexingRewards = graphNetwork.totalIndexingRewards.plus(event.params.amount) + graphNetwork.totalIndexingRewards = graphNetwork.totalIndexingRewards.plus(amount) graphNetwork.totalIndexingIndexerRewards = graphNetwork.totalIndexingIndexerRewards.plus( indexerIndexingRewards, ) @@ -89,43 +175,3 @@ export function handleRewardsAssigned(event: RewardsAssigned): void { graphNetwork.totalDelegatedTokens = graphNetwork.totalDelegatedTokens.plus(delegatorIndexingRewards) graphNetwork.save() } - -/** - * @dev handleParameterUpdated - * - handlers updating all parameters - */ -export function handleParameterUpdated(event: ParameterUpdated): void { - let parameter = event.params.param - let graphNetwork = createOrLoadGraphNetwork(event.block.number, event.address) - let rewardsManager = RewardsManager.bind(event.address as Address) - - if (parameter == 'issuanceRate') { - graphNetwork.networkGRTIssuance = rewardsManager.issuanceRate() - } else if (parameter == 'issuancePerBlock') { - graphNetwork.networkGRTIssuancePerBlock = rewardsManager.issuancePerBlock() - } else if (parameter == 'subgraphAvailabilityOracle') { - graphNetwork.subgraphAvailabilityOracle = rewardsManager.subgraphAvailabilityOracle() - } - graphNetwork.save() -} - -// export function handleImplementationUpdated(event: ImplementationUpdated): void { -// let graphNetwork = GraphNetwork.load('1') -// let implementations = graphNetwork.rewardsManagerImplementations -// implementations.push(event.params.newImplementation) -// graphNetwork.rewardsManagerImplementations = implementations -// graphNetwork.save() -// } - -export function handleRewardsDenyListUpdated(event: RewardsDenylistUpdated): void { - let subgraphDeployment = SubgraphDeployment.load(event.params.subgraphDeploymentID.toHexString()) - if (subgraphDeployment != null) { - if (event.params.sinceBlock.toI32() == 0) { - subgraphDeployment.deniedAt = 0 - } else { - subgraphDeployment.deniedAt = event.params.sinceBlock.toI32() - } - subgraphDeployment.save() - } - // We might need to handle the case where the subgraph deployment doesn't exists later -} diff --git a/subgraph.template.yaml b/subgraph.template.yaml index 2913aca2..1cbb05e5 100644 --- a/subgraph.template.yaml +++ b/subgraph.template.yaml @@ -756,6 +756,8 @@ dataSources: eventHandlers: - event: RewardsAssigned(indexed address,indexed address,uint256,uint256) handler: handleRewardsAssigned + - event: HorizonRewardsAssigned(indexed address,indexed address,uint256) + handler: handleHorizonRewardsAssigned - event: RewardsDenylistUpdated(indexed bytes32,uint256) handler: handleRewardsDenyListUpdated # - event: ImplementationUpdated(address,address) From bb96069464ae5867714a5953c875ec25add9badb Mon Sep 17 00:00:00 2001 From: Juan Manuel Rodriguez Defago Date: Sat, 20 Dec 2025 02:46:49 -0300 Subject: [PATCH 2/3] feat: declaring l1 block number eth calls --- subgraph.template.yaml | 125 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) diff --git a/subgraph.template.yaml b/subgraph.template.yaml index 1cbb05e5..fe00cdc2 100644 --- a/subgraph.template.yaml +++ b/subgraph.template.yaml @@ -28,14 +28,24 @@ dataSources: eventHandlers: - event: SetContractProxy(indexed bytes32,address) handler: handleSetContractProxy + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: NewOwnership(indexed address,indexed address) handler: handleNewOwnership + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: PartialPauseChanged(bool) handler: handlePartialPauseChanged + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: PauseChanged(bool) handler: handlePauseChanged + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: NewPauseGuardian(indexed address,indexed address) handler: handleNewPauseGuardian + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - kind: ethereum/contract name: GNS network: {{network}} @@ -69,18 +79,28 @@ dataSources: handler: handleSubgraphPublished - event: SubgraphDeprecated(indexed address,indexed uint256) handler: handleSubgraphDeprecated + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: SetDefaultName(indexed address,uint256,bytes32,string) handler: handleSetDefaultName + calls: + ENS.owner: ENS[{{ens}}].owner(event.params.nameIdentifier) - event: SubgraphMetadataUpdated(indexed address,indexed uint256,bytes32) handler: handleSubgraphMetadataUpdated - event: NameSignalEnabled(indexed address,indexed uint256,indexed bytes32,uint32) handler: handleNameSignalEnabled + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: NameSignalUpgrade(indexed address,indexed uint256,uint256,uint256,indexed bytes32) handler: handleNameSignalUpgrade - event: NSignalMinted(indexed address,indexed uint256,indexed address,uint256,uint256,uint256) handler: handleNSignalMinted + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: NSignalBurned(indexed address,indexed uint256,indexed address,uint256,uint256,uint256) handler: handleNSignalBurned + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: NameSignalDisabled(indexed address,indexed uint256,uint256) handler: handleNameSignalDisabled - event: GRTWithdrawn(indexed address,indexed uint256,indexed address,uint256,uint256) @@ -92,12 +112,18 @@ dataSources: handler: handleSubgraphPublishedV2 - event: SubgraphDeprecated(indexed uint256,uint256) handler: handleSubgraphDeprecatedV2 + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: SubgraphMetadataUpdated(indexed uint256,bytes32) handler: handleSubgraphMetadataUpdatedV2 - event: SignalMinted(indexed uint256,indexed address,uint256,uint256,uint256) handler: handleNSignalMintedV2 + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: SignalBurned(indexed uint256,indexed address,uint256,uint256,uint256) handler: handleNSignalBurnedV2 + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: GRTWithdrawn(indexed uint256,indexed address,uint256,uint256) handler: handleGRTWithdrawnV2 - event: SubgraphUpgraded(indexed uint256,uint256,uint256,indexed bytes32) @@ -319,38 +345,67 @@ dataSources: eventHandlers: - event: DelegationParametersUpdated(indexed address,uint32,uint32,uint32) handler: handleDelegationParametersUpdated + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: StakeDeposited(indexed address,uint256) handler: handleStakeDeposited + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: StakeLocked(indexed address,uint256,uint256) handler: handleStakeLocked + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: StakeWithdrawn(indexed address,uint256) handler: handleStakeWithdrawn + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: StakeSlashed(indexed address,uint256,uint256,address) handler: handleStakeSlashed + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: StakeDelegated(indexed address,indexed address,uint256,uint256) handler: handleStakeDelegated - event: StakeDelegatedLocked(indexed address,indexed address,uint256,uint256,uint256) handler: handleStakeDelegatedLocked + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: StakeDelegatedWithdrawn(indexed address,indexed address,uint256) handler: handleStakeDelegatedWithdrawn - event: AllocationCreated(indexed address,indexed bytes32,uint256,uint256,indexed address,bytes32) handler: handleAllocationCreated + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: AllocationCollected(indexed address,indexed bytes32,uint256,uint256,indexed address,address,uint256,uint256) handler: handleAllocationCollected + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: AllocationClosed(indexed address,indexed bytes32,uint256,uint256,indexed address,uint256,address,bytes32,bool) handler: handleAllocationClosedCobbDouglas + calls: + Staking.getAllocation1: Staking[event.address].getAllocation1(event.params.allocationID) + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: AllocationClosed(indexed address,indexed bytes32,uint256,uint256,indexed address,address,bytes32,bool) handler: handleAllocationClosed + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: RebateClaimed(indexed address,indexed bytes32,indexed address,uint256,uint256,uint256,uint256,uint256) handler: handleRebateClaimed + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: RebateCollected(address,indexed address,indexed bytes32,indexed address,uint256,uint256,uint256,uint256,uint256,uint256,uint256) handler: handleRebateCollected + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: SetOperator(indexed address,indexed address,bool) handler: handleSetOperator - event: SlasherUpdate(indexed address,indexed address,bool) handler: handleSlasherUpdate + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: AssetHolderUpdate(indexed address,indexed address,bool) handler: handleAssetHolderUpdate + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() # - event: ImplementationUpdated(address,address) # handler: handleImplementationUpdated - kind: ethereum/contract @@ -377,6 +432,8 @@ dataSources: eventHandlers: - event: ParameterUpdated(string) handler: handleParameterUpdated + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - kind: ethereum/contract name: HorizonStaking network: {{network}} @@ -401,24 +458,40 @@ dataSources: eventHandlers: - event: HorizonStakeDeposited(indexed address,uint256) handler: handleHorizonStakeDeposited + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: HorizonStakeLocked(indexed address,uint256,uint256) handler: handleHorizonStakeLocked + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: HorizonStakeWithdrawn(indexed address,uint256) handler: handleHorizonStakeWithdrawn + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: ProvisionCreated(indexed address,indexed address,uint256,uint32,uint64) handler: handleProvisionCreated + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: ProvisionIncreased(indexed address,indexed address,uint256) handler: handleProvisionIncreased + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: TokensDeprovisioned(indexed address,indexed address,uint256) handler: handleTokensDeprovisioned + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: ProvisionParametersSet(indexed address,indexed address,uint32,uint64) handler: handleProvisionParametersSet - event: ProvisionParametersStaged(indexed address,indexed address,uint32,uint64) handler: handleProvisionParametersStaged - event: ProvisionSlashed(indexed address,indexed address,uint256) handler: handleProvisionSlashed + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: ProvisionThawed(indexed address,indexed address,uint256) handler: handleProvisionThawed + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: ThawRequestCreated(indexed uint8,indexed address,indexed address,address,uint256,uint64,bytes32,uint256) handler: handleThawRequestCreated - event: ThawRequestFulfilled(indexed uint8,indexed bytes32,uint256,uint256,uint64,bool) @@ -429,20 +502,32 @@ dataSources: handler: handleDelegationFeeCutSet - event: TokensToDelegationPoolAdded(indexed address,indexed address,uint256) handler: handleTokensToDelegationPoolAdded + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: TokensDelegated(indexed address,indexed address,indexed address,uint256,uint256) handler: handleTokensDelegated - event: DelegationSlashed(indexed address,indexed address,uint256) handler: handleDelegationSlashed + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: TokensUndelegated(indexed address,indexed address,indexed address,uint256,uint256) handler: handleTokensUndelegated + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: DelegatedTokensWithdrawn(indexed address,indexed address,indexed address,uint256) handler: handleDelegatedTokensWithdrawn - event: MaxThawingPeriodSet(uint64) handler: handleMaxThawingPeriodSet + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: ThawingPeriodCleared() handler: handleThawingPeriodCleared + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: DelegationSlashingEnabled() handler: handleDelegationSlashingEnabled + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: AllowedLockedVerifierSet(indexed address,bool) handler: handleAllowedLockedVerifierSet - kind: ethereum/contract @@ -473,14 +558,22 @@ dataSources: handler: handleRewardsDestinationSet - event: AllocationCreated(indexed address,indexed address,indexed bytes32,uint256,uint256) handler: handleAllocationCreated + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: AllocationResized(indexed address,indexed address,indexed bytes32,uint256,uint256) handler: handleAllocationResized - event: AllocationClosed(indexed address,indexed address,indexed bytes32,uint256,bool) handler: handleAllocationClosed + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: IndexingRewardsCollected(indexed address,indexed address,indexed bytes32,uint256,uint256,uint256,bytes32,bytes,uint256) handler: handleIndexingRewardsCollected + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: QueryFeesCollected(indexed address,indexed address,indexed address,bytes32,uint256,uint256) handler: handleQueryFeesCollected + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: DelegationRatioSet(uint32) handler: handleDelegationRatioSet - event: CurationCutSet(uint256) @@ -519,6 +612,8 @@ dataSources: eventHandlers: - event: GraphPaymentCollected(indexed uint8,indexed address,address,indexed address,uint256,uint256,uint256,uint256,uint256) handler: handleGraphPaymentCollected + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - kind: ethereum/contract name: PaymentsEscrow network: {{network}} @@ -610,6 +705,8 @@ dataSources: handler: handleLegacyDisputeCreated - event: DisputeAccepted(indexed bytes32,indexed address,indexed address,uint256) handler: handleDisputeAccepted + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: DisputeRejected(indexed bytes32,indexed address,indexed address,uint256) handler: handleDisputeRejected - event: DisputeCancelled(indexed bytes32,indexed address,indexed address,uint256) @@ -620,12 +717,20 @@ dataSources: handler: handleDisputeLinked - event: ArbitratorSet(indexed address) handler: handleArbitratorSet + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: FishermanRewardCutSet(uint32) handler: handleFishermanRewardCutSet + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: MaxSlashingCutSet(uint32) handler: handleMaxSlashingCutSet + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: DisputePeriodSet(uint64) handler: handleDisputePeriodSet + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - kind: ethereum/contract name: Curation network: {{network}} @@ -683,8 +788,12 @@ dataSources: eventHandlers: - event: Transfer(indexed address,indexed address,uint256) handler: handleTransfer + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: Approval(indexed address,indexed address,uint256) handler: handleApproval + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - kind: ethereum/contract name: EthereumDIDRegistry network: {{network}} @@ -726,8 +835,12 @@ dataSources: eventHandlers: - event: EpochRun(indexed uint256,address) handler: handleEpochRun + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: EpochLengthUpdate(indexed uint256,uint256) handler: handleEpochLengthUpdate + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() # - event: ImplementationUpdated(address,address) # handler: handleImplementationUpdated - kind: ethereum/contract @@ -756,14 +869,20 @@ dataSources: eventHandlers: - event: RewardsAssigned(indexed address,indexed address,uint256,uint256) handler: handleRewardsAssigned + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: HorizonRewardsAssigned(indexed address,indexed address,uint256) handler: handleHorizonRewardsAssigned + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: RewardsDenylistUpdated(indexed bytes32,uint256) handler: handleRewardsDenyListUpdated # - event: ImplementationUpdated(address,address) # handler: handleImplementationUpdated - event: ParameterUpdated(string) handler: handleParameterUpdated + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - kind: ethereum/contract name: DisputeManager network: {{network}} @@ -800,6 +919,8 @@ dataSources: handler: handleDisputeLinked - event: ParameterUpdated(string) handler: handleParameterUpdated + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() {{#useTokenLockManager}} - kind: ethereum/contract name: GraphTokenLockManager @@ -889,9 +1010,13 @@ dataSources: eventHandlers: - event: WithdrawalInitiated(address,indexed address,indexed address,indexed uint256,uint256,uint256) handler: handleWithdrawalInitiated + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() receipt: true - event: DepositFinalized(indexed address,indexed address,indexed address,uint256) handler: handleDepositFinalized + calls: + EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() receipt: true - kind: ethereum/contract name: ArbRetryableTx From a394185d22df9e097dd4bd35838dd70612a5e15e Mon Sep 17 00:00:00 2001 From: Juan Manuel Rodriguez Defago Date: Sat, 20 Dec 2025 02:52:46 -0300 Subject: [PATCH 3/3] fix: adjustments to make declared eth calls work --- subgraph.template.yaml | 67 +++++++++++++++++++++--------------------- 1 file changed, 33 insertions(+), 34 deletions(-) diff --git a/subgraph.template.yaml b/subgraph.template.yaml index fe00cdc2..6364ba09 100644 --- a/subgraph.template.yaml +++ b/subgraph.template.yaml @@ -1,4 +1,4 @@ -specVersion: 1.0.0 +specVersion: 1.2.0 description: Core Graph Network subgraph ({{network}} NO PRUNING) repository: https://github.com/graphprotocol/graph-network-subgraph schema: @@ -15,7 +15,7 @@ dataSources: startBlock: {{blockNumber}} mapping: kind: ethereum/events - apiVersion: 0.0.7 + apiVersion: 0.0.9 language: wasm/assemblyscript file: ./src/mappings/controller.ts entities: @@ -55,7 +55,7 @@ dataSources: startBlock: {{blockNumber}} mapping: kind: ethereum/events - apiVersion: 0.0.7 + apiVersion: 0.0.9 language: wasm/assemblyscript file: ./src/mappings/gns.ts entities: @@ -142,7 +142,7 @@ dataSources: startBlock: {{blockNumber}} mapping: kind: ethereum/events - apiVersion: 0.0.7 + apiVersion: 0.0.9 language: wasm/assemblyscript file: ./src/mappings/l1gns.ts entities: @@ -170,7 +170,7 @@ dataSources: startBlock: {{blockNumber}} mapping: kind: ethereum/events - apiVersion: 0.0.7 + apiVersion: 0.0.9 language: wasm/assemblyscript file: ./src/mappings/l2gns.ts entities: @@ -201,7 +201,7 @@ dataSources: startBlock: {{blockNumber}} mapping: kind: ethereum/events - apiVersion: 0.0.7 + apiVersion: 0.0.9 language: wasm/assemblyscript file: ./src/mappings/gns.ts entities: @@ -227,7 +227,7 @@ dataSources: startBlock: {{blockNumber}} mapping: kind: ethereum/events - apiVersion: 0.0.7 + apiVersion: 0.0.9 language: wasm/assemblyscript file: ./src/mappings/serviceRegistry.ts entities: @@ -254,7 +254,7 @@ dataSources: startBlock: {{blockNumber}} mapping: kind: ethereum/events - apiVersion: 0.0.7 + apiVersion: 0.0.9 language: wasm/assemblyscript file: ./src/mappings/l1staking.ts entities: @@ -291,7 +291,7 @@ dataSources: startBlock: {{blockNumber}} mapping: kind: ethereum/events - apiVersion: 0.0.7 + apiVersion: 0.0.9 language: wasm/assemblyscript file: ./src/mappings/l2staking.ts entities: @@ -323,7 +323,7 @@ dataSources: startBlock: {{blockNumber}} mapping: kind: ethereum/events - apiVersion: 0.0.7 + apiVersion: 0.0.9 language: wasm/assemblyscript file: ./src/mappings/staking.ts entities: @@ -382,7 +382,6 @@ dataSources: - event: AllocationClosed(indexed address,indexed bytes32,uint256,uint256,indexed address,uint256,address,bytes32,bool) handler: handleAllocationClosedCobbDouglas calls: - Staking.getAllocation1: Staking[event.address].getAllocation1(event.params.allocationID) EpochManager.blockNum: EpochManager[{{epochManager}}].blockNum() - event: AllocationClosed(indexed address,indexed bytes32,uint256,uint256,indexed address,address,bytes32,bool) handler: handleAllocationClosed @@ -417,7 +416,7 @@ dataSources: startBlock: {{blockNumber}} mapping: kind: ethereum/events - apiVersion: 0.0.7 + apiVersion: 0.0.9 language: wasm/assemblyscript file: ./src/mappings/staking.ts entities: @@ -443,7 +442,7 @@ dataSources: startBlock: {{blockNumber}} mapping: kind: ethereum/events - apiVersion: 0.0.7 + apiVersion: 0.0.9 language: wasm/assemblyscript file: ./src/mappings/horizonStaking.ts entities: @@ -539,7 +538,7 @@ dataSources: startBlock: {{blockNumber}} mapping: kind: ethereum/events - apiVersion: 0.0.7 + apiVersion: 0.0.9 language: wasm/assemblyscript file: ./src/mappings/subgraphService.ts entities: @@ -597,7 +596,7 @@ dataSources: startBlock: {{blockNumber}} mapping: kind: ethereum/events - apiVersion: 0.0.7 + apiVersion: 0.0.9 language: wasm/assemblyscript file: ./src/mappings/graphPayments.ts entities: @@ -623,7 +622,7 @@ dataSources: startBlock: {{blockNumber}} mapping: kind: ethereum/events - apiVersion: 0.0.7 + apiVersion: 0.0.9 language: wasm/assemblyscript file: ./src/mappings/paymentsEscrow.ts entities: @@ -653,7 +652,7 @@ dataSources: startBlock: {{blockNumber}} mapping: kind: ethereum/events - apiVersion: 0.0.7 + apiVersion: 0.0.9 language: wasm/assemblyscript file: ./src/mappings/graphTallyCollector.ts entities: @@ -683,7 +682,7 @@ dataSources: startBlock: {{blockNumber}} mapping: kind: ethereum/events - apiVersion: 0.0.7 + apiVersion: 0.0.9 language: wasm/assemblyscript file: ./src/mappings/horizonDisputeManager.ts entities: @@ -740,7 +739,7 @@ dataSources: startBlock: {{blockNumber}} mapping: kind: ethereum/events - apiVersion: 0.0.7 + apiVersion: 0.0.9 language: wasm/assemblyscript file: ./src/mappings/curation.ts entities: @@ -774,7 +773,7 @@ dataSources: startBlock: {{blockNumber}} mapping: kind: ethereum/events - apiVersion: 0.0.7 + apiVersion: 0.0.9 language: wasm/assemblyscript file: ./src/mappings/graphToken.ts entities: @@ -803,7 +802,7 @@ dataSources: startBlock: {{blockNumber}} mapping: kind: ethereum/events - apiVersion: 0.0.7 + apiVersion: 0.0.9 language: wasm/assemblyscript file: ./src/mappings/ethereumDIDRegistry.ts entities: @@ -823,7 +822,7 @@ dataSources: startBlock: {{blockNumber}} mapping: kind: ethereum/events - apiVersion: 0.0.7 + apiVersion: 0.0.9 language: wasm/assemblyscript file: ./src/mappings/epochManager.ts entities: @@ -852,7 +851,7 @@ dataSources: startBlock: {{blockNumber}} mapping: kind: ethereum/events - apiVersion: 0.0.7 + apiVersion: 0.0.9 language: wasm/assemblyscript file: ./src/mappings/rewardsManager.ts entities: @@ -892,7 +891,7 @@ dataSources: startBlock: {{blockNumber}} mapping: kind: ethereum/events - apiVersion: 0.0.7 + apiVersion: 0.0.9 language: wasm/assemblyscript file: ./src/mappings/disputeManager.ts entities: @@ -931,7 +930,7 @@ dataSources: startBlock: {{blockNumber}} mapping: kind: ethereum/events - apiVersion: 0.0.7 + apiVersion: 0.0.9 language: wasm/assemblyscript file: ./src/mappings/tokenLockWallets/manager.ts entities: @@ -967,7 +966,7 @@ dataSources: startBlock: {{bridgeBlockNumber}} mapping: kind: ethereum/events - apiVersion: 0.0.7 + apiVersion: 0.0.9 language: wasm/assemblyscript file: ./src/mappings/l1Gateway.ts entities: @@ -997,7 +996,7 @@ dataSources: startBlock: {{bridgeBlockNumber}} mapping: kind: ethereum/events - apiVersion: 0.0.7 + apiVersion: 0.0.9 language: wasm/assemblyscript file: ./src/mappings/l2Gateway.ts entities: @@ -1027,7 +1026,7 @@ dataSources: startBlock: {{bridgeBlockNumber}} mapping: kind: ethereum/events - apiVersion: 0.0.7 + apiVersion: 0.0.9 language: wasm/assemblyscript file: ./src/mappings/arbRetryableTx.ts entities: @@ -1047,7 +1046,7 @@ templates: abi: GraphTokenLockWallet mapping: kind: ethereum/events - apiVersion: 0.0.7 + apiVersion: 0.0.9 language: wasm/assemblyscript file: ./src/mappings/tokenLockWallets/tokenLockWallet.ts entities: @@ -1073,7 +1072,7 @@ templates: - name: SubgraphDeploymentManifest kind: file/ipfs mapping: - apiVersion: 0.0.7 + apiVersion: 0.0.9 language: wasm/assemblyscript file: ./src/mappings/ipfs.ts handler: handleSubgraphDeploymentManifest @@ -1085,7 +1084,7 @@ templates: - name: SubgraphDeploymentSchema kind: file/ipfs mapping: - apiVersion: 0.0.7 + apiVersion: 0.0.9 language: wasm/assemblyscript file: ./src/mappings/ipfs.ts handler: handleSubgraphDeploymentSchema @@ -1097,7 +1096,7 @@ templates: - name: SubgraphMetadata kind: file/ipfs mapping: - apiVersion: 0.0.7 + apiVersion: 0.0.9 language: wasm/assemblyscript file: ./src/mappings/ipfs.ts handler: handleSubgraphMetadata @@ -1109,7 +1108,7 @@ templates: - name: SubgraphVersionMetadata kind: file/ipfs mapping: - apiVersion: 0.0.7 + apiVersion: 0.0.9 language: wasm/assemblyscript file: ./src/mappings/ipfs.ts handler: handleSubgraphVersionMetadata @@ -1121,7 +1120,7 @@ templates: - name: GraphAccountMetadata kind: file/ipfs mapping: - apiVersion: 0.0.7 + apiVersion: 0.0.9 language: wasm/assemblyscript file: ./src/mappings/ipfs.ts handler: handleGraphAccountMetadata