¿Qué es la disponibilidad de datos?

Hola, ¿cómo estamos?, Cryptoneros, por aquí Sergio, un día mas os traigo otro nuevo post, comencemos.

«Disponibilidad de datos» y el «problema de disponibilidad de datos» son términos para referirse a un problema particular que debe superarse en varias estrategias de escala de blockchain. Este problema suplica: ¿cómo pueden los nodos estar seguros de que cuando se produce un nuevo bloque, todos los datos de ese bloque se han publicado realmente para la red? El dilema es que si un productor de bloques no libera todos los datos en un bloque, nadie podría detectar si una transacción maliciosa está oculta dentro de ese bloque.

En este artículo, profundizaremos en el problema de la disponibilidad de datos, por qué es importante y las soluciones al mismo.

Cómo funcionan los nodos Blockchain

En una cadena de bloques, cada bloque consta de dos piezas:

  • Encabezado de bloque. Estos son los metadatos del bloque, que constan de información básica sobre el bloque, incluida la raíz Merkle de las transacciones.
  • Los detalles de la transacción. Esta es la mayor parte del bloque y consta de las transacciones reales.

Una red blockchain también suele tener dos tipos de nodos:

  • Nodos completos (también llamados nodos completamente validados). Estos son nodos que descargan y verifican que todas las transacciones en la cadena de bloques sean válidas. Esto requiere muchos recursos y cientos de gigabytes de espacio en disco, pero estos son los nodos más seguros porque no se pueden probar para aceptar bloques que contienen transacciones no válidas.
  • Clientes ligeros. Si su computadora no tiene los recursos para ejecutar un nodo completo, entonces puede ejecutar un cliente ligero. El cliente ligero no descarga ni valida ninguna transacción. En cambio, simplemente descargan el encabezado del bloque y asumen que solo las transacciones en bloque son válidas, por lo que los clientes ligeros no son tan seguros como los nodos completos.

Afortunadamente, existe una manera de permitir que los clientes ligeros verifiquen indirectamente que todas las transacciones en bloques son válidas. En lugar de verificar las transacciones ellos mismos, pueden confiar en nodos completos para enviarles pruebas de fraude si una transacción no es válida en un bloque. Esta es una pequeña prueba de que una transacción particular en un bloque no es válida. Sin embargo, no cubriremos cómo funciona esta prueba en este artículo. este papel lo explica con más detalle.

Hay un problema: para generar un nodo a prueba de fraude completo para un bloque, necesitan conocer los detalles de la transacción para ese bloque. Si una cadena de bloques no publica el encabezado del bloque pero no los detalles de la transacción, los nodos completos no podrán verificar si las transacciones son válidas y generar pruebas de fraude si no son válidas. Es un requisito que los productores de bloques deben publicar todos los datos de sus bloques, pero necesitamos una forma de hacer cumplir eso.

Para resolver este problema, debe haber alguna forma para que los clientes ligeros verifiquen que los datos de sus transacciones en bloque se hayan publicado realmente para la red, de modo que los nodos completos puedan verificarlos. Sin embargo, queremos evitar que los clientes ligeros descarguen todo el bloque para comprobar que está publicado, ya que esto elimina un punto de cliente ligero.

¿Cómo resolvemos esto? Primero, analicemos en qué otros aspectos es relevante el problema de la disponibilidad de datos y luego analizaremos las soluciones.

¿Dónde está el problema de disponibilidad de datos relevantes?

En la primera parte, presentamos el problema de la disponibilidad de datos. Analicemos las soluciones de escalabilidad que son importantes para ellos.

Aumento del tamaño de los bloques

En una cadena de bloques como Bitcoin, la mayoría de las computadoras portátiles estándar tienen la capacidad de ejecutar un nodo completo y verificar toda la cadena, porque existe un límite de tamaño de bloque artificial para mantener la cadena de bloques pequeña.

Pero, ¿y si quisiéramos aumentar el límite de tamaño de bloque? Permitirá que menos personas ejecuten nodos completos y verifiquen la cadena de forma independiente, mientras que más personas ejecutarán clientes ligeros menos seguros. Esto es malo para la descentralización, porque sería más fácil para los productores de bloques cambiar las reglas del protocolo y enviar transacciones no válidas que los clientes ligeros aceptarán como válidas. Por lo tanto, es muy importante proporcionar soporte a prueba de fraude para los clientes ligeros, pero como se discutió, los clientes ligeros necesitan una forma de verificar que todos los datos se hayan publicado en bloques para que esto funcione.

Fragmentación

Una forma de aumentar el rendimiento de la cadena de bloques es dividir la cadena de bloques en varias cadenas llamadas fragmentos. Estos fragmentos tienen sus propios productores de bloques y pueden comunicarse entre sí para transferir señales entre fragmentos. El punto es dividir a los productores de bloques en la red para que dividan su poder de procesamiento en diferentes fragmentos que solo procesen varias transacciones en lugar de que cada productor de bloques procese cada transacción.

Normalmente, un nodo completo en una cadena de bloques fragmentada ejecutará un nodo completo para uno o algunos fragmentos, y un cliente ligero se ejecutará para todos los demás fragmentos. Después de todo, cualquiera que tenga un nodo completo para cada fragmento supera el propósito de sarding, que es dividir los recursos de la red en diferentes nodos.

Sin embargo, este método tiene sus problemas. ¿Qué sucede si los productores de blockchain se vuelven maliciosos y comienzan a aceptar transacciones no válidas? Es más probable que esto suceda en un sistema fragmentado que en un sistema no sombreado, porque un sistema fragmentado es más fácil de atacar ya que solo tiene unos pocos productores de bloques en cada fragmento. Recuerde que los productores de bloques se dividen en diferentes fragmentos.

Para resolver el problema de detectar si algún fragmento ha aceptado una transacción no válida, debe poder garantizar que todos los datos de ese fragmento se hayan publicado y estén disponibles, de modo que cualquier transacción no válida se pueda crear con prueba de fraude.

Rollups

Los rollups optimistas son una nueva estrategia de escalado basada en cadenas laterales llamadas rollups, que pueden considerarse fragmentos. Estas cadenas laterales tienen sus propios productores de cadenas de bloques dedicados, que pueden transferir activos hacia y desde otras cadenas.

Pero, ¿qué pasa si los productores se portan mal y hacen bloques que involucran transacciones no válidas y roban todo el dinero de los usuarios en la cadena lateral? Para resolver esto, se pueden utilizar pruebas de fraude para detectarlo. Pero nuevamente, los usuarios de la cadena lateral necesitan alguna forma de asegurarse de que los datos de todos los bloques de la cadena lateral se hayan publicado realmente, para asegurarse de que se puedan detectar transacciones no válidas. Los rollups en Ethereum manejan esto simplemente publicando todos los bloques de rollup en la cadena Ethereum y confiando en ellos para la disponibilidad de datos, usando Ethereum como la capa de disponibilidad de datos para descargar datos.

Las acumulaciones de conocimiento cero (ZK) son similares a las acumulaciones optimistas, pero en lugar de utilizar una prueba de fraude para detectar bloques no válidos, utilizan una prueba criptográfica llamada prueba de validez para demostrar que un bloque es válido. No es necesario crear datos de validez en sí. Sin embargo, la disponibilidad de datos de los paquetes acumulativos de ZK en su conjunto requiere, porque si una cadena de bloques hace un bloque válido y crea con prueba de validez pero no libera los datos para el bloque, los usuarios no sabrán en qué estado se encuentra la cadena de bloques. y cuáles son sus saldos, por lo que no podrán interactuar con la cadena.

Yendo más

Los paquetes acumulativos son un diseño que utiliza blockchain solo como una capa de disponibilidad de datos para volcar transacciones, pero el procesamiento y el cálculo de las transacciones reales tienen lugar en el paquete acumulativo. Esto conduce a una idea interesante: una cadena de bloques realmente no necesita hacer ningún cálculo, pero al menos necesita ordenar las transacciones en bloques y garantizar la disponibilidad de los datos de las transacciones.

Esta es una filosofía de diseño LazyLedger, una cadena de bloques “perezosa” que solo hace las dos cosas clave que tiene que hacer una cadena de bloques: ordenar transacciones y entregarlas, de manera escalable. Esto lo hace útil como un componente «conectable» mínimo para sistemas como los acumulados.

¿Qué soluciones están disponibles para el problema de disponibilidad de datos?

Descargar todos los datos

La forma más obvia, como se discutió, de resolver el problema de la disponibilidad de datos es requerir que todos (incluidos los clientes ligeros) descarguen todos los datos. Claramente, esta no es una buena escala. Esto es lo que hacen la mayoría de las cadenas de bloques como Bitcoin y Ethereum.

Prueba de disponibilidad de datos

Las pruebas de disponibilidad de datos son una nueva tecnología que permite a los clientes verificar con una probabilidad muy alta que todos los datos se han publicado para un bloque, descargando una parte muy pequeña de ese bloque.

Utiliza una primitiva matemática llamada borrar códigos, utilizado en todas partes en tecnología de la información, desde CD-ROM hasta comunicaciones por satélite y códigos QR. La codificación de eliminación le permite construir un bloque, digamos 1 MB grande, y «explotarlo» a 2 MB grandes, donde el 1 MB adicional es un dato especial llamado código de eliminación. Si faltan bytes del bloque, puedes recuperarlos fácilmente gracias al código. Puede recuperar todo el bloque incluso si falta hasta 1 MB del bloque. Es la misma tecnología que le permite a su computadora leer todos los datos en un CD-ROM incluso si está rayado.

Esto significa que, para que el 100% de un bloque esté disponible, el productor del bloque solo debe publicar el 50% en la red. Si un productor de bloques malicioso quiere retener incluso el 1% del bloque, debe retener el 50% del bloque, porque ese 1% se puede recuperar del 50%.

Con este conocimiento, los clientes pueden hacer algo inteligente para asegurarse de que no se haya retenido ninguna parte del bloqueo. Pueden intentar descargar algunos fragmentos aleatorios del bloque, y si no pueden descargar alguno de esos fragmentos (es decir, el fragmento está en el 50% de los fragmentos no publicados por un productor de bloques malicioso), rechazarán el bloque ya que no está disponible. Después de descargar un fragmento aleatorio, existe un 50% de posibilidades de que sientan que el bloque no está disponible. Después de dos fragmentos, hay un 75% de probabilidad, después de tres fragmentos, hay un 87,5% de probabilidad, por lo que hasta después de siete partes, hay un 99% de probabilidad. Esto es muy conveniente, porque significa que los clientes pueden verificar con alta probabilidad que se haya publicado todo el bloque, con solo una pequeña parte descargada.

Los detalles completos de las pruebas de disponibilidad de datos son un poco más complejos y se basan en otras suposiciones, como exigir un número mínimo de clientes ligeros en la red para que muchos clientes ligeros realicen solicitudes de muestra para poder recuperar el bloque completo juntos. Puedes consultar el original datos de disponibilidad de papel de prueba si quieres aprender más.

Conclusión

En este artículo, presentamos el problema de la disponibilidad de datos, demostramos por qué la escalabilidad de la cadena de bloques es importante y describimos una solución.

Para obtener más información, consulte los siguientes recursos:

}

Hasta aquí por hoy en Cryptoneros, hasta la próxima.

Quizás también te interesa leer…

1 Comentario

  1. Pablo

    Nice post. I was checking constantly this blog and I am impressed!
    Extremely helpful information specifically the last part 🙂 I care for such information a lot.
    I was looking for this particular information for a long time.

    Thank you and best of luck.

    Responder

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *