¿Cómo verifico los activos del árbol de Merkle de OKX? Árbol de Merkle (versión 1)

Publicado el 21 mar 2023Actualizado el 8 oct 2025Lectura de 8 min80

¿Qué es un árbol de Merkle?

Un Árbol de Merkle (o árbol hash) es una estructura de datos, que normalmente es un árbol binario. Utiliza funciones predefinidas para calcular el valor hash de un nodo de abajo hacia arriba, hasta el nodo raíz superior del árbol.

Información del nodo

En cada nodo del árbol almacena la siguiente información:

  • Valor hash del nodo

  • Cantidad de criptomonedas de un usuario capturada por la instantánea de auditoría (tomemos como ejemplo BTC, ETH y USDC).

valor hash,{"BTC":"BTC amount","ETH":"ETH amount","USDT":"USDT amount"} be324cf06aee0616b4ec20c3,{"BTC":"1.023","ETH":"0","USDT":"20.2343322"}

Regla de hash

  • Nodos hoja (excepto nodos padding)

hash=SHA256(nonce+saldos)

Asignaremos un nonce único para cada usuario, que se puede encontrar en la página de auditoría del usuario; saldos es una cadena json compuesta por los activos y los importes de los usuarios que fueron capturados por la instantánea de auditoría, por ejemplo: {"BTC":"1.023","ETH":"0","USDT":"20.2343322"} (NOTA: hay que eliminar los ceros finales y mantener 8 decimales de precisión).

  • Nodos principales

hash de un nodo principal = SHA256(h1+h2+(h1 importe BTC+h2 importe BTC)+(h1 importe ETH+h2 importe ETH)+(h1 importe USDC+h2 importe USDC)+altura)

h1 = Hash del nodo secundario izquierdo del nodo actual, h2 = Hash del nodo secundario derecho del nodo actual, audit_id = ID de la auditoría actual, altura = la altura del nodo h1 (o h2) Definición de altura: altura del nodo hoja inferior = 1, altura de un nodo principal = altura de su nodo secundario + 1, el nodo raíz tiene la altura máxima

Regla de los nodos padding

Para construir un árbol de Merkle completo (un árbol binario completo), se necesitan 2^n nodos hoja, pero es posible que los datos reales no cumplan ese requisito e incluso que haya un número impar de datos. En tales circunstancias, si el nodo k no tiene nodos hermanos, se generará automáticamente un nodo hermano k' como nodo de padding, de modo que hash(k')=hash(k), y los importes de los activos se fijarán en 0 para todas las monedas. Por ejemplo:

Hash Saldos
h1 {"BTC": 1, "ETH": 1,"USDT": 1}
h2 {"BTC": 1, "ETH": 2,"USDT": 3}
h3 {"BTC": 1, "ETH": 2,"USDT": 4}

En este ejemplo, el nodo padding h4=h3, y los saldos almacenados en el nodo son {"BTC": 0, "ETH": 0,"USDT": 0} como se muestra en la imagen que aparece a continuación (nodo verde):

hash de un nodo principal = SHA256(h1+h2+(h1 importe BTC+h2 importe BTC)+(h1 importe ETH+h2 importe ETH)+(h1 importe USDC+h2 importe USDC)+altura) Así: h6 = SHA256(h3 + h4 + (1+0)+(2+0)+(4+0)+altura)

¿Cómo puedo verificar si mis activos están incluidos en el árbol de Merkle de OKX?

Teoría de la verificación

OKX, se puede calcular el valor hash de un nodo principal de abajo hacia arriba basándose en sus nodos secundarios izquierdo y derecho, hasta obtener el valor hash del nodo raíz, y luego se puede comparar el valor hash calculado del nodo raíz con el obtenido del nodo raíz de la ruta del árbol de Merkle. Si son idénticos, la verificación se supera, y viceversa.

  • Ejemplo: consulta la imagen anterior y el texto json a continuación, basándote en el nodo h3 del usuario y proporcionando su nodo hermano h4, se puede calcular el hash de su nodo principal h6, y proporcionando el nodo hermano h5 de h6, se puede calcular el hash de su nodo principal h7, luego compara el valor hash de h7 con el recopilado en el nodo raíz de la ruta del árbol de Merkle y comprueba si son idénticos para completar el proceso de verificación.

  • Datos de la ruta del árbol de Merkle en formato json:

{ "self": { "balances": { "BTC": "1", "ETH": "1", "USDT": "1" }, "nonce": "aa8442ee975df827dc14e527e3ea01db71fe5a6cfe867d77f6a4148fc492743c", "hash": "ca080cc4b04630c9e667e3177be7b093af743101a300cd737dd2da6dbe801be6", "type": 1, "height": 1 }, "path": [{ "balances": { "BTC": "1", "ETH": "2", "USDT": "3" }, "hash": "7d16e6b5203299b85498aa35b964c83903a933d549f99ff3ca8b20c243c2be3e", "type": 2, "height": 1 }, { "balances": { "BTC": "1", "ETH": "2", "USDT": "4" }, "hash": "4d6376b3a51693be961dd402b620c3f2536cb3f7275629fa23e2d1c6c7b319db", "type": 2, "height": 2 }, { "balances": { "BTC": "3", "ETH": "5", "USDT": "8" }, "hash": "af1787033e8d32d600e2e40dc616c1f8d4271e1c182ed57b6e9585e1ac5aa959", "type": 3, "height": 3 }] }

Pasos de verificación

  1. Para verificar si el saldo de activos de tu cuenta se ha incluido como hoja de Merkle, inicia sesión en tu cuenta de OKX y selecciona Activos, Auditorías para ver las auditorías recientes. También puedes seleccionar Ver detalles para ver los datos de la auditoría

    Selecciona Activos y Ver detalles para comprender mejor la auditoría de datos

  2. También puedes verificar manualmente tus activos en el árbol de Merkle siguiendo los pasos de nuestra guía. Para obtener los datos que necesitas para la verificación manual, selecciona Copiar datos

    Selecciona Copiar datos para el proceso de verificación manual

  3. Después de seleccionar Copiar datos, abre el editor de texto (por ejemplo, bloc de notas), pega y guarda la cadena json como archivo json

Pasos:

Mac:

  1. Abre el terminal, introduce el comando touch merkle_proof_file.json y se creará un archivo json. El archivo se guarda en el escritorio del sistema de forma predeterminada

  2. Puedes abrir Finder y buscar merkle_proof_file.json para encontrar este archivo. Abre este archivo JSON, pega los datos copiados y guárdalo

Windows

  1. Haz doble clic para abrir un editor de texto (por ejemplo, bloc de notas), pega los datos y guárdalos como un archivo json. En nuestro caso, nombraremos el archivo merkle_proof_file.json. A continuación se muestra el texto json de los datos de la ruta del árbol de Merkle:
    { "self": { "balances": { "BTC": "1", "ETH": "1", "USDT": "1" }, "nonce": "aa8442ee975df827dc14e527e3ea01db71fe5a6cfe867d77f6a4148fc492743c", "hash": "ca080cc4b04630c9e667e3177be7b093af743101a300cd737dd2da6dbe801be6", "type": 1, "height": 1 }, "path": [{ "balances": { "BTC": "1", "ETH": "2", "USDT": "3" }, "hash": "7d16e6b5203299b85498aa35b964c83903a933d549f99ff3ca8b20c243c2be3e", "type": 2, "height": 1 }, { "balances": { "BTC": "1", "ETH": "2", "USDT": "4" }, "hash": "4d6376b3a51693be961dd402b620c3f2536cb3f7275629fa23e2d1c6c7b319db", "type": 2, "height": 2 }, { "balances": { "BTC": "3", "ETH": "5", "USDT": "8" }, "hash": "af1787033e8d32d600e2e40dc616c1f8d4271e1c182ed57b6e9585e1ac5aa959", "type": 3, "height": 3 }] }

  2. Descarga la herramienta de verificación de código abierto de OKX (MerkleValidator)

  3. Guarda la herramienta de verificación de código abierto de OKX (MerkleValidator) y el archivo de datos (merkle_proof_file.json) en la misma carpeta. En este caso, la herramienta y el archivo de datos se colocan en la carpeta Descargas con el nombre proof-of-reserves, como se muestra a continuación:

  4. Abre el terminal (para Mac: Terminal; para Windows: Consola de comandos)

  5. Ejecuta el comando y busca el directorio de la carpeta descargada. En nuestro caso, introduce el comando: cd ~/Descargas/proof-of-reserve

  6. Escribe el siguiente comando y pulsa para iniciar la verificación:
    Mac: ./MerkleValidator --merkle_proof_file merkle_proof_file.json
    Windows:
    MerkleValidator.exe --merkle_proof_file merkle_proof_file.json
    Nota: si usas Mac y aparece un mensaje que indica que no se puede abrir la herramienta porque no se puede verificar la identidad del desarrollador, accede a Ajustes del sistema > Privacidad y seguridad > Seguridad > selecciona App Store y desarrolladores identificados en la sección de seguridad para permitir la [herramienta]

  7. Comprueba el resultado. Si se supera la verificación, aparecerá Validación de la ruta del árbol de Merkle superada como se muestra a continuación:

    Si la verificación falla, aparecerá Validación de la ruta del árbol de Merkle no superada como se muestra a continuación:

  8. También puedes consultar el código de la herramienta de verificación de código abierto de OKX (MerkleValidator) y la definición del árbol de Merkle de OKX, crear una app por tu cuenta para verificar que tus activos sean capturados por el árbol de Merkle creado a partir de la instantánea de auditoría, utilizando los datos de la ruta del árbol de Merkle recogidos en el paso 2