¿Qué pasaría si perdieras la memoria cada hora? ¿Y necesitas pedirle constantemente a alguien que te diga lo que has hecho? Ese es el estado actual de los contratos inteligentes. En cadenas de bloques como Ethereum, los contratos inteligentes no pueden acceder directamente a estados más allá de 256 bloques. Este problema se agrava aún más en el ecosistema de múltiples cadenas, donde la recuperación y verificación de datos en diferentes capas de ejecución es aún más difícil.
En 2020, Vitalik Buterin y Tomasz Stanczak propusieron una forma de acceder a los datos a lo largo del tiempo. Si bien el EIP se ha estancado, su necesidad ha resurgido en el mundo de cadenas múltiples centrado en la acumulación. Hoy en día, las pruebas de almacenamiento se han convertido en una frontera para dar conciencia y memoria a los contratos inteligentes.
Hay varias formas en que las dapps pueden acceder a los datos y al estado. Todos los enfoques requieren que la aplicación confíe en humanos/entidades o en seguridad o código criptoeconómico y tenga algunas compensaciones:
Dados los desafíos y limitaciones de estas soluciones, existe una clara necesidad de almacenar y proporcionar hashes de bloques en la cadena. Aquí es donde entran las pruebas de almacenamiento. Para comprender mejor las pruebas de almacenamiento, echemos un vistazo rápido al almacenamiento de datos en blockchains.
Una cadena de bloques es una base de datos pública que se actualiza y comparte entre muchas computadoras en una red. Los datos y el estado se almacenan en grupos consecutivos llamados bloques y cada bloque hace referencia criptográficamente a su padre almacenando el hash del encabezado del bloque anterior.
Tomemos como ejemplo el bloque Ethereum. Ethereum aprovecha un tipo particular de árbol Merkle conocido como "árbol Merkle Patricia" (MPT). Los encabezados de bloques de Ethereum contienen raíces de cuatro intentos diferentes de Merkle-Patricia, es decir Prueba de estado, prueba de almacenamiento, prueba de recibos y prueba de transacciones. Estos 4 intentos codifican asignaciones que comprenden todos los datos de Ethereum. Los árboles Merkle se utilizan debido a su eficiencia en el almacenamiento de datos. Al utilizar hashes recursivos, eventualmente solo es necesario almacenar el hash raíz, lo que ahorra mucho espacio. Permiten que cualquiera pueda probar la existencia de un elemento en el árbol demostrando que el hash recursivo de los nodos conduce al mismo hash raíz. Las pruebas de Merkle permiten a los clientes ligeros de Ethereum obtener respuestas a preguntas como:
En lugar de descargar cada transacción y cada bloque, un "cliente ligero" sólo puede descargar la cadena de encabezados de bloque y verificar la información utilizando Merkle Proofs. Esto hace que el proceso general sea altamente eficiente. Consulte este artículo de investigación del blog de Vitalik y Maven11 para comprender mejor la implementación, las ventajas y los desafíos asociados con Merkle Trees.
Las pruebas de almacenamiento nos permiten demostrar que algo está confirmado en la base de datos y que también es válido mediante compromisos criptográficos. Si podemos proporcionar dicha prueba, será una afirmación verificable de que algo sucedió en la cadena de bloques.
Las pruebas de almacenamiento permiten dos funcionalidades principales:
Las pruebas de almacenamiento a un nivel muy alto verifican si el bloque específico es parte del historial canónico de la cadena de bloques y luego verifican si los datos específicos solicitados son parte del bloque. Esto podría lograrse mediante:
Algunos de los proyectos que adoptan este enfoque son Herodotus, Lagrange, Axiom, Hyper Oracle, Brevis Network y nil Foundation. Si bien se están realizando esfuerzos significativos para que las aplicaciones sean conscientes del estado en múltiples blockchains, IBC (Comunicación Inter Blockchain) se destaca como un estándar de interoperabilidad que permite aplicaciones como ICQ (consultas Interchain) e ICA (cuentas Interchain). ICQ permite que las aplicaciones en la Cadena A consulten el estado de la cadena B al incluir la consulta en un paquete IBC simple y ICA permite que una cadena de bloques controle de forma segura una cuenta en otra cadena de bloques. Combinarlos puede permitir casos de uso interesantes entre cadenas. Los proveedores de RaaS como Saga ofrecen estas funcionalidades a todas sus cadenas de aplicaciones de forma predeterminada mediante IBC.
Hay muchas maneras en que se pueden optimizar las pruebas de almacenamiento para encontrar el equilibrio adecuado entre el consumo de memoria, el tiempo de prueba, el tiempo de verificación, la eficiencia informática y la experiencia del desarrollador. El proceso general se puede dividir en términos generales en 3 subprocesos principales.
Acceso a datos: en este subproceso, el proveedor de servicios accede a los encabezados de bloque de la cadena de origen de forma nativa en la capa de ejecución o manteniendo un caché en la cadena. Para el acceso a datos entre cadenas, se requiere la verificación del consenso de la cadena de origen sobre la cadena de destino. Algunos de los enfoques y optimizaciones que se están adoptando incluyen:
Además del acceso a los datos, los contratos inteligentes también deberían poder realizar cálculos arbitrarios sobre los datos. Si bien es posible que algunos casos de uso no requieran cálculo, es un importante servicio de valor agregado para muchos otros casos de uso. Muchos de los proveedores de servicios permiten cálculos sobre los datos, ya que se puede generar una prueba zk del cálculo y proporcionarla en cadena para su validez. Debido a que las soluciones AMP existentes como Axelar, LayerZero y Polyhedra Network podrían usarse para el acceso a datos, el procesamiento de datos podría convertirse en un diferenciador para los proveedores de servicios de prueba de almacenamiento.
Hyper Oracle, por ejemplo, permite a los desarrolladores definir cálculos personalizados fuera de la cadena con JavaScript. Brevis ha diseñado un mercado abierto de ZK Query Engines que acepta consultas de datos de dApps y las procesa utilizando los encabezados de bloque certificados. El contrato inteligente envía una consulta de datos, que es recogida por un probador del mercado. Prover genera una prueba basada en la entrada de la consulta, los encabezados de bloque relevantes (de la capa de agregación Brevis) y los resultados. Lagrange ha introducido ZK Big Data Stack para probar modelos de programación distribuida como SQL, MapReduce y Spark/RDD. Las pruebas son modulares y se pueden generar a partir de cualquier encabezado de bloque que se origine a partir de puentes entre cadenas y protocolos AMP existentes. ZK MapReduce, el primer producto de la pila Lagrange ZK BigData, es un motor de computación distribuida (basado en el conocido modelo de programación MapReduce) para probar resultados de computación que involucran conjuntos considerables de datos de múltiples cadenas. Por ejemplo, se puede utilizar una única prueba ZKMR para demostrar cambios en la liquidez de un DEX implementado en 4 a 5 cadenas durante un período de tiempo específico. Para consultas relativamente simples, el cálculo también se puede realizar directamente en la cadena, como lo hace Heródoto en este momento.
Las pruebas de estado y de almacenamiento pueden desbloquear muchos casos de uso nuevos para contratos inteligentes en la capa de aplicación, middleware e infraestructura. Algunos de estos son:
Gobernancia:
Todas las pruebas anteriores se pueden utilizar para brindar una experiencia personalizada a los usuarios. Dapps podría ofrecer descuentos o privilegios para retener a comerciantes o usuarios experimentados y ofrecer una experiencia de usuario simplificada para usuarios novatos.
Los dos últimos casos de uso requerirán que la prueba se actualice cada vez que se agregue un nuevo bloque a la cadena de origen.
La conciencia permite a las empresas de tecnología servir mejor a sus clientes. Desde la identidad del usuario hasta el comportamiento de compra y los gráficos sociales, las empresas de tecnología aprovechan el conocimiento para desbloquear capacidades como la orientación precisa, la segmentación de clientes y el marketing viral. Las empresas de tecnología tradicionales necesitan un permiso explícito de sus usuarios y deben tener cuidado al gestionar los datos de los usuarios. Sin embargo, todos los datos de los usuarios en blockchains sin permiso están disponibles públicamente sin revelar necesariamente la identidad del usuario. Los contratos inteligentes deberían poder aprovechar los datos disponibles públicamente para servir mejor a los usuarios. El desarrollo y la adopción de ecosistemas más especializados harán que la conciencia estatal a lo largo del tiempo y las cadenas de bloques sean un problema cada vez más importante por resolver. Las pruebas de almacenamiento pueden permitir que Ethereum surja como una capa de identidad y propiedad de activos, además de ser una capa de liquidación. Los usuarios podrían mantener su identidad y activos clave en Ethereum, que podrían usarse en múltiples cadenas de bloques sin conectar activos todo el tiempo. Seguimos entusiasmados con las nuevas posibilidades y casos de uso que se desbloquearán en el futuro.
¿Qué pasaría si perdieras la memoria cada hora? ¿Y necesitas pedirle constantemente a alguien que te diga lo que has hecho? Ese es el estado actual de los contratos inteligentes. En cadenas de bloques como Ethereum, los contratos inteligentes no pueden acceder directamente a estados más allá de 256 bloques. Este problema se agrava aún más en el ecosistema de múltiples cadenas, donde la recuperación y verificación de datos en diferentes capas de ejecución es aún más difícil.
En 2020, Vitalik Buterin y Tomasz Stanczak propusieron una forma de acceder a los datos a lo largo del tiempo. Si bien el EIP se ha estancado, su necesidad ha resurgido en el mundo de cadenas múltiples centrado en la acumulación. Hoy en día, las pruebas de almacenamiento se han convertido en una frontera para dar conciencia y memoria a los contratos inteligentes.
Hay varias formas en que las dapps pueden acceder a los datos y al estado. Todos los enfoques requieren que la aplicación confíe en humanos/entidades o en seguridad o código criptoeconómico y tenga algunas compensaciones:
Dados los desafíos y limitaciones de estas soluciones, existe una clara necesidad de almacenar y proporcionar hashes de bloques en la cadena. Aquí es donde entran las pruebas de almacenamiento. Para comprender mejor las pruebas de almacenamiento, echemos un vistazo rápido al almacenamiento de datos en blockchains.
Una cadena de bloques es una base de datos pública que se actualiza y comparte entre muchas computadoras en una red. Los datos y el estado se almacenan en grupos consecutivos llamados bloques y cada bloque hace referencia criptográficamente a su padre almacenando el hash del encabezado del bloque anterior.
Tomemos como ejemplo el bloque Ethereum. Ethereum aprovecha un tipo particular de árbol Merkle conocido como "árbol Merkle Patricia" (MPT). Los encabezados de bloques de Ethereum contienen raíces de cuatro intentos diferentes de Merkle-Patricia, es decir Prueba de estado, prueba de almacenamiento, prueba de recibos y prueba de transacciones. Estos 4 intentos codifican asignaciones que comprenden todos los datos de Ethereum. Los árboles Merkle se utilizan debido a su eficiencia en el almacenamiento de datos. Al utilizar hashes recursivos, eventualmente solo es necesario almacenar el hash raíz, lo que ahorra mucho espacio. Permiten que cualquiera pueda probar la existencia de un elemento en el árbol demostrando que el hash recursivo de los nodos conduce al mismo hash raíz. Las pruebas de Merkle permiten a los clientes ligeros de Ethereum obtener respuestas a preguntas como:
En lugar de descargar cada transacción y cada bloque, un "cliente ligero" sólo puede descargar la cadena de encabezados de bloque y verificar la información utilizando Merkle Proofs. Esto hace que el proceso general sea altamente eficiente. Consulte este artículo de investigación del blog de Vitalik y Maven11 para comprender mejor la implementación, las ventajas y los desafíos asociados con Merkle Trees.
Las pruebas de almacenamiento nos permiten demostrar que algo está confirmado en la base de datos y que también es válido mediante compromisos criptográficos. Si podemos proporcionar dicha prueba, será una afirmación verificable de que algo sucedió en la cadena de bloques.
Las pruebas de almacenamiento permiten dos funcionalidades principales:
Las pruebas de almacenamiento a un nivel muy alto verifican si el bloque específico es parte del historial canónico de la cadena de bloques y luego verifican si los datos específicos solicitados son parte del bloque. Esto podría lograrse mediante:
Algunos de los proyectos que adoptan este enfoque son Herodotus, Lagrange, Axiom, Hyper Oracle, Brevis Network y nil Foundation. Si bien se están realizando esfuerzos significativos para que las aplicaciones sean conscientes del estado en múltiples blockchains, IBC (Comunicación Inter Blockchain) se destaca como un estándar de interoperabilidad que permite aplicaciones como ICQ (consultas Interchain) e ICA (cuentas Interchain). ICQ permite que las aplicaciones en la Cadena A consulten el estado de la cadena B al incluir la consulta en un paquete IBC simple y ICA permite que una cadena de bloques controle de forma segura una cuenta en otra cadena de bloques. Combinarlos puede permitir casos de uso interesantes entre cadenas. Los proveedores de RaaS como Saga ofrecen estas funcionalidades a todas sus cadenas de aplicaciones de forma predeterminada mediante IBC.
Hay muchas maneras en que se pueden optimizar las pruebas de almacenamiento para encontrar el equilibrio adecuado entre el consumo de memoria, el tiempo de prueba, el tiempo de verificación, la eficiencia informática y la experiencia del desarrollador. El proceso general se puede dividir en términos generales en 3 subprocesos principales.
Acceso a datos: en este subproceso, el proveedor de servicios accede a los encabezados de bloque de la cadena de origen de forma nativa en la capa de ejecución o manteniendo un caché en la cadena. Para el acceso a datos entre cadenas, se requiere la verificación del consenso de la cadena de origen sobre la cadena de destino. Algunos de los enfoques y optimizaciones que se están adoptando incluyen:
Además del acceso a los datos, los contratos inteligentes también deberían poder realizar cálculos arbitrarios sobre los datos. Si bien es posible que algunos casos de uso no requieran cálculo, es un importante servicio de valor agregado para muchos otros casos de uso. Muchos de los proveedores de servicios permiten cálculos sobre los datos, ya que se puede generar una prueba zk del cálculo y proporcionarla en cadena para su validez. Debido a que las soluciones AMP existentes como Axelar, LayerZero y Polyhedra Network podrían usarse para el acceso a datos, el procesamiento de datos podría convertirse en un diferenciador para los proveedores de servicios de prueba de almacenamiento.
Hyper Oracle, por ejemplo, permite a los desarrolladores definir cálculos personalizados fuera de la cadena con JavaScript. Brevis ha diseñado un mercado abierto de ZK Query Engines que acepta consultas de datos de dApps y las procesa utilizando los encabezados de bloque certificados. El contrato inteligente envía una consulta de datos, que es recogida por un probador del mercado. Prover genera una prueba basada en la entrada de la consulta, los encabezados de bloque relevantes (de la capa de agregación Brevis) y los resultados. Lagrange ha introducido ZK Big Data Stack para probar modelos de programación distribuida como SQL, MapReduce y Spark/RDD. Las pruebas son modulares y se pueden generar a partir de cualquier encabezado de bloque que se origine a partir de puentes entre cadenas y protocolos AMP existentes. ZK MapReduce, el primer producto de la pila Lagrange ZK BigData, es un motor de computación distribuida (basado en el conocido modelo de programación MapReduce) para probar resultados de computación que involucran conjuntos considerables de datos de múltiples cadenas. Por ejemplo, se puede utilizar una única prueba ZKMR para demostrar cambios en la liquidez de un DEX implementado en 4 a 5 cadenas durante un período de tiempo específico. Para consultas relativamente simples, el cálculo también se puede realizar directamente en la cadena, como lo hace Heródoto en este momento.
Las pruebas de estado y de almacenamiento pueden desbloquear muchos casos de uso nuevos para contratos inteligentes en la capa de aplicación, middleware e infraestructura. Algunos de estos son:
Gobernancia:
Todas las pruebas anteriores se pueden utilizar para brindar una experiencia personalizada a los usuarios. Dapps podría ofrecer descuentos o privilegios para retener a comerciantes o usuarios experimentados y ofrecer una experiencia de usuario simplificada para usuarios novatos.
Los dos últimos casos de uso requerirán que la prueba se actualice cada vez que se agregue un nuevo bloque a la cadena de origen.
La conciencia permite a las empresas de tecnología servir mejor a sus clientes. Desde la identidad del usuario hasta el comportamiento de compra y los gráficos sociales, las empresas de tecnología aprovechan el conocimiento para desbloquear capacidades como la orientación precisa, la segmentación de clientes y el marketing viral. Las empresas de tecnología tradicionales necesitan un permiso explícito de sus usuarios y deben tener cuidado al gestionar los datos de los usuarios. Sin embargo, todos los datos de los usuarios en blockchains sin permiso están disponibles públicamente sin revelar necesariamente la identidad del usuario. Los contratos inteligentes deberían poder aprovechar los datos disponibles públicamente para servir mejor a los usuarios. El desarrollo y la adopción de ecosistemas más especializados harán que la conciencia estatal a lo largo del tiempo y las cadenas de bloques sean un problema cada vez más importante por resolver. Las pruebas de almacenamiento pueden permitir que Ethereum surja como una capa de identidad y propiedad de activos, además de ser una capa de liquidación. Los usuarios podrían mantener su identidad y activos clave en Ethereum, que podrían usarse en múltiples cadenas de bloques sin conectar activos todo el tiempo. Seguimos entusiasmados con las nuevas posibilidades y casos de uso que se desbloquearán en el futuro.