Consultas FUEL GraphQL

Cumulo
Cumulo.pro
Published in
4 min readJun 17, 2024

Índice de contenidos

· ¿Qué es GraphQL?
HTTP y APIs
¿Cómo funciona GraphQL?
· Consultas GraphQL
· Consultas ejemplo
Versión del nodo
Nombre de la Chain
Último bloque
Salud del nodo
Peers
· Consultas con parámetros
Información del bloque por altura
Obtener el balance de activos de una dirección
· Referencias

¿Qué es GraphQL?

GraphQL es un lenguaje de consulta para APIs y un entorno de ejecución para realizar estas consultas con datos existentes. Permite a los clientes pedir exactamente los datos que necesitan, mejorando la eficiencia y reduciendo la cantidad de datos transferidos en comparación con las APIs REST tradicionales.

HTTP y APIs

HTTP (Protocolo de Transferencia de Hipertexto) es un conjunto de reglas para acceder a recursos en la web. Estos recursos pueden ser archivos HTML, datos de una base de datos, fotos, texto, etc. Estos recursos se hacen disponibles a través de una API (Interfaz de Programación de Aplicaciones), a la cual se puede acceder mediante el protocolo HTTP. Esto permite a los desarrolladores solicitar recursos de manera eficiente.

¿Cómo funciona GraphQL?

GraphQL trabaja definiendo tipos y las propiedades disponibles en esos tipos (esquema) y definiendo resolvers, que son funciones responsables de obtener los datos para cada campo.

Las consultas en GraphQL permiten leer datos de manera específica y eficiente. Puedes pedir exactamente los datos que necesitas y obtener múltiples recursos en una sola consulta.

Para realizar alguna consulta visita el RPC Endpoint de Fuel:

Puedes utilizar tu propio nodo en el caso de que estés corriendo un nodo de Fuel, +info:

Consultas GraphQL

Un simple ejemplo, consulta la versión del nodo.

query { nodeInfo{nodeVersion}}

Si estás corriendo un nodo puedes ejecutarlo en CLI:

curl -X POST http://0.0.0.0:4000/v1/graphql \
-H "Content-Type: application/json" \
-d '{"query": "{ nodeInfo{nodeVersion}}"}'

También podemos copiar el código CLI para utilizarlo directamente en tu servidor mediante el botón COPY CURL

curl 'https://devnet.fuel.network/v1/graphql' -H 'Accept-Encoding: gzip, deflate, br' -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'DNT: 1' -H 'Origin: https://devnet.fuel.network' --data-binary '{"query":"query { nodeInfo{nodeVersion}}","variables":{"height":"3412"}}' --compressed

Consultas ejemplo

Versión del nodo

Devuelve la versión del app del nodo

query { nodeInfo{nodeVersion}}

Nombre de la Chain

Devuelve el nombre de la Chain

query { chain{name}}

CLI

curl -X POST http://0.0.0.0:4000/v1/graphql \
-H "Content-Type: application/json" \
-d '{"query": "{ chain{name}}"}'

Último bloque

Devuelve la altura del último bloque procesado.

query { chain{latestBlock{ id height}}}

CLI

curl -X POST http://0.0.0.0:5000/v1/graphql \
-H "Content-Type: application/json" \
-d '{"query": "{ chain { latestBlock { id height } } }"}'

Salud del nodo

Indica el estado del nodo

{"data":{"health":true}}

CLI

curl -X POST http://0.0.0.0:5000/v1/graphql \
-H "Content-Type: application/json" \
-d '{"query": "{ health }"}'

Peers

Devuelve los peers del nodo

query { nodeInfo{peers{id}}}

CLI

curl -X POST http://0.0.0.0:5000/v1/graphql \
-H "Content-Type: application/json" \
-d '{"query": "{ nodeInfo{peers{id}} }"}'

Consultas con parámetros

La API dispone de otro tipo de consultas que permiten la introducción de parámetros llamados query variables.

Información del bloque por height

Muestra la id de un bloque introduciendo su height

query Block($height: U64) { block(height: $height) { id } }

Variables:

{"height": "3412"}

Obtener el balance de activos de una dirección

Muestra el balance de los actibos criptográficos asociados a una wallet introduciendo su dirección

query Balance($address: Address, $assetId: AssetId) {
balance(owner: $address, assetId: $assetId) {
owner
amount
assetId
}
}

Variables:

{
"address": "0xf4191cdce0e418264a745b4c1011dfa708a1da9face011aac8703537ce83a18a",
"assetId": "0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07"
}

--

--