From e9d85ce8f2e494384cc9cae0fcebe8991c239560 Mon Sep 17 00:00:00 2001 From: Rick Staa Date: Sun, 22 Jun 2025 16:03:01 +0200 Subject: [PATCH] fix: correctly index actual gas used instead of gas limit Previously, due to an upstream issue, the gasUsed value indexed for transactions was actually the gas limit (see livepeer/subgraph#27). This commit updates the subgraph spec and API versions to retrieve the correct ticket receipt data, enabling accurate tracking of the actual gas used. --- schema.graphql | 4 ++- subgraph.template.yaml | 60 ++++++++++++++++++++++++++++++++---------- utils/helpers.ts | 3 ++- 3 files changed, 51 insertions(+), 16 deletions(-) diff --git a/schema.graphql b/schema.graphql index aa25ed2..3ea6414 100755 --- a/schema.graphql +++ b/schema.graphql @@ -395,7 +395,9 @@ type Transaction @entity { blockNumber: BigInt! "Timestamp for transaction" timestamp: Int! - "Actually is the limit of gas in the transaction, pending update in downstream projects" + "Gas limit for the transaction" + gasLimit: BigInt! + "Gas used for the transaction" gasUsed: BigInt! "Cost per unit of gas specified for the transaction" gasPrice: BigInt! diff --git a/subgraph.template.yaml b/subgraph.template.yaml index c41d2d3..d544f63 100644 --- a/subgraph.template.yaml +++ b/subgraph.template.yaml @@ -1,4 +1,4 @@ -specVersion: 0.0.2 +specVersion: 0.0.5 description: A protocol for affordable and reliable video encoding. Find transcoders, delegators, earning pools, and staking rounds. repository: https://github.com/livepeer/subgraph schema: @@ -13,7 +13,7 @@ dataSources: abi: BondingManager mapping: kind: ethereum/events - apiVersion: 0.0.6 + apiVersion: 0.0.7 language: wasm/assemblyscript file: ./src/mappings/bondingManager.ts abis: @@ -45,28 +45,40 @@ dataSources: eventHandlers: - event: TranscoderUpdate(indexed address,uint256,uint256) handler: transcoderUpdate + receipt: true - event: TranscoderActivated(indexed address,uint256) handler: transcoderActivated + receipt: true - event: TranscoderDeactivated(indexed address,uint256) handler: transcoderDeactivated + receipt: true - event: EarningsClaimed(indexed address,indexed address,uint256,uint256,uint256,uint256) handler: earningsClaimed + receipt: true - event: Bond(indexed address,indexed address,indexed address,uint256,uint256) handler: bond + receipt: true - event: Unbond(indexed address,indexed address,uint256,uint256,uint256) handler: unbond + receipt: true - event: Rebond(indexed address,indexed address,uint256,uint256) handler: rebond + receipt: true - event: WithdrawStake(indexed address,uint256,uint256,uint256) handler: withdrawStake + receipt: true - event: Reward(indexed address,uint256) handler: reward + receipt: true - event: WithdrawFees(indexed address,address,uint256) handler: withdrawFees + receipt: true - event: ParameterUpdate(string) handler: parameterUpdate + receipt: true - event: TransferBond(indexed address,indexed address,uint256,uint256,uint256) handler: transferBond + receipt: true - kind: ethereum/contract name: L2Migrator network: {{networkName}} @@ -76,7 +88,7 @@ dataSources: abi: L2Migrator mapping: kind: ethereum/events - apiVersion: 0.0.6 + apiVersion: 0.0.7 language: wasm/assemblyscript file: ./src/mappings/l2Migrator.ts abis: @@ -90,8 +102,10 @@ dataSources: eventHandlers: - event: MigrateDelegatorFinalized((address,address,uint256,uint256,uint256,address)) handler: migrateDelegatorFinalized + receipt: true - event: StakeClaimed(indexed address,address,uint256,uint256) handler: stakeClaimed + receipt: true - kind: ethereum/contract name: RoundsManager network: {{networkName}} @@ -101,7 +115,7 @@ dataSources: abi: RoundsManager mapping: kind: ethereum/events - apiVersion: 0.0.6 + apiVersion: 0.0.7 language: wasm/assemblyscript file: ./src/mappings/roundsManager.ts abis: @@ -125,8 +139,10 @@ dataSources: eventHandlers: - event: NewRound(indexed uint256,bytes32) handler: newRound + receipt: true - event: ParameterUpdate(string) handler: parameterUpdate + receipt: true - kind: ethereum/contract name: MinterV1 network: {{networkName}} @@ -136,7 +152,7 @@ dataSources: abi: Minter mapping: kind: ethereum/events - apiVersion: 0.0.6 + apiVersion: 0.0.7 language: wasm/assemblyscript file: ./src/mappings/minter.ts abis: @@ -153,8 +169,10 @@ dataSources: eventHandlers: - event: SetCurrentRewardTokens(uint256,uint256) handler: setCurrentRewardTokens + receipt: true - event: ParameterUpdate(string) handler: parameterUpdate + receipt: true - kind: ethereum/contract name: Minter network: {{networkName}} @@ -164,7 +182,7 @@ dataSources: abi: Minter mapping: kind: ethereum/events - apiVersion: 0.0.6 + apiVersion: 0.0.7 language: wasm/assemblyscript file: ./src/mappings/minter.ts abis: @@ -181,8 +199,10 @@ dataSources: eventHandlers: - event: SetCurrentRewardTokens(uint256,uint256) handler: setCurrentRewardTokens + receipt: true - event: ParameterUpdate(string) handler: parameterUpdate + receipt: true - kind: ethereum/contract name: TicketBroker network: {{networkName}} @@ -192,7 +212,7 @@ dataSources: abi: TicketBroker mapping: kind: ethereum/events - apiVersion: 0.0.6 + apiVersion: 0.0.7 language: wasm/assemblyscript file: ./src/mappings/ticketBroker.ts abis: @@ -217,14 +237,19 @@ dataSources: eventHandlers: - event: WinningTicketRedeemed(indexed address,indexed address,uint256,uint256,uint256,uint256,bytes) handler: winningTicketRedeemed + receipt: true - event: DepositFunded(indexed address,uint256) handler: depositFunded + receipt: true - event: ReserveFunded(indexed address,uint256) handler: reserveFunded + receipt: true - event: ReserveClaimed(indexed address,address,uint256) handler: reserveClaimed + receipt: true - event: Withdrawal(indexed address,uint256,uint256) handler: withdrawal + receipt: true - kind: ethereum/contract name: Controller network: {{networkName}} @@ -234,7 +259,7 @@ dataSources: abi: Controller mapping: kind: ethereum/events - apiVersion: 0.0.6 + apiVersion: 0.0.7 language: wasm/assemblyscript file: ./src/mappings/controller.ts abis: @@ -248,8 +273,10 @@ dataSources: eventHandlers: - event: Pause() handler: pause + receipt: true - event: Unpause() handler: unpause + receipt: true - kind: ethereum/contract name: PollCreator network: {{networkName}} @@ -259,7 +286,7 @@ dataSources: abi: PollCreator mapping: kind: ethereum/events - apiVersion: 0.0.6 + apiVersion: 0.0.7 language: wasm/assemblyscript file: ./src/mappings/pollCreator.ts abis: @@ -275,6 +302,7 @@ dataSources: eventHandlers: - event: PollCreated(indexed address,bytes,uint256,uint256,uint256) handler: pollCreated + receipt: true - kind: ethereum/contract name: Treasury network: {{networkName}} @@ -284,7 +312,7 @@ dataSources: abi: LivepeerGovernor mapping: kind: ethereum/events - apiVersion: 0.0.6 + apiVersion: 0.0.7 language: wasm/assemblyscript file: ./src/mappings/treasury.ts abis: @@ -305,7 +333,7 @@ dataSources: abi: ServiceRegistry mapping: kind: ethereum/events - apiVersion: 0.0.6 + apiVersion: 0.0.7 language: wasm/assemblyscript file: ./src/mappings/serviceRegistry.ts abis: @@ -321,6 +349,7 @@ dataSources: eventHandlers: - event: ServiceURIUpdate(indexed address,string) handler: serviceURIUpdate + receipt: true - kind: ethereum/contract name: LivepeerToken network: {{networkName}} @@ -330,7 +359,7 @@ dataSources: abi: LivepeerToken mapping: kind: ethereum/events - apiVersion: 0.0.6 + apiVersion: 0.0.7 language: wasm/assemblyscript file: ./src/mappings/livepeerToken.ts abis: @@ -350,8 +379,10 @@ dataSources: eventHandlers: - event: Mint(indexed address,uint256) handler: mint + receipt: true - event: Burn(indexed address,uint256) handler: burn + receipt: true ############################################################################### # # Data source templates @@ -366,7 +397,7 @@ templates: abi: BondingManager mapping: kind: ethereum/events - apiVersion: 0.0.6 + apiVersion: 0.0.7 language: wasm/assemblyscript file: ./src/mappings/pollTallyHandlers.ts abis: @@ -397,7 +428,7 @@ templates: abi: Poll mapping: kind: ethereum/events - apiVersion: 0.0.6 + apiVersion: 0.0.7 language: wasm/assemblyscript file: ./src/mappings/poll.ts abis: @@ -419,3 +450,4 @@ templates: eventHandlers: - event: Vote(indexed address,uint256) handler: vote + receipt: true diff --git a/utils/helpers.ts b/utils/helpers.ts index 84c30d5..88e9272 100644 --- a/utils/helpers.ts +++ b/utils/helpers.ts @@ -115,7 +115,8 @@ export function createOrLoadTransactionFromEvent( tx = new Transaction(event.transaction.hash.toHex()); tx.blockNumber = event.block.number; - tx.gasUsed = event.transaction.gasLimit; + tx.gasLimit = event.transaction.gasLimit; + tx.gasUsed = event.receipt.gasUsed; tx.gasPrice = event.transaction.gasPrice; tx.timestamp = event.block.timestamp.toI32(); tx.from = event.transaction.from.toHex();