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.
- 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.
- 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.
- 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 · 2025-02
- SHA-256 registrado
0f6f47eafcab3bb0e15499cfa900f844af887833bd386a56ecc88e58a0f88044- documento del emisor
- https://6778953.fs1.hubspotusercontent-na1.net/hubfs/6778953/USDCAttestationReports/2025/2025%20USDC_Examination%20Report%20February%2025.pdf
- página del informe
- /attestations/usdc/2025-02
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.
03Informes
Elija un informe
Todos los informes del tablero, por token y periodo. Al elegir uno se carga el SHA-256 registrado cuando ReserveBeat capturó el documento.
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
| archivo | SHA-256 | tamaño | descarga |
|---|---|---|---|
rb_verify.pyEl verificador: un solo archivo, Python 3.10 o posterior, la biblioteca estándar y un paquete fijado. | fa95a9c64a761f0dd04cc52bdd4eb24ac95ab4c7f856bb1934126ea12763a9b7 | 56658 bytes | Descargar rb_verify.py |
requirements.txtEl único paquete fijado (rfc8785), con hash bloqueado para pip --require-hashes. | 037d29f8c6a15cc4f04892b7d3d5ccf029a9589ddc5e12fb376c4c6b8f3dc763 | 480 bytes | Descargar requirements.txt |
FORMAT.mdEl formato del paquete de evidencias, versión 1, y cada comprobación que ejecuta el verificador. | a49bdb8d3257b3936499c058b6a274745d80220e6d828533d72ace046915a849 | 26013 bytes | Descargar FORMAT.md |
README.mdCómo instalar y ejecutar el verificador, y qué necesita cada comprobación. | 0b0cdfb5759ae6b9a7fb73286a9ee4c9b5b23b2763781ac9cd2a1e9720c5c59f | 2894 bytes | Descargar README.md |
LICENSEEl texto de la Apache License 2.0 que cubre todos los archivos aquí enumerados. | cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 | 11358 bytes | Descargar LICENSE |
fixtures/README.mdQué es cada archivo de prueba y qué debe imprimir el verificador para cada uno. | 3dd0678994d03856213cf41c740b023f689df21e70421ed5facc5f16439110e3 | 2079 bytes | Descargar 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. | 3946e5794f8454ebd2cab7ac92bc966551bcfd2725d27d08539b12b654692fba | 9376 bytes | Descargar fixtures/demo-tampered.expected.txt |
fixtures/demo-tampered.zipdemo.zip con un byte cambiado, en la hora de carga del registro 500. Debe fallar. | b2e0a5b71c5fb03bdbf27e9e5f782fff7d988db976b6f2935bccb15d4fe8249d | 287621 bytes | Descargar fixtures/demo-tampered.zip |
fixtures/demo.expected.txtLo que rb_verify.py imprime para demo.zip, byte por byte. | 202f867ef18df4f4635b762df3dd954617d93e9221865790fe680da4c861d192 | 9329 bytes | Descargar 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. | 003056835a4dbb5bca5373be64768fe04851570ef519357a6f93283824f30f63 | 287621 bytes | Descargar fixtures/demo.zip |
fixtures/rfc6962-vectors.jsonVectores de prueba de Merkle Tree Hash de RFC 6962; cada raíz debe coincidir al recalcularse. | 605ac87d318ffef2a94aa05d1566f79c860d4916d9cfb466a5a9ecbab7b1a305 | 1222 bytes | Descargar fixtures/rfc6962-vectors.json |
fixtures/usdc-storage-proof.expected.txtLo que rb_verify.py imprime para usdc-storage-proof.json, byte por byte. | f549a0604299e3a11668b42294f0e86a66ff5b00632e84cd9963bb42c9ccfb5b | 385 bytes | Descargar 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. | b9e46b5bc7245e37b3430e1f96b7d5cdb3571086344e369ab9dc7bd8ecede75f | 73321 bytes | Descargar 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.