# Cómo verificar el sello temporal (OpenTimestamps)

El fichero `HASHES.txt.ots` es una **prueba criptográfica de antigüedad** del fichero
`HASHES.txt` (que a su vez contiene los hashes SHA-256 de los sobres A/B/C/D de la apuesta).
El sello se ancla en la **blockchain de Bitcoin** a través del protocolo
[OpenTimestamps](https://opentimestamps.org), de forma independiente y sin confiar en
Team Banzai ni en ningún tercero.

Qué demuestra: que el contenido de `HASHES.txt` **existía en o antes** del momento en que
el bloque de Bitcoin que lo ancla fue minado. Nadie (ni nosotros) puede retro-fechar el sello.

## Requisitos

- Los ficheros `HASHES.txt` y `HASHES.txt.ots` (en este mismo directorio), **sin modificar**.
- El cliente OpenTimestamps. Instalación (cualquier máquina con Python 3):

```
python3 -m venv ots-venv
./ots-venv/bin/pip install opentimestamps-client   # versión usada al sellar: 0.7.2
```

El comando queda disponible como `ots` (o `./ots-venv/bin/ots`).

## Paso 1 — Actualizar el sello (upgrade)

El sello inicial nace en estado **"pending"**: se ha enviado a los calendarios pero aún no
está confirmado en un bloque de Bitcoin (esto tarda desde unas horas hasta ~1 día).
`upgrade` descarga de los calendarios la prueba completa una vez anclada:

```
ots upgrade HASHES.txt.ots
```

- Si dice `Success! Timestamp complete` → el sello ya está anclado en Bitcoin.
  Actualiza `HASHES.txt.ots` con la prueba completa (guarda un backup `.ots.bak`).
- Si dice `Pending confirmation in Bitcoin blockchain` → aún no está minado; reintenta más tarde.

## Paso 2 — Verificar

```
ots verify HASHES.txt.ots
```

- Necesita conocer los hashes de bloque de Bitcoin. Sin nodo local propio, usa un
  explorador de bloques público:

```
ots --no-bitcoin verify HASHES.txt.ots        # NO recomendado (confía en calendarios)
ots verify HASHES.txt.ots                      # usa tu nodo Bitcoin local si lo tienes
```

  La forma robusta es tener un `bitcoind` local. Alternativamente, `ots verify` puede
  apoyarse en exploradores públicos según configuración del cliente.

- Salida esperada cuando está confirmado:

```
Success! Bitcoin block <N> attests existence as of <fecha UTC>
```

Esa fecha es la prueba: `HASHES.txt` existía en o antes de ese instante.

## Verificar que un sobre no se ha alterado

1. Recalcula el hash del sobre y compáralo con `HASHES.txt`:

```
sha256sum sobre-A.md    # debe coincidir con la línea de sobre-A.md en HASHES.txt
```

2. Verifica que `HASHES.txt` es el fichero sellado (Paso 2). Si el hash del sobre coincide
   con la línea de `HASHES.txt`, y `HASHES.txt` está sellado en una fecha pasada, entonces
   el contenido del sobre existía en esa fecha.

También puedes verificar sin instalar nada subiendo `HASHES.txt` + `HASHES.txt.ots` a la
web pública <https://opentimestamps.org> (botón "Verify").

## Estado actual del sello

- **Sellado:** 2026-07-09 (hora local Madrid) con opentimestamps-client **v0.7.2**.
- **Estado:** `COMPLETO` (2026-07-10) — `ots upgrade` ejecutado con éxito: 4 atestaciones de
  calendario consolidadas y prueba **anclada en Bitcoin** (bloques 957299 y 957304,
  `BitcoinBlockHeaderAttestation`). El `.ots` commiteado ya contiene la prueba completa.
- **Verificación sin instalar nada:** subir `HASHES.txt` + `HASHES.txt.ots` a
  <https://opentimestamps.org> (Verify). Copia pública de ambos ficheros:
  `gippini.com/experimentos/sobres/`.
