Saltar al contenido principal

Esta página es una traducción que no ha sido revisada. Prevalece la página en inglés. English

Verificar un informe de atestiguamiento de un stablecoin

ReserveBeat almacena el SHA-256 de cada informe de atestiguamiento de emisor que captura. Elija un informe, cargue su propia copia del archivo y su navegador calculará su hash y lo comparará con el hash almacenado: COINCIDE o NO COINCIDE. El archivo nunca sale de su navegador. El verificador Apache-2.0, rb_verify.py, también se publica aquí, con su formato de paquete y sus archivos de prueba, cada uno con su SHA-256.

01Reservas

¿Cómo puedo verificar por mi cuenta las reservas de un stablecoin?

Compruebe tres cosas, en orden. Lea el suministro total del token en cadena en la fecha que cubre el informe del emisor. Abra el informe de atestiguamiento del emisor, calcule aquí su hash para confirmar que es la copia que ReserveBeat capturó y anote sus reservas y tokens en circulación. Luego compare las cifras del informe con el suministro sumado en todas las cadenas en las que está el token.

  1. Lea totalSupply() en el contrato del token en un bloque de la fecha de corte del informe, en cada cadena que cuenta el emisor. Cada resultado está en unidades base; divídalo entre diez elevado a los decimales del contrato.
  2. Descargue el informe de atestiguamiento del emisor desde el propio sitio del emisor, colóquelo en la comprobación de abajo y confirme COINCIDE frente al SHA-256 que ReserveBeat almacenó al capturar el informe.
  3. Sume el suministro en esas cadenas y compárelo con los tokens en circulación que declara el informe y, luego, con las reservas que declara. Las diferencias de fecha, alcance y lista de cadenas explican la mayoría de las brechas; las propias notas del informe indican su alcance.

02Comprobar

Comprobar un archivo de informe

Su navegador calcula el SHA-256 del archivo con WebCrypto. No se sube nada y la página no realiza ninguna solicitud mientras calcula el hash.

informe
USDC · 2026-07
SHA-256 registrado
9bb3e852cc468819261b1f72bba3e8344c414f93f95765ef963aaf1e9b6ec0e2
página del informe
/attestations/usdc/2026-07

Un resultado COINCIDE solo indica que los dos archivos son idénticos. No es una declaración sobre las cifras del informe, el emisor ni sus reservas.

04Verificador

El verificador independiente

rb_verify.py es un único archivo de Python, publicado bajo la Apache License 2.0 junto con todos los archivos que se enumeran abajo, de modo que cualquiera puede leerlo, ejecutarlo, modificarlo y redistribuirlo. Lee un paquete de evidencias, recorre la cadena de hashes desde el génesis, recalcula la raíz de Merkle de cada anclaje, comprueba las cargas útiles que contiene el paquete y vuelve a derivar todas las pruebas de almacenamiento. No importa nada de ReserveBeat ni realiza ninguna solicitud de red.

Qué necesita cada comprobación

  • La cadena, los anclajes, las raíces de Merkle, las cargas útiles incluidas y las pruebas de almacenamiento solo necesitan Python 3.10 o posterior, su biblioteca estándar y el único paquete fijado en requirements.txt. Keccak-256 viene incorporado.
  • Los sellos de tiempo RFC 3161 necesitan openssl en su PATH. Sin él, cada tramo de sello de tiempo que contiene un token cuenta como NOT VERIFIED y la ejecución falla. Un tramo cuyo paquete no almacena una cadena de CA también cuenta como NOT VERIFIED, salvo que usted pase --tsa-ca con las raíces de confianza que elija, como el paquete de CA de su sistema. La línea de ejecución del paquete que aparece abajo pasa la ruta de Debian y Ubuntu; en otro sistema, indique la ruta de su propio paquete de CA.
  • Las pruebas de OpenTimestamps se cuentan, no se comprueban. Comprobar una requiere el cliente ots y un nodo de Bitcoin; la opción --ots-dir escribe cada prueba junto a los bytes que sella, lista para ots verify.

Ejecútelo

python3 -m venv .venv && .venv/bin/pip install --require-hashes -r requirements.txt
.venv/bin/python rb_verify.py bundle <bundle.zip> --tsa-ca /etc/ssl/certs/ca-certificates.crt
.venv/bin/python rb_verify.py storage-proof <payload.json>
.venv/bin/python rb_verify.py pdf <report.pdf> --record <seq> --bundle <bundle.zip>

El código de salida 0 significa que se verificaron todas las comprobaciones aplicables, 1 significa que al menos una falló (se enumeran todos los fallos) y 2 significa que no se pudo leer la entrada. El mensaje final solo se imprime con la salida 0. Los registros posteriores al último anclaje diario figuran como PENDING: el mensaje los cuenta e indica que aún no tienen sello de tiempo, y cuando el más antiguo es más de 30 horas anterior al paquete pasan a OVERDUE y la ejecución falla.

Un paquete prepara evidencias para el examen. No es un atestiguamiento. Verificarlo muestra que los registros, los anclajes y las cargas útiles de elaboración propia son los consignados, en el orden y en los momentos declarados. No muestra que las cifras de los documentos subyacentes sean verdaderas.

05Paquetes

Paquetes de evidencias

Un zip por token publicado: cada registro de la cadena de evidencias del registro público desde el génesis, cada anclaje, los manifiestos que nombran los anclajes y la prueba criptográfica de almacenamiento que respalda la instantánea probada más reciente del token. Los documentos de terceros figuran solo por su SHA-256. Descargue uno y ejecute rb_verify.py bundle sobre él.

06Archivos

Los archivos

Los archivos
archivoSHA-256tamañodescarga
rb_verify.pyEl verificador: un solo archivo, Python 3.10 o posterior, la biblioteca estándar y un paquete fijado.fa95a9c64a761f0dd04cc52bdd4eb24ac95ab4c7f856bb1934126ea12763a9b756658 bytesDescargar rb_verify.py
requirements.txtEl único paquete fijado (rfc8785), con hash bloqueado para pip --require-hashes.037d29f8c6a15cc4f04892b7d3d5ccf029a9589ddc5e12fb376c4c6b8f3dc763480 bytesDescargar requirements.txt
FORMAT.mdEl formato del paquete de evidencias, versión 1, y cada comprobación que ejecuta el verificador.a49bdb8d3257b3936499c058b6a274745d80220e6d828533d72ace046915a84926013 bytesDescargar FORMAT.md
README.mdCómo instalar y ejecutar el verificador, y qué necesita cada comprobación.0b0cdfb5759ae6b9a7fb73286a9ee4c9b5b23b2763781ac9cd2a1e9720c5c59f2894 bytesDescargar README.md
LICENSEEl texto de la Apache License 2.0 que cubre todos los archivos aquí enumerados.cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d3011358 bytesDescargar LICENSE
fixtures/README.mdQué es cada archivo de prueba y qué debe imprimir el verificador para cada uno.3dd0678994d03856213cf41c740b023f689df21e70421ed5facc5f16439110e32079 bytesDescargar fixtures/README.md
fixtures/demo-tampered.expected.txtLo que rb_verify.py imprime para demo-tampered.zip, byte por byte, con el nombre del registro modificado.3946e5794f8454ebd2cab7ac92bc966551bcfd2725d27d08539b12b654692fba9376 bytesDescargar fixtures/demo-tampered.expected.txt
fixtures/demo-tampered.zipdemo.zip con un byte cambiado, en la hora de carga del registro 500. Debe fallar.b2e0a5b71c5fb03bdbf27e9e5f782fff7d988db976b6f2935bccb15d4fe8249d287621 bytesDescargar fixtures/demo-tampered.zip
fixtures/demo.expected.txtLo que rb_verify.py imprime para demo.zip, byte por byte.202f867ef18df4f4635b762df3dd954617d93e9221865790fe680da4c861d1929329 bytesDescargar fixtures/demo.expected.txt
fixtures/demo.zipEl paquete de evidencias del inquilino de demostración sintético: 1,229 registros y 19 anclajes. Sus sellos de tiempo provienen de una autoridad de sellado de tiempo local sin conexión, por lo que no son evidencia de terceros. Debe superar la verificación.003056835a4dbb5bca5373be64768fe04851570ef519357a6f93283824f30f63287621 bytesDescargar fixtures/demo.zip
fixtures/rfc6962-vectors.jsonVectores de prueba de Merkle Tree Hash de RFC 6962; cada raíz debe coincidir al recalcularse.605ac87d318ffef2a94aa05d1566f79c860d4916d9cfb466a5a9ecbab7b1a3051222 bytesDescargar fixtures/rfc6962-vectors.json
fixtures/usdc-storage-proof.expected.txtLo que rb_verify.py imprime para usdc-storage-proof.json, byte por byte.f549a0604299e3a11668b42294f0e86a66ff5b00632e84cd9963bb42c9ccfb5b385 bytesDescargar fixtures/usdc-storage-proof.expected.txt
fixtures/usdc-storage-proof.jsonUna prueba criptográfica de almacenamiento del suministro total de USDC en el bloque 25498038 de la red principal de Ethereum, a partir de datos reales de encabezado y eth_getProof de la red principal. Debe superar la verificación.b9e46b5bc7245e37b3430e1f96b7d5cdb3571086344e369ab9dc7bd8ecede75f73321 bytesDescargar fixtures/usdc-storage-proof.json

Para comprobar una descarga, ejecute sha256sum sobre ella (en macOS, shasum -a 256) y compare el resultado con el valor que se muestra.