Timestamp GIT Secure your prior art without exposing code

← All posts

2026-10-06

Как проверить биткоин-метку времени Git-репозитория

Как проверить биткоин-метку времени Git-репозитория
timestamp git blockchain proof

Как проверить биткоин-метку времени Git-репозитория

У вас в репозитории есть квитанция .ots. И тут кто-то — юрист, аудитор, покупатель, проводящий технический due diligence, — задаёт единственный вопрос, который имеет значение: откуда мы знаем, что это подлинно?

В этом вопросе — весь смысл криптографического prior art. Метка времени, которую нельзя проверить независимо, — это просто утверждение в базе данных. Метка времени, которую любой может проверить по блокчейну Биткоина, — это доказательство. Эта статья проводит по пути верификации для репозиториев, заякоренных через Timestamp GIT, от бейджа в README до Merkle-доказательства.

Почему верификация важна для Git-меток времени

Историю Git на удивление легко оспорить. Даты коммитов устанавливаются машиной, сделавшей коммит, поэтому их можно задним числом изменить одной переменной окружения. Размещённая история живёт на серверах, которые вы не контролируете, а самостоятельно размещённая — в базе данных, которую может переписать любой с правами администратора. В юридическом аудите и то, и другое обычно отметается как корыстное.

Криптографическое якорение закрывает этот пробел — но только если доказательство может проверить третья сторона, не доверяющая ни вам, ни вендору. Это означает два требования:

  • Верификация не должна требовать доверия к Timestamp GIT. Доказательство — это цепочка хешей SHA-256, завершающаяся блоком Биткоина. Любой может пройти эту цепочку с помощью инструментов с открытым исходным кодом.
  • Верификация не должна требовать раскрытия вашего исходного кода. Timestamp GIT работает по модели нулевого разглашения: сервис получает хеши коммитов, но никогда — содержимое файлов. Проверять нечего, кроме хешей, — а именно это и нужно аудитору, поскольку это значит, что доказательством можно поделиться, не делясь кодовой базой.

Благодаря такому устройству верификация — это криптографическое упражнение, а не обзор кода. Аудиторы, процессуальные оппоненты или инженерная команда приобретающей компании могут проверить одну и ту же квитанцию и прийти к одному и тому же выводу.

Как выглядит доказательство Timestamp GIT

После ночного запуска якорения каждый отслеживаемый репозиторий получает три артефакта:

  • Ежедневный манифест (.txt) — список хешей коммитов, сгруппированных за этот день, по одному файлу на репозиторий.
  • Merkle-корень — единственный хеш SHA-256, вычисленный из этого манифеста. Все отдельные хеши сводятся к одному значению.
  • Квитанция .ots — доказательство OpenTimestamps, привязывающее Merkle-корень к конкретному блоку Биткоина.

Эти артефакты отправляются обратно в ваш репозиторий в выделенную ветку timestamps или в отдельный теневой репозиторий, если вы предпочитаете держать исходный репозиторий чистым. В любом случае доказательства версионируются рядом с кодом, который они удостоверяют, но в собственном ref — в ваши рабочие ветки никогда ничего не коммитится.

Стоит прямо сказать о двух вещах:

  • Доказательство не содержит исходного кода. Только хеши коммитов и их криптографические свёртки.
  • Доказательство не проприетарно. Это стандартная квитанция OpenTimestamps поверх транзакции Биткоина, и она остаётся действительной независимо от того, существует ли ещё Timestamp GIT.

Как только файл квитанции оказывается в вашем репозитории, у вас есть всё необходимое для верификации — остальное — дело инструментов.

Пошаговая верификация с помощью инструментов Timestamp GIT

Шаг 1 — Найдите доказательство

Откройте ветку timestamps (или теневой репозиторий) и найдите манифест за нужную дату, а также соответствующий файл .ots. Если не хочется рыться в ветках, страница статуса репозитория показывает ту же информацию в браузере:

https://timestampgit.dev/status/{user}/{repo}

Шаг 2 — Прочитайте публичную страницу статуса

Страница статуса — самая быстрая проверка на вменяемость. Она показывает:

  • Долговечность доказательства и самую раннюю дату якорения
  • Ежедневную регулярность (календарную тепловую карту заякоренных дней)
  • Блок Биткоина и транзакцию, несущие якорь
  • Ссылки для скачивания аудиторского CSV и PDF-сертификата

Для автоматических проверок те же данные доступны в формате JSON:

# Последний заякоренный блок Биткоина
curl -s https://timestampgit.dev/api/statusLast/acme/payments-service

# Общее число проштампованных коммитов
curl -s https://timestampgit.dev/api/statusCount/acme/payments-service

# Сводка (используется бейджами Shields.io)
curl -s https://timestampgit.dev/api/statusSummary/acme/payments-service

Шаг 3 — Проверьте конкретную дату в браузере

Для доказательства на уровне дня используйте страницу криптографической верификации:

https://timestampgit.dev/verification/{user}/{repo}/{date}

Эта страница выполняет полную многоуровневую проверку Merkle-цепочки локально в вашем браузере. Хеш коммита, манифест, Merkle-путь и заголовок блока Биткоина проверяются на вашей машине — страница не загружает то, что вы проверяете. Это свойство важно, когда репозиторий приватный или под NDA: аудитор может подтвердить доказательство, не раскрывая вендору, какая дата его интересовала.

Шаг 4 — Получите аудиторский реестр или PDF-сертификат

Командам по комплаенсу обычно нужен артефакт, который можно подшить в дело. И то, и другое — на расстоянии одного запроса:

# Полный аудиторский реестр в CSV
curl -fsSL https://timestampgit.dev/api/audit/acme/payments-service -o audit.csv

# PDF-сертификат за один день
curl -fsSL https://timestampgit.dev/api/report/acme/payments-service/2026-09-14 -o certificate.pdf

Шаг 5 — При желании встройте бейдж верификации

Виджет бейджа по адресу /connected/{user}/{repo} даёт живой предпросмотр и готовый к вставке фрагмент Markdown для вашего README. Вставьте его, и любой — клиент, инвестор, потенциальный покупатель — сможет перейти к публичному представлению верификации:

<!-- Фрагмент скопирован с https://timestampgit.dev/connected/acme/payments-service -->
[![Bitcoin-timestamped](BADGE_IMAGE_URL)](VERIFY_LINK)

Каждый шаг выше работает на управляемом процессе GitHub App. Вы устанавливаете приложение один раз, и верификация — это загрузка страницы или HTTP-запрос: никаких инструментов командной строки, никакой ручной работы с протоколом, ничего, что нужно поддерживать на машинах разработчиков.

Как трактовать результаты верификации и краевые случаи

Успешная верификация говорит о чём-то узком и сильном: хеш коммита существовал не позднее момента времени блока Биткоина, на который ссылается квитанция, и Merkle-доказательство связывает именно этот хеш с этим блоком. Поскольку блоки Биткоина нельзя переписать, не переделав proof-of-work, граница «не позднее» абсолютна.

Несколько ситуаций возникают регулярно:

  • Нет доказательства за данную дату. Обычно означает, что в этот день коммитов не было — манифест строится из ожидающих хешей, поэтому пустой день не даёт ничего для якорения. Проверьте тепловую карту на странице статуса, чтобы убедиться.
  • Ожидание подтверждения. Якорение — двухэтапный процесс. Ночной cron-воркер группирует хеши, строит Merkle-дерево и отправляет корень в публичные календари OpenTimestamps; подтверждение в блоке Биткоина затем занимает несколько часов — обычно около трёх. Поэтому доказательство, записанное вскоре после полуночи, может не стать окончательным до утра.
  • Приватные репозитории. Доступ к страницам статуса и верификации для приватных репозиториев требует зашифрованного HMAC, добавленного к URL. HMAC привязан к конкретному экземпляру сервера, поэтому ссылки нельзя воспроизвести против другого развёртывания.
  • Независимость от вендора. Если вы предпочитаете вовсе не пользоваться размещённым верификатором, скачайте файл .ots и прогоните его через инструменты OpenTimestamps с открытым исходным кодом против блокчейна Биткоина самостоятельно. Это трудный путь, и он медленнее, но он существует — и само его существование делает управляемый путь заслуживающим доверия.

Верификация в корпоративных и самостоятельно размещённых средах

Корпоративный режим ZK. GitHub Action из 12 строк работает на вашей собственной инфраструктуре и отправляет в API Timestamp GIT только хеши коммитов. Сервис никогда не имеет доступа на чтение к исходному репозиторию; вам нужен лишь доступ на чтение-запись к целевому репозиторию, принимающему доказательства. Верификация не меняется — те же файлы .ots, те же публичные данные Биткоина, те же браузерные проверки Merkle.

Самостоятельный хостинг в Docker. Для изолированных сред Timestamp GIT поставляется в виде Docker-образа, который вы запускаете сами. Быстрый старт с Docker Compose выглядит так:

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

Экземпляр доступен по адресу http://localhost:8080, а мастер настройки при первом запуске проведёт вас через подключение вашего GitHub App и настройку развёртывания. Верификация работает полностью внутри вашей сети: файлы .ots, манифесты и локальный верификатор — это всё, что нужно.

Ограниченная по времени демонстрационная лицензия для оценки доступна по форме запроса на странице лицензии Docker с указанием вашего имени, компании, электронной почты и, при желании, телефона; файл лицензии можно скачать сразу.

Автоматизация верификации для команд комплаенса

Ручная верификация годится для одного аудита. Непрерывный комплаенс хочет видеть её в конвейере. REST API это покрывает:

#!/usr/bin/env bash
set -euo pipefail

REPO="acme/payments-service"
BASE="https://timestampgit.dev/api"

# Данные Merkle-цепочки для локальной верификации конкретного дня
curl -fsSL "$BASE/verify/$REPO/2026-09-14" -o "verify-2026-09-14.json"

# Ежемесячный аудиторский реестр
curl -fsSL "$BASE/audit/$REPO" -o "audit-$REPO.csv"

# PDF-сертификат за каждый заякоренный день
curl -fsSL "$BASE/report/$REPO/2026-09-14" -o "certificate-2026-09-14.pdf"

Для дашбордов опрашивайте эндпоинты статуса, а не полную полезную нагрузку верификации:

# Подайте /api/statusLast и /api/statusCount в вашу систему мониторинга
curl -fsSL "$BASE/statusLast/$REPO"
curl -fsSL "$BASE/statusCount/$REPO"

Полезный приём — считать устаревший statusLast условием для тревоги: если последний заякоренный блок не двигался больше суток для репозитория с активными коммитами, что-то в конвейере требует внимания. Все вычисления при верификации происходят локально в браузере или внутри вашего собственного скрипта — никакие чувствительные данные не покидают ваш контроль. Если вы ещё настраиваете сторону якорения, см. Автоматическое проставление Git-меток времени: как GitHub App заякоривает каждый коммит; эта статья намеренно о том, что происходит после.

FAQ

Нужно ли запускать какие-либо инструменты командной строки, чтобы проверить доказательство Timestamp GIT? Нет. Timestamp GIT предоставляет веб-страницу верификации, которая выполняет все криптографические проверки локально в вашем браузере. Вы также можете скачать файл .ots и использовать стандартные инструменты OpenTimestamps, если предпочитаете, но управляемый сервис не требует использования CLI.

Могу ли я проверить метку времени, не доверяя Timestamp GIT? Да. Доказательство опирается исключительно на хеши SHA-256 и данные блоков Биткоина. Вы можете независимо проверить файл .ots против блокчейна Биткоина с помощью инструментов OpenTimestamps с открытым исходным кодом, обеспечивая независимость от вендора.

Сколько времени занимает, пока метка времени станет проверяемой? После того как ночное задание cron заякорит Merkle-корень в транзакцию Биткоина, обычно требуется около 3 часов, чтобы транзакция подтвердилась в блоке Биткоина. После подтверждения доказательство неизменно и проверяемо.

Могу ли я проверять метки времени для приватных репозиториев? Да, но доступ к страницам статуса и верификации для приватных репозиториев требует зашифрованного HMAC, добавленного к URL. Это гарантирует, что только авторизованные пользователи смогут увидеть детали доказательства.

Заключение

Верификация — это то место, где метка времени перестаёт быть обещанием и становится доказательством. Цепочка коротка и проверяема: хеш коммита → ежедневный манифест → Merkle-корень → блок Биткоина. Подтвердите ли вы её на странице статуса, запустите ли браузерную проверку Merkle или выгрузите CSV-реестр для подачи в дело — вывод опирается на математику Биткоина, а не на чьи-либо слова, включая наши.

Установите GitHub App на репозиторий, дайте ночному запуску сделать свою работу, а затем проверьте какую-нибудь дату сами, прежде чем вас об этом попросят. Это занимает несколько минут и составляет разницу между «мы думаем, что можем это доказать» и «вот доказательство».

Похожие статьи

EU label: AI-generated content