Automatiza el sellado de tiempo de commits de Git con una GitHub App
Si alguna vez has intentado demostrar cuándo existió un commit de Git, ya conoces el proceso manual: extraer hashes de commits, crear un manifiesto, esperar confirmaciones, guardar archivos de recibo en un lugar seguro y repetir. Es repetitivo, fácil de olvidar y se desmorona en cuanto hay más de un repositorio o miembro del equipo involucrado.
Existe una mejor manera de automatizar el sellado de tiempo de Bitcoin para commits de git con una GitHub App. Timestamp GIT convierte la prueba de existencia en un servicio en segundo plano: instala la GitHub App una vez, conecta un repositorio y cada commit queda anclado a la blockchain de Bitcoin cada noche. No necesitas ejecutar herramientas de protocolo sin procesar, recordar trabajos de cron ni convertirte en un experto en blockchain. El flujo de trabajo sin procesar de OpenTimestamps existe, pero hacerlo a mano es el camino difícil.
Este artículo recorre el flujo de trabajo de automatización, la configuración inicial única, lo que sucede entre el commit y el anclaje en Bitcoin, y cómo monitorear y usar las pruebas resultantes.
La carga del sellado de tiempo manual que puedes eliminar
El proceso manual para sellar temporalmente commits de Git suele verse así:
- Esperar hasta recordar que un commit debería haber sido sellado temporalmente.
- Extraer el hash del commit de Git.
- Preparar un archivo que contenga los hashes que quieres demostrar que existieron.
- Ejecutar una herramienta de sellado de tiempo contra ese archivo.
- Esperar a que la prueba se cree y se confirme.
- Guardar el recibo en un lugar duradero.
- Esperar que nadie te pida explicar los pasos exactos más adelante.
Ese flujo de trabajo tiene tres problemas graves.
Primero, los desarrolladores olvidan sellar temporalmente. La prueba de existencia solo ayuda si el sellado de tiempo se creó antes de la disputa. Si lo recuerdas tres meses después del hecho, la evidencia puede ser más débil de lo que podría haber sido.
Segundo, las pruebas se pierden. Un archivo de recibo guardado en un portátil, un disco de respaldo antiguo o un canal aleatorio no es una pista de auditoría. En un contexto legal o de cumplimiento, los recibos faltantes parecen evidencia faltante.
Tercero, los pasos manuales no escalan. Un desarrollador en solitario puede sellar temporalmente un commit de lanzamiento de vez en cuando. Una startup con 15 repositorios, múltiples colaboradores y fusiones diarias no puede depender de que alguien exporte hashes manualmente cada noche.
Timestamp GIT automatiza todo el protocolo OpenTimestamps detrás de un servicio gestionado. El producto no lee tu código fuente. Solo recopila hashes de commits, los agrupa en lotes y crea pruebas criptográficas que se incrustan en la blockchain de Bitcoin. Nunca tocas una CLI, nunca construyes un árbol de Merkle y nunca supervisas un proceso de confirmación.
Configuración inicial única: conecta tu repositorio
La ruta de configuración está diseñada para hacerse una vez y luego olvidarse.
Comienzas instalando la Timestamp GIT GitHub App y seleccionando los repositorios que quieres monitorear. Los repositorios públicos pueden cubrirse con el plan gratuito de código abierto. Los repositorios privados están disponibles en los planes Pro Agency o Enterprise ZK.
Timestamp GIT ofrece dos modos de implementación.
Modo estándar
En el modo estándar, la GitHub App monitorea tu repositorio a través de webhooks de GitHub. Cuando aparece un nuevo commit, la app lee solo el hash del commit HEAD.
Los permisos de GitHub requieren acceso de solo lectura al repositorio fuente porque GitHub no ofrece un ámbito de acceso solo para hashes de commits. Timestamp GIT también necesita acceso de lectura y escritura al repositorio de destino donde se escribirán las pruebas. La rama de pruebas puede vivir en el mismo repositorio o en un repositorio sombra separado.
La parte importante: tu código fuente nunca se lee, copia ni almacena. Solo los hashes de commits entran en el pipeline de Timestamp GIT.
Modo Enterprise ZK
El modo Enterprise ZK es para equipos que no pueden otorgar ningún acceso de lectura del repositorio a un tercero. En su lugar, una GitHub Action de 12 líneas se ejecuta en tu propia infraestructura y envía solo el hash del commit a la API de Timestamp GIT.
En este modo, Timestamp GIT necesita acceso de lectura y escritura solo al repositorio de destino donde se almacenan las pruebas. No necesita acceso de lectura al repositorio fuente. Tu código fuente nunca sale de tu entorno.
Después de la conexión inicial, no hay pasos manuales. Cada commit en un repositorio monitoreado se recoge automáticamente.
El pipeline automatizado: del commit al anclaje en Bitcoin
Una vez que un repositorio está conectado, el pipeline de automatización se encarga del resto.
El pipeline funciona así:
-
Detección de commits
La GitHub App detecta nuevos commits a través de webhooks, o tu GitHub Action envía hashes de commits a la API. -
Cola de hashes
Los hashes de commits se almacenan en un almacén clave-valor en memoria para su procesamiento por lotes. -
Lote nocturno
Cada noche, un trabajador agrupa los hashes pendientes y crea un archivo de manifiesto.txtpara cada repositorio. -
Árbol de Merkle y OpenTimestamps
Timestamp GIT construye un árbol de Merkle de forma nativa, crea pruebas OpenTimestamps usando calendarios públicos y ancla la raíz de Merkle en la blockchain de Bitcoin. -
Entrega de pruebas
El manifiesto y los archivos de recibo.otsse envían de vuelta a una rama de timestamps dedicada o a un repositorio sombra.
La confirmación de Bitcoin normalmente toma unas pocas horas, normalmente alrededor de tres horas. Eso significa que las pruebas suelen estar disponibles al día siguiente después de que se envía el lote nocturno.
Puedes verificar el estado actual de un repositorio a través de la API pública:
curl -s https://timestampgit.dev/api/statusLast/acme/widget-api
curl -s https://timestampgit.dev/api/statusCount/acme/widget-api
curl -s https://timestampgit.dev/api/statusSummary/acme/widget-api
Los repositorios privados añaden un HMAC cifrado a estas URLs, de modo que solo los usuarios autorizados pueden ver el estado. El HMAC es específico de la instancia del servidor de Timestamp GIT.
La API también expone endpoints de verificación e informes:
GET /api/verify/{user}/{repo}/{date}devuelve los datos completos de la cadena de Merkle para la verificación local de un día específico.GET /api/audit/{user}/{repo}descarga el libro de auditoría completo como CSV.GET /api/report/{user}/{repo}/{date}descarga un certificado PDF para una fecha específica.
El endpoint de gestión de repositorios, GET /api/repos/{user}, lista los repositorios monitoreados después de la instalación de la GitHub App.
Para el modo Enterprise ZK, el asistente de configuración proporciona una URL firmada. La GitHub Action envía solo el identificador del commit a esa URL. El flujo de trabajo es intencionalmente pequeño, sin necesidad de checkout del código fuente más allá del payload del evento ya disponible en GitHub Actions.
Monitoreo y manejo de fallos
La automatización debe ser observable. Timestamp GIT proporciona un panel de estado público para cada repositorio.
El panel incluye:
- Longevidad de las pruebas
- Fecha de anclaje más temprana
- Regularidad diaria
- Datos de bloques y transacciones de Bitcoin
- Un mapa de calor de calendario
- CSV de auditoría descargable
- Descargas de certificados PDF
También puedes incrustar una insignia de verificación en tu README. El endpoint autenticado GET /api/badgeLink/{user}/{repo} devuelve URLs de insignias y fragmentos de Markdown listos para usar para Shields.io. La insignia muestra públicamente el estado de verificación y enlaza a la página de verificación.
Si la confirmación de Bitcoin tarda más de lo esperado, el panel de estado muestra dónde está la prueba en el proceso. Debido a que el sistema procesa por lotes cada noche, una confirmación lenta generalmente significa que la prueba aparece unas horas más tarde de lo normal en lugar de desaparecer. Los hashes en cola permanecen en el pipeline y puedes consultar la página de estado para conocer el estado actual.
La garantía importante: tu prueba no depende de que Timestamp GIT siga disponible. Los archivos .ots se almacenan en tu repositorio, y la prueba depende solo de SHA-256 y de los datos de bloques de Bitcoin. Puedes verificarla localmente incluso si la empresa desaparece.
Buenas prácticas para el sellado de tiempo automatizado
La automatización elimina la carga manual, pero algunos hábitos hacen que la evidencia sea más sólida.
Sella temporalmente cada commit, no solo los lanzamientos.
Los lanzamientos son hitos útiles, pero una cadena continua de hashes de commits crea un registro mucho más rico. Si una disputa trata sobre un detalle de implementación específico, un sellado de tiempo a nivel de lanzamiento puede ser demasiado grueso.
Usa un repositorio sombra dedicado para las pruebas.
Mantener los archivos .ots y los archivos de manifiesto en un repositorio de pruebas separado mantiene limpio tu repositorio principal. También facilita la recopilación de auditorías porque todos los datos de pruebas viven en un solo lugar.
Considera el autoalojamiento con Docker para entornos aislados.
Timestamp GIT está disponible como imagen Docker para equipos que necesitan el máximo control. La configuración de inicio rápido es:
services:
timestampgit:
image: rue1401/timestampgit:prod
ports:
- "8080:8080"
volumes:
- ./data:/app/data
restart: unless-stopped
valkey:
image: valkey/valkey:8
restart: unless-stopped
docker compose pull
docker compose up -d
docker compose logs -f timestampgit
La aplicación está disponible en http://localhost:8080 después del arranque. Un asistente de configuración te guía para conectar tu GitHub App y configurar la instancia. Hay una licencia de demostración por tiempo limitado disponible en la página de licencias de Docker.
Descarga informes de auditoría regularmente.
Trata el libro de auditoría CSV y los certificados PDF como documentos legales. Guárdalos con tus otros registros de protección de propiedad intelectual. No esperes a que comience una disputa para empezar a recopilar evidencia.
Combina el sellado de tiempo con otras estrategias de protección de propiedad intelectual.
El sellado de tiempo no es un reemplazo de las patentes, los contratos o las políticas de secretos comerciales. Es la prueba criptográfica que hace que esas otras estrategias sean mucho más difíciles de impugnar.
Preguntas frecuentes
¿La GitHub App necesita acceso a mi código fuente?
No. En el modo estándar, la GitHub App solo lee el hash del commit HEAD, no el código en sí. En el modo Enterprise ZK, una GitHub Action en tu infraestructura envía solo el hash del commit a la API, de modo que el código fuente nunca sale de tu entorno.
¿Cuánto tarda en sellarse temporalmente un commit?
Los commits se procesan por lotes cada noche. El proceso de anclaje en Bitcoin normalmente toma unas pocas horas después de que se envía el lote, por lo que las pruebas suelen estar disponibles al día siguiente. Puedes consultar el panel de estado para obtener actualizaciones en tiempo real.
¿Puedo verificar el sellado de tiempo sin depender de Timestamp GIT?
Sí. La prueba es un archivo OpenTimestamps .ots estándar que se puede verificar de forma independiente usando herramientas públicas y la blockchain de Bitcoin. Timestamp GIT también proporciona una página de verificación basada en navegador y certificados PDF descargables.
¿Qué pasa si Timestamp GIT quiebra?
Tus pruebas siguen siendo válidas porque están ancladas en la blockchain de Bitcoin y usan solo estándares abiertos como SHA-256 y OpenTimestamps. Puedes verificarlas sin conexión en cualquier momento, y los archivos .ots se almacenan en tu repositorio.
Automatiza la prueba, conserva el control
El sellado de tiempo manual es fácil de vender internamente y difícil de sostener en la práctica. El valor de la prueba de existencia proviene de la consistencia: cada commit, cada día, sin recibos faltantes.
Timestamp GIT convierte eso en un proceso en segundo plano. Instala la GitHub App una vez, conecta tus repositorios y el pipeline nocturno se encarga de los hashes de commits, los árboles de Merkle, las pruebas OpenTimestamps, el anclaje en Bitcoin y la entrega de pruebas. Monitoreas los resultados a través de un panel, insignias, auditorías CSV y certificados PDF.
Los repositorios públicos pueden empezar gratis. Los repositorios privados están cubiertos por Pro Agency y Enterprise ZK. Si necesitas control aislado, la licencia de Docker autoalojada pone la misma automatización dentro de tu propia infraestructura.
Empieza con Timestamp GIT y haz de la prueba de existencia una parte normal de tu flujo de trabajo de commits.
Publicaciones relacionadas
- Alternativa a OpenTimestamps: sellado de tiempo gestionado para Git
- Protección de código para freelancers: una solución de sellado de tiempo
- Cómo Bitcoin puede demostrar que tu propiedad intelectual existió primero