Respuestas>Descubre los conceptos básicos de la cadena de bloques>Datos «on-chain» frente a «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 la cadena de bloques
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, que queda registrado de forma permanente en todos los nodos de la red. Esto hace que los datos sean a prueba de manipulaciones y de acceso universal, 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 de IPFS en la cadena. El registro de la cadena de bloques acredita cuál debería ser el contenido de los datos, mientras que el almacenamiento fuera de la cadena es donde realmente se guardan. 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 en una escritura de propiedad. La escritura en sí (un documento breve pero fundamental que acredita la titularidad) 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 hace referencia 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 voluminosos se encuentran fuera de la cadena.
¿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 identificador del token, la dirección del propietario y el URI de los metadatos se almacenan en el estado en la cadena de bloques del contrato inteligente. Estos datos son inmutables una vez confirmados, lo que significa que nadie puede modificarlos de forma retroactiva.
Los datos en cadena son los que aportan 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 punto final RPC puede verificar de forma independiente cualquier dato en cadena sin depender de terceros. Es la única fuente de verdad para la red.
¿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. Siempre que al menos un nodo de la red mantenga el archivo fijado, este seguirá siendo accesible. Arweave va un paso 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.
¿Cuál es la diferencia entre los datos «onchain» y los «offchain»?
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 de bloques 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, pagado en gasolina por byte
Precios bajos y estándar de almacenamiento
Velocidad
Limitado por los horarios de los bloques
Lecturas y escrituras rápidas, casi instantáneas
Permanencia
Inmutable 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 los 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
Fuera de la cadena (IPFS)
Demasiado grande y costoso para almacenarlo en la cadena de bloques
Análisis e índices de búsqueda
Fuera de la cadena
Se necesitan consultas rápidas, reconstruyéndose a partir de los datos de la cadena
¿Las transacciones de capa 2 y de rollup se realizan en la cadena o fuera de ella?
Las transacciones de la 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— difieren 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 recopila 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 la 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 de direccionamiento por contenido, como IPFS o Arweave, distribuyen copias entre numerosos nodos. Almacenar en la cadena un hash criptográfico de los datos fuera de la cadena permite a cualquiera verificar que la carga útil fuera de la 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 incorporen datos fuera de la cadena a la cadena de forma verificable antes de que puedan utilizarlos.
¿IPFS funciona «on-chain» o «off-chain»?
IPFS funciona fuera de la cadena de bloques. 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 de IPFS que apunta a dichos archivos.
¿Cómo se accede a los datos históricos de la cadena de bloques?
El estado actual se puede consultar fácilmente desde cualquier nodo, pero para acceder al 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 te permite capturar eventos de la cadena de bloques en tiempo real y redirigirlos a destinos fuera de 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 en cadena con el mundo fuera de cadena. En cuanto al almacenamiento descentralizado, el servicio de «pinning» de IPFS y las pasarelas dedicadas de Quicknode te permiten almacenar y recuperar contenido fuera de la cadena sin necesidad de gestionar tus propios nodos IPFS.