Skip to content

Commit 3c5144b

Browse files
committed
fix: abi.decode potential decoding failure
1 parent dfa15dd commit 3c5144b

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

src/mappings/subgraphService.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
1-
import { ethereum } from "@graphprotocol/graph-ts"
1+
import { ethereum, ValueKind, log } from "@graphprotocol/graph-ts"
22
import { RewardsDestinationSet, ServiceProviderRegistered } from "../types/SubgraphService/SubgraphService"
33
import { createOrLoadProvision } from "./helpers/helpers"
44

55
export function handleServiceProviderRegistered(event: ServiceProviderRegistered): void {
6-
let decodedCalldata = ethereum.decode('(string,string,address)', event.params.data).toTuple()
7-
let provision = createOrLoadProvision(event.params.serviceProvider, event.address, event.block.timestamp)
8-
provision.url = decodedCalldata[0].toString()
9-
provision.geoHash = decodedCalldata[1].toString()
10-
provision.save()
6+
let decodedCalldata = ethereum.decode('(string,string,address)', event.params.data)
7+
if( decodedCalldata != null && decodedCalldata.kind == ethereum.ValueKind.TUPLE) {
8+
let tupleData = decodedCalldata.toTuple()
9+
let provision = createOrLoadProvision(event.params.serviceProvider, event.address, event.block.timestamp)
10+
provision.url = tupleData[0].toString()
11+
provision.geoHash = tupleData[1].toString()
12+
provision.save()
13+
} else {
14+
log.warning("ServiceProviderRegistered failed to decode: {}", [event.params.data.toHexString()])
15+
}
1116
}
1217

1318
export function handleRewardsDestinationSet(event: RewardsDestinationSet): void {

0 commit comments

Comments
 (0)