graphprotocol / graphprotocol/graph-node
[Bug] Indexing Error because of 2D BigInt Arrays
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Rust
- Estrellas
- 3.2k
- Forks
- 1.1k
- Merge medio
- 4 d 1 h
- PR fusionados (30 d)
- 1
Descripción
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
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza con el punto de entrada handleExchange que falla, mostrado en el backtrace de WASM, y con las definiciones de eventos y entidades de graph-ts del informe. Reproduce la asignación uint256[5][5] utilizando los datos del evento proporcionados y, después, sigue cómo se validan los arrays BigInt anidados durante las escrituras de entidades. Se considera completado cuando este evento se indexa correctamente mientras se conserva swap_params para la entidad Exchange.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- blockchain, rust, typescript
- Área
- backend, blockchain, data
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 38/100