graphprotocol / graphprotocol/graph-node
[Bug] Indexing Error because of 2D BigInt Arrays
Nessuno ha ancora preso questa issue.
- Lingua principale
- Rust
- Stelle
- 3.2k
- Fork
- 1.1k
- Merge medio
- 4g 1h
- PR unite (30g)
- 1
Descrizione
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
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia dal punto di ingresso handleExchange che fallisce, mostrato nel backtrace WASM, e dalle definizioni di eventi ed entità di graph-ts nel report. Riproduci l’assegnazione uint256[5][5] utilizzando i dati dell’evento forniti, quindi traccia come vengono convalidati gli array BigInt annidati durante le scritture delle entità. Il lavoro è completato quando questo evento viene indicizzato correttamente preservando swap_params per l’entità Exchange.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- blockchain, rust, typescript
- Ambito
- backend, blockchain, data
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 38/100