Integrarse con contratos de Blobstream
Comenzando
Requisitos previos
Asegúrese de tener instalado lo siguiente:
Instalación de contratos Blobstream X
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 uso
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
Estructuras de datos
Cada DataRootTuple
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 BinaryMerkleProof
es un RFC-6962- 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.
Interfaz
El IDAOracle
(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.
Consultando la prueba
Para probar que los datos fueron publicados a Celestia, consulte el documentación de consultas de prueba para comprender cómo consultar las pruebas de los nodos de consenso de Celestia y hacerlas utilizables en el contrato del verificador Blobstream X.
Verificación de la inclusión de datos para pruebas de fraude
Se puede encontrar una descripción general de alto nivel de cómo un L2 basado en el fraude interactuaría con Blobstream en documentación de pruebas de inclusión.
El DAVerifier
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.
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:
verifySharesToDataRootTupleRoot
: 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.verifyRowRootToDataRootTupleRoot
: 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.verifyMultiRowRootsToDataRootTupleRoot
: 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.computeSquareSizeFromRowProof
: 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 elverifyRowRootToDataRootTupleRoot()
método.computeSquareSizeFromShareProof
: 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 elverifySharesToDataRootTupleRoot()
método.
Para obtener una descripción general de una implementación de implementación de demostración, diríjase a la siguiente sección.
Last updated