graphprotocol / graphprotocol/graph-node
[Bug] Indexing Error because of 2D BigInt Arrays
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 3.2k
- Forks
- 1.1k
- Avg merge
- 4d 1h
- Merged PRs (30d)
- 1
Description
Bug report
Hello, thanks in advance for the support.
I have an indexing error when i try to sync my subgraph to subgraph studio (look at the picture)
This error is somehow related to a problem with graph-ts that can't interpret the 2D Array of BigInts inside of the following event :
- event: Exchange(indexed address,indexed address,address[11],uint256[5][5],address[5],uint256,uint256)
handler: handleExchange
This event is specific to the following Curve Contract : 0x16c6521dff6bab339122a0fe25a9116693265353
This 2D Array is crucial to decode and analyse the data from this bridge, so i can't delete it from my subgraph or do it another way.
Just below also the typescript code that initialize this entity and the entity itself :
import { Exchange as ExchangeEvent } from "../generated/CurveRouter/CurveRouter"
import { Exchange } from "../generated/schema"
import { Bytes } from "@graphprotocol/graph-ts"
export function handleExchange(event: ExchangeEvent): void {
let entity = new Exchange(
event.transaction.hash.concatI32(event.logIndex.toI32())
)
entity.sender = event.params.sender
entity.receiver = event.params.receiver
entity.swap_params = event.params.swap_params
entity.route = event.params.route.map<Bytes>((address) => address as Bytes);
entity.pools = event.params.pools.map<Bytes>((address) => address as Bytes);
entity.in_amount = event.params.in_amount
entity.out_amount = event.params.out_amount
entity.blockNumber = event.block.number
entity.blockTimestamp = event.block.timestamp
entity.transactionHash = event.transaction.hash
entity.save()
}
type Exchange @entity(immutable: true) {
id: Bytes!
sender: Bytes! # address
receiver: Bytes! # address
route: [Bytes!]! # address[11]
swap_params: [[BigInt!]!]! # uint256[5][5]
pools: [Bytes!]! # address[5]
in_amount: BigInt! # uint256
out_amount: BigInt! # uint256
blockNumber: BigInt!
blockTimestamp: BigInt!
transactionHash: Bytes!
}
Relevant log output
Error: failed to process trigger: block #20268517 (0x21c0…fc31), transaction 4035dca11776d0fd55d48120ff116936975f7709a59e9c9843b2a7d2c55b14a0: error while executing at wasm backtrace: 0: 0x3c9e - <unknown>!src/curve-router/handleExchange: Entity Exchange[0x4035dca11776d0fd55d48120ff116936975f7709a59e9c9843b2a7d2c55b14a057000000]: field `swap_params` is of type [[BigInt!]!], but the value `[[0, 2, 1, 30, 3], [1, 0, 1, 10, 2], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]` contains a [BigInt] at index 0: Entity Exchange[0x4035dca11776d0fd55d48120ff116936975f7709a59e9c9843b2a7d2c55b14a057000000]: field `swap_params` is of type [[BigInt!]!], but the value `[[0, 2, 1, 30, 3], [1, 0, 1, 10, 2], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]` contains a [BigInt] at index 0
To view more details about this indexing error, please view the documentation.
IPFS hash
QmSk6FugeKhGvzGCtqXxnG1SWgpc7rna3VQ6U8F3ooPTfe
Subgraph name or link to explorer
No response
Some information to help us out
- Tick this box if this bug is caused by a regression found in the latest release.
- Tick this box if this bug is specific to the hosted service.
- I have searched the issue tracker to make sure this issue is not a duplicate.
OS information
macOS
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the failing handleExchange entry point shown in the WASM backtrace and the graph-ts event and entity definitions in the report. Reproduce the uint256[5][5] assignment using the supplied event data, then trace how nested BigInt arrays are validated during entity writes. Done means this event indexes successfully while preserving swap_params for the Exchange entity.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- blockchain, rust, typescript
- Domain
- backend, blockchain, data
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100