---
title: "¿Qué es un subgraph? (Guía)"
description: "Aprende cómo funcionan los subgraphs, cómo se pueden usar y cómo empezar a construir"
---

# ¿Qué es un subgraph? (Guía)

**Los Subgraphs agregan datos de blockchain específicos de la aplicación para un acceso rápido por parte de los desarrolladores full-stack.**

Las blockchains registran datos de forma cronológica y sin considerar aplicaciones específicas. Históricamente, cuando un desarrollador quería mostrar información relevante para sus smart contracts, se veía obligado a buscarla bloque por bloque, transacción por transacción, usando JSON-RPC.

Los Subgraphs le dan a los desarrolladores un método sencillo para acceder a datos onchain en tiempo real, y les permiten crear interacciones útiles para los usuarios de sus apps.

Este artículo explora los subgraphs, incluyendo su funcionamiento, aplicaciones comunes, ventajas, proveedores disponibles y recursos para ayudar a los desarrolladores a comenzar a usarlos.

## **¿Qué es un Subgraph?**

**Los Subgraphs agregan datos de blockchain específicos de la aplicación para un acceso rápido por parte de los desarrolladores frontend.**

Los Subgraphs se exponen a los desarrolladores mediante [GraphQL ](https://www.alchemy.com/dapps/graphql)APIs, lo que permite a los usuarios consultar en tiempo real los datos de transacciones que ocurren en su contrato. Los Subgraphs son especialmente útiles para desarrolladores de smart contracts complejos y personalizados que necesitan interfaces frontend robustas.

Por ejemplo, para consultar todas las transacciones dentro de un único pool de liquidez de [Uniswap](https://www.alchemy.com/dapps/uniswap) v3 en las últimas 24 horas, Uniswap solo necesita definir su schema, indexar los datos de eventos para crear el subgraph y luego usar la API de GraphQL generada para consultar su subgraph, obteniendo datos de blockchain de forma flexible y eficiente.

Los Subgraphs permiten a los desarrolladores filtrar y ordenar datos según sus necesidades, extrayendo solo la información importante para su dapp. Los Subgraphs también permiten una consulta de datos más eficiente al precompilar e indexar los datos, acelerando el proceso de consulta en lugar de solicitar los datos directamente a [full nodes o archive nodes](https://www.alchemy.com/overviews/full-vs-light-vs-archive-nodes).

### ¿Cómo funciona un Subgraph?

**Los "mappings" de un Subgraph son scripts que indican a los nodos cómo extraer los datos relevantes de cada bloque nuevo descubierto, según el "manifest" del subgraph. Estos nuevos datos se agregan luego al subgraph y quedan disponibles para los desarrolladores mediante una llamada a GraphQL, según lo definido por el "schema" del Subgraph.**

Para empezar, debemos comprender la estructura fundamental de un subgraph, sus componentes y cómo interactúan entre sí.

#### ¿Qué es el manifest de un Subgraph?

Un **manifest** contiene información sobre las fuentes de datos, los templates y algunos metadatos del subgraph (por ejemplo, descripción, repositorio, etc.). El manifest define los smart contracts indexados por un subgraph, los eventos relevantes de esos smart contracts, y cómo transferir los datos de los eventos a entidades almacenadas y consultables por el Graph node.

#### ¿Qué es un schema de Subgraph?

**Un schema** explica cómo está organizada la información de un subgraph y cómo consultarla usando GraphQL. El schema debe definir las entidades y la estructura de datos de cada una.

Por ejemplo, si estás creando un subgraph para analítica en tiempo real de pools de Uniswap v3, tu entidad podría ser un pool, y el schema definiría los activos del pool, su nombre, la dirección del smart contract, las comisiones, etc.

#### ¿Qué es un mapping de Subgraph?

Los **mappings** son código en AssemblyScript que se ejecuta cada vez que el servidor encuentra un evento especificado en el manifest. Los mappings definen los event handlers encargados de transformar los datos provenientes del evento o de la llamada, y de guardarlos en el store del Graph node.

### **¿Cuáles son los casos de uso más comunes de los Subgraphs?**

**Los Subgraphs se usan con frecuencia en DeFi, NFT, DAOs y diversas otras aplicaciones onchain.**

#### **Indexación de smart contracts personalizados**

Los desarrolladores de aplicaciones blockchain que quieren indexar datos de sus smart contracts personalizados (especialmente aquellos que no siguen un estándar como ERC1155 o ERC721 para NFTs) son creadores frecuentes de subgraphs. La indexación personalizada también es particularmente importante para desarrolladores que construyen interfaces frontend con funciones como búsqueda y filtrado.

#### **Finanzas descentralizadas (DeFi)**

Los [subgraphs de DeFi](https://www.alchemy.com/dapps/best/defi-subgraphs) se usan comúnmente en aplicaciones para indexar y consultar datos de blockchain como precios de tokens, tipos de cambio, liquidez y volumen de trading. Las apps de DeFi que usan subgraphs pueden darle a los usuarios acceso en tiempo real a datos actualizados y permitir operaciones de trading y otras operaciones financieras eficientes.

#### **Tokens no fungibles (NFTs)**

Los [subgraphs de NFT](https://www.alchemy.com/dapps/best/nft-subgraphs) se pueden usar para indexar y consultar datos de NFTs como propiedad, procedencia e historial de transacciones junto con datos off-chain. Esto puede ayudar a los marketplaces de NFT y otras apps a ofrecer una experiencia más fluida a los usuarios que compran, venden e intercambian NFTs.

#### **Organizaciones autónomas descentralizadas (DAOs)**

A diferencia de las autoridades centralizadas, las Organizaciones Autónomas Descentralizadas, o [DAOs](https://www.alchemy.com/dapps/top/daos), son organizaciones gestionadas por comunidades distribuidas. Dado que la mayoría de las decisiones de una DAO ocurren onchain, los [subgraphs de DAO](https://www.alchemy.com/dapps/best/dao-subgraphs) son fundamentales para que los miembros puedan votar y examinar los datos correctamente.

#### **Gaming**

El acceso en tiempo real a datos como saldos de cuentas de usuario, el estado del juego y objetos dentro del juego suele ser necesario en los [juegos basados en blockchain](https://www.alchemy.com/overviews/play-to-earn-games). Estos datos se pueden indexar y consultar mediante subgraphs, lo que permite un gameplay más eficiente y responsivo, entre otras funciones.

## **¿Cuáles son los beneficios de construir con Subgraphs?**

Los Subgraphs son un paradigma muy sencillo para indexar datos de blockchain que los desarrolladores full-stack pueden usar. ¡Escribe algo de AssemblyScript y listo! En el caso de las soluciones hosteadas, vienen con un backend, así que los desarrolladores no necesitan operar una base de datos ni servidores.

Estos son algunos otros beneficios de construir con subgraphs: simplicidad, compatibilidad y resiliencia.

### **1. Simplicidad del Subgraph**

Los Subgraphs son bases de datos de información específica de la aplicación, disponibles para consulta. Usar subgraphs hosteados como backend de datos les ahorra a los desarrolladores tiempo y trabajo al no tener que crear su propia base de datos.

Los Subgraphs se definen y se acceden usando AssemblyScript y GraphQL, respectivamente. Estos suelen ser paradigmas familiares para los desarrolladores full-stack, lo que hace que los subgraphs sean accesibles para nuevos desarrolladores de web3.

### **2. Compatibilidad con múltiples blockchains**

Los Subgraphs tienen la ventaja de funcionar con las numerosas redes blockchain compatibles con EVM, lo que permite a los desarrolladores obtener datos de varias fuentes. Como resultado, las apps descentralizadas se pueden diseñar para funcionar en distintas redes blockchain, aumentando la flexibilidad y la escalabilidad.

Aunque cada subgraph extrae datos de una sola chain, los desarrolladores pueden usar schemas y mappings similares para desplegar subgraphs en distintas redes blockchain compatibles con un esfuerzo de ingeniería mínimo. Las consultas a subgraphs también pueden ser cross-chain mediante graph-cli o a través de proveedores que soporten esta función.

### 3. Mayor seguridad y resiliencia

Usar un protocolo de indexación descentralizado para consultar subgraphs les permite a los desarrolladores optar por mantener una descentralización full-stack en sus aplicaciones. Si bien existen compensaciones de rendimiento entre usar una versión descentralizada y una hosteada del subgraph, tener opciones permite a los desarrolladores optimizar según su caso de uso específico.

Con un indexador descentralizado, una aplicación puede reducir su dependencia de una única fuente de datos al ejecutar varios subgraphs de distintos proveedores, haciéndola menos vulnerable a ataques o caídas provenientes de una sola fuente. Este tipo de servicios los ofrece el protocolo de The Graph.

Los Subgraphs también se pueden crear para filtrar datos potencialmente dañinos, agregando una capa extra de protección a la aplicación. La infraestructura de datos de una aplicación puede volverse más segura y resiliente al operar múltiples subgraphs.

## **¿Cuáles son las desventajas de construir apps con Subgraphs?**

**Si bien los subgraphs existentes son fáciles de usar, crearlos y depurarlos puede ser complejo, y pueden resultar prohibitivos en costo o en diseño.**

### 1. Desarrollo y depuración de Subgraphs

Para usar subgraphs de manera efectiva, los desarrolladores deben aprender un ecosistema complejo y lidiar con los desafíos de depuración de subgraphs debido a la falta de herramientas y visibilidad. Otro desafío de construir con subgraphs es que los mappings se transpilan a WebAssembly, ¡lo que dificulta aún más su depuración!

### **2. Limitaciones de personalización**

Si bien los subgraphs ofrecen una gran flexibilidad en cuanto a qué datos se indexan y cómo se pueden consultar, la personalización puede ser limitada. Si una dapp tiene necesidades de indexación o consulta muy estrictas, podría ser necesaria una solución de indexación y transformación de datos totalmente personalizada.

### **3. Costo**

El costo es un factor decisivo importante para los desarrolladores de aplicaciones que deben elegir nuevas soluciones tecnológicas. Si bien usar subgraphs puede hacer que consultar datos de blockchain sea más fácil y rápido en comparación con JSON-RPC, implica costos adicionales, incluyendo el pago por servicios de indexación y consulta, que pueden acumularse con el tiempo.

### 4. Velocidad de indexación

Los desarrolladores de aplicaciones con grandes volúmenes de datos suelen mencionar la velocidad de indexación como uno de los desafíos de usar subgraphs. Las velocidades de indexación pueden variar no solo según la cantidad y complejidad de los datos, sino también según la solución de indexación que se esté usando.

## **¿Quiénes son los mejores proveedores de Subgraphs?**

**Entre los proveedores más destacados del espacio están The Graph, Goldsky y ChainStack.**

### **The Graph**

[The Graph](https://www.alchemy.com/dapps/the-graph) permite a los desarrolladores producir y consultar subconjuntos de datos de blockchain de manera escalable y rentable.

Los proveedores de subgraphs pueden usar las herramientas e infraestructura de The Graph para crear, desplegar y mantener subgraphs, que los desarrolladores pueden consultar fácilmente mediante la API de GraphQL de The Graph. El servicio de subgraphs de The Graph está diseñado para ser flexible y configurable, permitiendo a los desarrolladores indexar y consultar datos de cualquier blockchain o fuente de datos.

**Hay tres formas principales de desplegar subgraphs en The Graph:**

1. Self-hosted
1. The Graph Hosted Service
1. Subgraph Studio

#### **1. Self-hosted**

Los desarrolladores pueden hostear ellos mismos los distintos componentes que conforman el ecosistema de subgraphs (el codebase de \`graph-node\`) y desplegar sus subgraphs en este sistema self-hosted.

#### **2. The Graph Hosted Service**

Si los desarrolladores no quieren operar su propia infraestructura, pueden desplegar sus subgraphs en The Graph Hosted Service de forma gratuita. Es una excelente opción para equipos nuevos y pequeños porque es fácil de usar, y la baja confiabilidad y las velocidades lentas son tolerables. Sin embargo, [el hosted service de The Graph está actualmente en proceso de deprecación](https://thegraph.com/blog/sunsetting-hosted-service/).

#### **3. Subgraph Studio**

Los desarrolladores pueden desplegar sus subgraphs en la red descentralizada de The Graph a través del producto [Subgraph Studio](https://thegraph.com/docs/en/deploying/subgraph-studio/), que involucra el token de The Graph. Sin embargo, este método de despliegue no soporta todas las funciones de la solución hosteada (por ejemplo, no tiene funcionalidad de IPFS y soporta menos chains).

### **Goldsky**

[Goldsky](https://www.alchemy.com/dapps/goldsky) permite a los ingenieros crear flujos de datos en tiempo real para sus apps, eliminando la necesidad de gestionar infraestructura sofisticada de blockchain y de [streaming de datos](https://www.alchemy.com/docs/reference/custom-webhooks-example). Goldsky puede indexar una blockchain o un subgraph, transformar los datos según tus necesidades y transmitir los resultados en tiempo real a un data warehouse, webhooks o una API.

### Chainstack

[Chainstack Subgraphs](https://www.alchemy.com/dapps/chainstack-subgraphs) es una solución de nivel productivo, sumamente rápida, para desplegar tus subgraphs, que puedes usar sin las complicaciones de hacer staking, delegar y/o recompensar la indexación de subgraphs. Puedes confiar en [Chainstack](https://www.alchemy.com/dapps/chainstack) para una indexación rápida y disponibilidad de datos constante.

## **Recursos para el desarrollo de Subgraphs**

**La siguiente lista contiene varios recursos útiles para los desarrolladores que están comenzando a construir con subgraphs:**

### **1. Documentación de The Graph**

La [documentación de The Graph](https://thegraph.com/docs/en/) es un recurso completo que le brinda a los desarrolladores todo el conocimiento que necesitan para empezar a construir subgraphs para apps descentralizadas. Ofrece instrucciones detalladas, tutoriales y material de referencia que cubre desde crear un entorno de desarrollo hasta desplegar y consultar subgraphs.

### **2. Ejemplos de Subgraphs**

El repositorio oficial de GitHub de The Graph contiene ejemplos de implementaciones de subgraphs para indexar y consultar datos de redes blockchain, incluyendo Ethereum, Polygon, IPFS y más. Ofrece un [template de subgraph simple](https://github.com/graphprotocol/example-subgraph) y código de ejemplo que se puede personalizar según los requisitos de una dapp específica.

### **3. Subgraphs estándar de Messari**

El [repositorio de subgraphs](https://subgraphs.messari.io/) de [Messari](https://www.alchemy.com/dapps/messari) le ofrece a los desarrolladores una variedad de subgraphs prediseñados para analizar datos de redes blockchain destacadas como Ethereum y BNB Chain. Ofrece diversas funciones como datos históricos de precios, métricas onchain y más, lo que lo convierte en un recurso valioso para los desarrolladores que buscan aprovechar los subgraphs.

## **¿Debería usar Subgraphs?**

Si tienes uno o más smart contracts personalizados que quieres monitorear, construir un subgraph puede ser una excelente solución para ti.

Los Subgraphs agregan datos de blockchain específicos de la aplicación para un acceso rápido por parte de los desarrolladores frontend.
