Academia Libre · Itinerario 0 · Lección 0.3
Dos exportaciones del mismo expediente, en el formato público de WASTRA (wastra-export/1.0). Una está intacta. En la otra alguien cambió, después del registro, el peso que marcó la báscula. El ejercicio de la lección 0.3 es verificar las dos con el software libre y decir cuál comprobación falla y por qué.
academia_bueno.zip academia_pesaje_cambiado.zip
| Fichero | Bytes | Huella SHA-256 |
|---|---|---|
| academia_bueno.zip | 55 480 | fc7f07a83980bb781c68395d9debf93ef994d8b35e8e75598b89e4f4a07cd353 |
| academia_pesaje_cambiado.zip | 55 480 | 8d788474712ce2dc078e9419bda37b8e24d6d388fe4475f54220c463d6330038 |
Compruebe la huella de lo descargado antes de nada: sha256sum academia_bueno.zip (Linux o Mac) o certutil -hashfile academia_bueno.zip SHA256 (Windows). Si no coincide con la de la tabla, no siga: el fichero no es este.
El verificador es software libre, publicado con su firma en verify.wastra.global. Solo necesita Python 3; no instala nada ni habla con nadie.
python verificar.py academia_bueno.zip python verificar.py academia_pesaje_cambiado.zip
El verificador pasa cuatro comprobaciones: C1 cada hecho tiene la forma que fija la especificación; C2 la cadena de huellas no tiene huecos ni cambios; C3 la raíz Merkle de cada día coincide con la calculada; C4 la raíz está anclada en Bitcoin. Estos paquetes no llevan ancla: C4 dirá sin ancla, y eso no es un fallo, es la verdad del paquete. Un paquete exportado del registro sí la lleva.
Un expediente completo de dos días en un centro de tratamiento ficticio: un camión que llega sin ticket, su pesaje en báscula, la descarga en un lote, la segregación del lote en cuatro clases y la salida del árido valorizado. Cinco hechos, cada uno con la carga que exige su esquema publicado y la firma del aparato.
| N.º | Hecho | Esquema | Día | Huella |
|---|---|---|---|---|
| 1 | ARRIBO | ARRIBO/2 | 2026-09-15 | 9ef5590cc8f7603e… |
| 2 | PESAJE_ENTRADA | PESAJE_ENTRADA/2 | 2026-09-15 | 73c64b5dd302bc3c… |
| 3 | DESCARGA | DESCARGA/1 | 2026-09-15 | 2807273247f8615e… |
| 4 | SEGREGACION | SEGREGACION/3 | 2026-09-16 | c6fe2b0c672954fc… |
| 5 | SALIDA_VALORIZADO | SALIDA_VALORIZADO/1 | 2026-09-16 | 94da788040fd54a3… |
| Día | Hechos | Raíz Merkle del día |
|---|---|---|
| 2026-09-15 | 3 | 5a1bc87669964f90722b9738214d00c37bc14688bd0535ad71be9fb8c3da6547 |
| 2026-09-16 | 2 | 398334b7cbec1bac5302a488a32fee17a6fd9e19e96b4cb1420692d8dc529d48 |
El pesaje declara 12 200 000 g netos y la segregación reparte 12 200 000 g: cuadra. Aparato ACADEMIA-APARATO-0001, clave pública 04a9b5950901906cc672c4a1c502f2466bc5ac8a2487df818881f9fbf2d9aa907b54ee296ed0dafb50f15db2a9a79ad3c78591cd6237cef49815da441c347f2c6f.
Hágalo antes de abrir esto. Si el verificador ya ha hablado, compare.
Falla C2 en academia_pesaje_cambiado.zip, en el hecho 2 (PESAJE_ENTRADA). El verificador vuelve a calcular la huella de cada hecho a partir de su contenido y la compara con la que el hecho declara. En ese hecho no coinciden: el contenido dice 15 200 000 g netos y la huella declarada es la de 12 200 000 g. El mensaje es «el contenido de este evento fue modificado después de su registro».
Por eso basta cambiar un número para que se note: la huella de cada hecho es la de su contenido, cada hecho lleva la huella del anterior, y la raíz del día se calcula sobre esas huellas. Quien cambia el peso tendría que recalcular la huella del hecho, la de todos los que le siguen, el árbol de cada día y el manifiesto; y aun así la raíz anclada en Bitcoin, cuando la hay, seguiría siendo la antigua.
C1 pasa en los dos paquetes: la forma del hecho es correcta, solo cambió un valor. C3 pasa porque el árbol se construye con las huellas declaradas, que nadie tocó; lo que no cuadra es el contenido con su huella, y eso es C2. Veredicto: FALLO. En el paquete intacto, CORRECTO.
Los dos paquetes se fabrican con una orden del repositorio de la plataforma y salen con la misma huella en cualquier equipo: identificadores, relojes y firma son fijos. py -3 -m herramientas.generar_paquete_academia. La hoja de datos de esta página, con cada huella, vive en academia/paquetes_academia.json.
Paquetes de ejemplo de la lección 0.3 de la Academia Libre (itinerario 0). Datos ficticios: ningún hecho de aquí consta en un registro de WASTRA.