Árboles de Merkle: integridad de transacciones a escala
Construya árboles de Merkle y genere pruebas de inclusión de forma eficiente.
Árboles de Merkle: integridad de transacciones a escala es una lección gratuita de Cryptology Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cryptology Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cryptology Academy incluye 4 lecciones en total.
Problema: verificar transacciones de forma eficiente
Un bloque de Bitcoin contiene aproximadamente 2000 transacciones. Para demostrar que la transacción T está incluida sin descargar las 2000 transacciones, necesitamos una prueba compacta. Los árboles de Merkle resuelven este problema: el tamaño de la prueba es O(log n) hashes en lugar de O(n) transacciones.
Construcción de un árbol de Merkle
Hojas: SHA256d (doble SHA-256) de cada transacción. Padre: SHA256d(left_child_hash || right_child_hash). Repita el proceso hasta obtener un único hash raíz. Si hay un número impar de nodos, duplique el último nodo. La raíz es la raíz de Merkle almacenada en el encabezado del bloque (32 bytes).
Raíz de Merkle en Python
import hashlib def sha256d(x): return hashlib.sha256(hashlib.sha256(x).digest()).digest() def merkle_root(txids): if len(txids)%2: txids.append(txids[-1]) while len(txids)>1: txids=[sha256d(txids[i]+txids[i+1]) for i in range(0,len(txids),2)] return txids[0].hex()
Prueba de Merkle (prueba de inclusión)
Para demostrar que la transacción T está en la posición i, proporcione los hashes hermanos de cada nivel desde la hoja de T hasta la raíz (O(log n) hashes). El verificador vuelve a calcular la raíz a partir de T y de la ruta de hashes hermanos. Si la raíz calculada coincide con la raíz de Merkle del encabezado del bloque, queda demostrada la inclusión de T.
Ejemplo del tamaño de una prueba
1024 transacciones → una prueba de Merkle = 10 hashes = 320 bytes. Bloque completo = aproximadamente 1 MB. Los clientes SPV descargan solo el encabezado de 80 bytes + la prueba de Merkle de 320 bytes por cada transacción que les interesa, lo que supone un ahorro de ancho de banda del 99,97 % frente a descargar el bloque completo.
Detección de alteraciones
Si cambia cualquier transacción del árbol, cambia el hash de su hoja y el cambio se propaga hasta modificar la raíz de Merkle. La raíz modificada ya no coincide con la del encabezado del bloque (que está protegida mediante PoW). Cualquier modificación se puede detectar calculando la raíz a partir de las transacciones.
Trie de Merkle de Patricia (Ethereum)
Ethereum amplía los árboles de Merkle con tries (Trie de Merkle de Patricia): un radix trie codificado con prefijo hexadecimal en el que cada nodo tiene un hash de Merkle. Se utiliza para: el state trie (saldos de cuentas), el transaction trie y el receipt trie. Permite demostrar de forma eficiente el estado de una cuenta sin disponer de los datos del nodo completo.
Merkle Mountain Range
Una Merkle Mountain Range (MMR) es una estructura de Merkle de solo adición para datos similares a registros. Se añaden nuevos elementos y se mantienen los picos (raíces de subárboles cuyo tamaño es una potencia de 2). Se utiliza en Grin/MimbleWimble y ZCash para obtener pruebas compactas y eficientes sobre un registro de solo adición.
Árboles de Verkle
Los árboles de Verkle sustituyen a los árboles de Merkle en la hoja de ruta de Ethereum (EIP-6800): utilizan compromisos vectoriales (compromisos polinómicos KZG) en lugar de hashes. Tamaño de la prueba: O(1) frente a O(log n) en Merkle. Permiten que los clientes sin estado verifiquen el estado sin almacenar el trie completo.
Certificate Transparency como registro de Merkle
Certificate Transparency (RFC 6962) utiliza un registro de Merkle de solo adición: cada certificado emitido por una CA es una hoja. Las pruebas de inclusión verifican que un certificado se registró. Las pruebas de coherencia verifican que el registro solo admite adiciones (sin eliminaciones ni inserciones). Los proveedores de navegadores verifican los SCT mediante este registro.
Modelo de objetos de Git
Los árboles de Git (instantáneas de directorios) son árboles de Merkle: cada nodo del árbol aplica un hash a sus blobs de archivos y subárboles. El hash de un commit identifica de forma única el estado completo del código. Por eso git checkout
Comprobación rápida
¿Cuántos hashes requiere una prueba de Merkle para demostrar la inclusión en un árbol de 1024 hojas?
Resumen
Los árboles de Merkle permiten realizar pruebas de inclusión de O(log n). Bitcoin almacena la raíz de Merkle en los encabezados de los bloques; los clientes SPV utilizan pruebas. Ethereum los amplía mediante los Tries de Merkle de Patricia. Los árboles de Verkle sustituirán a los árboles de Merkle para ofrecer pruebas de O(1). Siguiente tema: minería mediante prueba de trabajo y dificultad.
Preguntas frecuentes
¿La lección «Árboles de Merkle: integridad de transacciones a escala» es gratis?
Sí — el texto completo de «Árboles de Merkle: integridad de transacciones a escala» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cryptology Academy, actualiza a CoddyKit PRO. El curso de Cryptology Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Árboles de Merkle: integridad de transacciones a escala»?
Construya árboles de Merkle y genere pruebas de inclusión de forma eficiente. Practicas Cryptology Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Cryptology Academy?
No se requiere experiencia previa. Cryptology Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Árboles de Merkle: integridad de transacciones a escala»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Cryptology Academy?
Sí. Cada lección de Cryptology Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Cadenas de hash y vinculación de bloques
- Árboles de Merkle: integridad de transacciones a escala
- Proof of Work: minería y ajuste de dificultad
- Bitcoin Script y verificación de firmas UTXO