Integrarse con contratos de Blobstream
Last updated
Last updated
Asegúrese de tener instalado lo siguiente:
Utilizaremos la implementación de Blobstream X de Blobstream, para que podamos instalar su repositorio como una dependencia:
Instale el repositorio de contratos de Blobstream X como una dependencia:
sh
Asegúrese de que el directorio desde el que está ejecutando este comando sea un repositorio git inicializado. Si no, simplemente inicializa el repositorio usando:
sh
Tenga en cuenta que la versión mínima del compilador Solidity para usar los contratos de Blobstream es 0.8.19
.
Ejemplo de contrato de solidez mínimo para un stub ZK rollup que aprovecha el BlobstreamX.sol
contrato para comprobar que los datos han sido publicados en Celestia:
solidez
En el DAVerifier
biblioteca, encontramos funciones que ayudan con la verificación de inclusión de datos y el cálculo del tamaño cuadrado de un bloque Celestia. Estas funciones funcionan con el contrato inteligente Blobstream X, utilizando diferentes pruebas para verificar y confirmar la disponibilidad de los datos. Veamos más de cerca estas funciones:
Cada es una tupla de altura de bloque y raíz de datos. Es análogo a un encabezado de bloque Celestia. DataRootTuple
s se retransmiten en lotes, comprometidos como a DataRootTuple
raíz S (es decir, una raíz Merkle de DataRootTuple
s).
El es un - conforme a la prueba Merkle. Desde DataRootTuple
s son Merkleized en un árbol Merkle binario, verificando la inclusión de un DataRootTuple
contra a DataRootTuple
la raíz de S requiere verificar una prueba de inclusión de Merkle.
El (Data Adisponibilidad Ola interfaz de Racle Interface) permite que los contratos L2 en Ethereum consulten el BlobstreamX.sol
contrato para retransmitido DataRootTuple
s. El método de interfaz única verifyAttestation
verifica una prueba de inclusión de Merkle que a DataRootTuple
se incluye en un lote específico (indexado por el lote nonce). En otras palabras, verifica análogamente que se incluye un encabezado de bloque específico en la cadena Celestia.
Para probar que los datos fueron publicados a Celestia, consulte el para comprender cómo consultar las pruebas de los nodos de consenso de Celestia y hacerlas utilizables en el contrato del verificador Blobstream X.
Se puede encontrar una descripción general de alto nivel de cómo un L2 basado en el fraude interactuaría con Blobstream en .
El la biblioteca está disponible en blobstream-contracts/lib/verifier/DAVerifier.sol
, y proporciona funciones para verificar la inclusión de acciones individuales (o múltiples) contra a DataRootTuple
. La biblioteca es apátrida y permite pasar un IDAOracle
interfaz como parámetro para verificar la inclusión en su contra.
: Esta función verifica que las acciones, que se publicaron en Celestia, fueron comprometidas por el contrato inteligente de Blobstream X. Comprueba que el contrato inteligente de Blobstream X comprometió la raíz de datos y que las raíces de las filas comprometieron las acciones.
: Esta función verifica que una raíz de fila/columna, de un bloque Celestia, fue comprometida por el contrato inteligente Blobstream X. Comprueba que el contrato inteligente de Blobstream X haya comprometido la raíz de datos y que la raíz de fila se comprometa con la raíz de datos.
: Esta función verifica que un conjunto de filas/columnas, desde un bloque Celestia, fueron comprometidas por el contrato inteligente Blobstream X. Comprueba que el contrato inteligente de Blobstream X haya comprometido la raíz de datos y que las raíces de las filas se comprometan con la raíz de datos.
: Esta función calcula el tamaño cuadrado del bloque Celestia desde una raíz de fila/columna hasta la prueba binaria Merkle de raíz de datos. Es responsabilidad del usuario verificar que la prueba es válida y se comprometió con éxito a utilizar el verifyRowRootToDataRootTupleRoot()
método.
: Esta función calcula el tamaño cuadrado del bloque Celestia de una acción a prueba de raíz de fila/columna. Es responsabilidad del usuario verificar que la prueba es válida y que las acciones se comprometieron con éxito a utilizar el verifySharesToDataRootTupleRoot()
método.
Para obtener una descripción general de una implementación de implementación de demostración, diríjase a .