Conceptos básicos sobre la cadena de bloques>Datos «on-chain» frente a datos «off-chain»: ¿cuál es la diferencia?

Datos «on-chain» frente a datos «off-chain»: ¿en qué se diferencian?

// Tags
en la cadena frente a fuera de la cadenaalmacenamiento de datos en blockchain

En resumen: Los datos «on-chain» residen directamente en la cadena de bloques, lo que los hace permanentes, transparentes y verificables por cualquier persona. Los datos «off-chain» se almacenan fuera de la cadena de bloques, normalmente en servidores tradicionales, redes de almacenamiento descentralizadas como IPFS o bases de datos privadas. La mayoría de las aplicaciones del mundo real utilizan una combinación de ambos, manteniendo el estado crítico «on-chain» mientras almacenan los datos más voluminosos o menos esenciales «off-chain» para ahorrar costes y mejorar el rendimiento.

La explicación sencilla

Todas las cadenas de bloques tienen un espacio limitado. Almacenar datos en la cadena implica escribirlos en una transacción o en el estado de un contrato inteligente, lo que queda registrado de forma permanente en todos los nodos de la red. Esto hace que los datos sean a prueba de manipulaciones y accesibles para todos, pero tiene un coste. En Ethereum, almacenar tan solo 32 bytes de datos puede costar varios dólares, dependiendo de los precios del gas. Almacenar una imagen o un documento completo en la cadena resultaría prohibitivamente caro.

Ahí es donde entran en juego los datos fuera de la cadena. En lugar de almacenar una imagen completa en la cadena de bloques, un desarrollador podría almacenar la imagen en IPFS (una red descentralizada de almacenamiento de archivos) y, a continuación, almacenar únicamente el hash del contenido IPFS en la cadena. El registro de la cadena de bloques acredita cuál debe ser el contenido de los datos, y el almacenamiento fuera de la cadena es el que realmente los conserva. Este enfoque híbrido te ofrece la verificabilidad de la cadena de bloques junto con la escalabilidad de los sistemas de almacenamiento tradicionales o descentralizados.

Piensa en ello como si fuera una escritura de propiedad. La escritura en sí (un documento breve pero fundamental que acredita la propiedad) se inscribe en la oficina del secretario del condado. Pero la casa en sí, los planos, los informes de inspección y las fotos se encuentran en otro lugar. La escritura remite a la propiedad. La cadena de bloques funciona de la misma manera: almacena las pruebas y referencias fundamentales, mientras que los conjuntos de datos más grandes se encuentran fuera de la cadena.

1-3. Comparación entre «on-chain» y «off-chain»

¿Qué se considera «datos en cadena»?

Los datos en cadena incluyen todo aquello que queda registrado de forma permanente en el estado de la cadena de bloques o en el historial de transacciones. Esto abarca los registros de transacciones (remitente, destinatario, importe, marca de tiempo), el código de los contratos inteligentes y las variables de estado (saldos de tokens, registros de propiedad, votos de gobernanza), los registros de eventos emitidos por los contratos inteligentes y los metadatos de los bloques, como las marcas de tiempo y la información de los validadores.

Cuando un usuario intercambia tokens en un exchange descentralizado, toda la transacción —incluidas las cantidades, las direcciones implicadas y los cambios de estado resultantes— queda registrada en la cadena de bloques. Cuando se acuña un NFT, el ID del token, la dirección del propietario y el URI de los metadatos se almacenan en el estado en cadena del contrato inteligente. Estos datos son « immutable » una vez confirmados, lo que significa que nadie puede modificarlos de forma retroactiva.

Los datos en cadena son los que confieren a la cadena de bloques su principal valor añadido: la verificación sin necesidad de confianza. Cualquier persona que ejecute un nodo o realice una consulta a un RPC endpoint puede verificar de forma independiente cualquier dato de la cadena sin depender de terceros. Es la única fuente de verdad para la red.

1-3: modelo híbrido «on-chain» frente a «off-chain»

¿Qué se considera «datos fuera de cadena»?

Los datos «off-chain» son aquellos que existen fuera de la cadena de bloques, pero a los que se hace referencia en la actividad «on-chain» o que son relevantes para ella. Esto incluye imágenes NFT y archivos de metadatos almacenados en IPFS o en servidores centralizados, grandes conjuntos de datos utilizados por las dapps (perfiles de usuario, historiales de pedidos, análisis), fuentes de datos de oráculos que incorporan información del mundo real (precios, el tiempo, resultados deportivos) a la cadena de bloques, datos de transacciones de la Capa 2 antes de que se agrupen y se liquiden en la Capa 1, y las interfaces de usuario y las API de las aplicaciones que interactúan con los contratos inteligentes.

El patrón más habitual consiste en almacenar en la cadena de bloques un hash del contenido o un URI que apunte a datos fuera de la cadena. Por ejemplo, la mayoría de los contratos inteligentes de NFT almacenan un «tokenURI» que apunta a un archivo JSON de metadatos alojado en IPFS o en un servidor web. Ese archivo JSON contiene la URL de la imagen, la descripción y los atributos. La cadena de bloques conoce el puntero. El sistema fuera de la cadena alberga la carga útil.

Los oráculos como Chainlink constituyen un puente fundamental entre el mundo on-chain y el off-chain. Los contratos inteligentes no pueden acceder de forma nativa a datos externos. No pueden consultar la cotización de una acción, verificar un fenómeno meteorológico ni confirmar un envío en el mundo real. Los oráculos recogen estos datos off-chain y los transmiten a la cadena de bloques de forma verificable, lo que permite a los contratos inteligentes reaccionar ante acontecimientos del mundo real.

Las ventajas y desventajas

La decisión de qué almacenar en la cadena y qué fuera de ella depende de los requisitos de coste, velocidad, permanencia y confianza. El almacenamiento en la cadena es caro, pero permanente y no requiere confianza. El almacenamiento fuera de la cadena es barato y rápido, pero introduce dependencias de sistemas externos. Si la imagen de un NFT se almacena en un servidor centralizado y ese servidor deja de funcionar, el NFT sigue existiendo en la cadena, pero ya no se puede acceder a la obra de arte que representa. Si la imagen está en IPFS y nadie la está fijando, puede ocurrir lo mismo.

Los protocolos de almacenamiento descentralizados, como IPFS y Arweave, pretenden resolver este problema distribuyendo los archivos a través de una red de nodos, en lugar de depender de un único servidor. IPFS utiliza un almacenamiento basado en el contenido, lo que significa que se hace referencia a los archivos mediante su hash criptográfico, en lugar de por la ubicación de un servidor. Mientras al menos un nodo de la red mantenga el archivo fijado, este seguirá siendo accesible. Arweave va más allá al incentivar el almacenamiento permanente mediante un modelo de tarifa única.

Para los desarrolladores que crean aplicaciones de producción, la arquitectura suele consistir en mantener en la cadena todos los estados críticos desde el punto de vista financiero (saldos, titularidad, autorizaciones), almacenar los activos de mayor tamaño en sistemas de almacenamiento descentralizados como IPFS, almacenar en caché los datos a los que se accede con frecuencia en bases de datos fuera de la cadena para mejorar el rendimiento, y utilizar indexadores y canalizaciones de datos para que los datos de la cadena sean consultables.

1-3: Ventajas e inconvenientes del modelo híbrido «on-chain» frente a «off-chain»

¿Cuál es la diferencia entre los datos «on-chain» y los «off-chain»?

Los datos «on-chain» y «off-chain» se diferencian por su ubicación y por las garantías que ofrecen. Los datos «on-chain» se registran en el libro mayor de una cadena de bloques y son validados por todos los nodos, mientras que los datos «off-chain» se almacenan en sistemas externos a los que la cadena solo hace referencia. La tabla siguiente los compara en función de los atributos más importantes.

Atributo

Datos en cadena

Datos fuera de la cadena

Ubicación

Almacenado en bloques y en el estado del contrato

Servidores, IPFS o bases de datos

Coste

Alto, se paga en gasolina por byte

Precios bajos y estándar de almacenamiento

Velocidad

Limitado por los horarios de los bloques

Lecturas y escrituras instantáneas, rápidas y « near »

Permanencia

Immutable una vez confirmado

Modificable, salvo que se haya fijado o archivado

Transparencia

Público y verificable por cualquier persona

Privado o con acceso controlado

Modelo de confianza

Sin necesidad de confiar en terceros, protegido por consenso

Depende del servidor o de la red de almacenamiento

Ideal para

Saldos, titularidad, comprobantes

Imágenes, archivos de gran tamaño, datos analíticos almacenados en caché

¿Cuándo conviene almacenar los datos en la cadena de bloques y cuándo fuera de ella?

La regla general es sencilla: mantén en la cadena todo aquello que deba ser «trustless», definitivo y verificable públicamente, y traslada todo lo demás fuera de la cadena para ahorrar costes y ganar velocidad. La tabla siguiente muestra una correspondencia entre los tipos de datos más comunes y la capa de almacenamiento que suele ser más adecuada para cada uno.

Tipo de datos

Ubicación recomendada

¿Por qué?

Saldos y titularidad de tokens

En la cadena de bloques

Debe ser un sistema sin necesidad de confianza y definitivo

Lógica de los contratos inteligentes

En la cadena de bloques

La ejecución debe ser verificable

Medios y metadatos de los NFT

Offchain (IPFS)

Demasiado grande y costoso para almacenarlo en la cadena de bloques

Análisis e índices de búsqueda

Fuera de la cadena

Requiere consultas rápidas, reconstruidas a partir de datos en cadena

Fuentes de datos del mundo real

Fuera de la cadena a través de oráculos

Las cadenas no pueden recuperar datos externos

La lógica que hace cumplir estas reglas se encuentra en los contratos inteligentes, y la parte fuera de la cadena suele depender de la indexación de la cadena de bloques para convertir los eventos sin procesar de la cadena en registros rápidos y consultables. Si estás decidiendo cómo leer el estado a gran escala, echa un vistazo a cómo abordan los equipos la consulta de datos de la cadena de bloques.

¿Las transacciones de capa 2 y de rollup se realizan en la cadena o fuera de ella?

Las transacciones de Capa 2 comienzan fuera de la cadena y pasan a formarse parte de ella una vez que se liquidan. Una cadena de bloques de Capa 2 ejecuta las transacciones en una capa independiente para ganar velocidad; a continuación, un rollup agrupa muchas de ellas y envía los datos comprimidos, junto con una prueba, a la Capa 1. Así pues, la ejecución tiene lugar fuera de la cadena, pero los datos finales y la garantía de seguridad se asientan en ella. Los dos diseños principales, los rollups optimistas y los ZK, se diferencian en la forma en que demuestran que el trabajo agrupado fuera de la cadena es válido.

¿Cómo conectan los oráculos los datos fuera de la cadena con la cadena de bloques?

Los contratos inteligentes no pueden conectarse a Internet por sí mismos, por lo que dependen de los oráculos para incorporar información externa a la cadena. Una red de oráculos recaba datos externos, como los precios de los activos o los resultados de determinados eventos, llega a un acuerdo sobre el valor y lo registra en un contrato que otros contratos pueden leer. Así es como un protocolo DeFi puede reaccionar ante un precio de mercado o un contrato de seguro puede responder a un evento del mundo real, todo ello manteniendo el valor final, sobre el que se actúa, en la cadena y verificable.

Preguntas frecuentes

¿Son seguros los datos fuera de la cadena?

Puede ser, pero las garantías son diferentes. Los datos fuera de cadena heredan la seguridad del lugar donde se almacenan, por lo que un servidor centralizado constituye un punto único de fallo, mientras que las redes con direccionamiento por contenido, como IPFS o Arweave, distribuyen copias entre numerosos nodos. Almacenar en cadena un hash criptográfico de los datos fuera de cadena permite a cualquiera verificar que la carga útil fuera de cadena no ha sido manipulada.

¿Qué ocurre con un NFT si su imagen fuera de la cadena deja de estar disponible?

El token en sí sigue existiendo en la cadena de bloques, pero la obra de arte a la que apunta puede quedar inaccesible si el servidor desaparece y nadie fija el archivo. Por eso, los proyectos serios almacenan los archivos multimedia de los NFT en IPFS o Arweave y conservan el hash del contenido en la cadena de bloques, en lugar de una URL web, que es más frágil.

¿Pueden los contratos inteligentes leer datos fuera de la cadena directamente?

No. Los contratos inteligentes son deterministas y están aislados del mundo exterior, por lo que no pueden realizar llamadas a la red. Dependen de los oráculos para que estos les faciliten datos fuera de la cadena en la cadena de forma verificable antes de poder utilizarlos.

¿ IPFS es «onchain» o «offchain»?

IPFS es «off-chain». Se trata de una red de almacenamiento descentralizada que almacena archivos fuera de la cadena de bloques, mientras que esta, por lo general, solo almacena el hash del contenido IPFS que apunta a dichos archivos.

¿Cómo se accede a los datos históricos de la cadena de bloques?

El estado actual es fácil de consultar desde cualquier nodo, pero para obtener el historial completo suele ser necesario recurrir a nodos de archivo o a un proceso de rellenado. Consulta «Acceso a datos históricos de la cadena de bloques» para conocer los enfoques habituales y sus ventajas e inconvenientes.

El papel de « Quicknode »

Trabajar con datos tanto en cadena como fuera de cadena requiere una infraestructura fiable. La API Core de Quicknode te ofrece acceso RPC de baja latencia a más de 80 cadenas para leer y escribir datos en cadena. Quicknode Streams Quicknodete permite capturar eventos de la cadena de bloques en tiempo real y redirigirlos a destinos fuera de la cadena, como webhooks, bases de datos PostgreSQL o buckets de S3, lo que facilita la creación de flujos de datos que conectan el mundo dentro de la cadena con el mundo fuera de ella. Para el almacenamiento descentralizado, el IPFS te permiten almacenar y recuperar contenido fuera de la cadena sin necesidad de gestionar tus propios nodos de IPFS .

Lecturas recomendadas

Cómo almacenar datos con IPFS en Ethereum - Quicknode Guía
IPFS Puertas de enlace y asignación de pines - Quicknode
Primeros pasos con Streams - Quicknode Docs
Introducción a los productos de Quicknode

Empieza a construir ahora mismo

Crear una cuenta gratuita