Автоматическая простановка временных меток Git-коммитов с помощью GitHub App
Вы уже знаете, что доказательство того, когда существовал коммит, может быть не менее важным, чем сам код. Если патентные тролли, споры с клиентами или бывший соавтор когда-либо поставят под сомнение вашу хронологию, локального Git-журнала обычно недостаточно. Внутренние журналы можно редактировать, а история размещённого репозитория не является неизменным доказательством существования предшествующего уровня техники.
Сложный путь — изучить базовый протокол временных меток, вручную выполнять команды для каждого коммита, копировать хеши, ждать подтверждений и хранить квитанции в надёжном месте. Такой подход перестаёт работать, как только у вас появляется несколько репозиториев, несколько разработчиков или напряжённая неделя релизов.
Timestamp GIT полностью снимает это ручное бремя. Вы один раз устанавливаете GitHub App, выбираете репозитории, которые хотите защитить, и каждый новый коммит автоматически получает временную метку в блокчейне Bitcoin по ночному расписанию. Никаких CLI-инструментов для запуска, никаких файлов квитанций для ручного управления и никаких команд OpenTimestamps для изучения.
Если вы ещё не знакомы с причиной, по которой это важно, прочитайте статью Что такое криптографический предшествующий уровень техники и почему он важен для программного обеспечения?.
В этой статье рассматривается автоматизированный путь: одноразовая настройка, что происходит между коммитом и привязкой к Bitcoin, как отслеживать свои доказательства и как поддерживать процесс в рабочем состоянии с течением времени.
Одноразовая настройка: установка GitHub App
Вся настройка сводится к установке GitHub App. Никакого локального агента, никакого файла конфигурации и никакого скрипта для поддержки.
Вот последовательность действий:
- Установите Timestamp GIT GitHub App из GitHub Marketplace.
- Выберите репозитории, которые хотите отслеживать.
- Публичные репозитории поддерживаются на бесплатном тарифе.
- Приватные репозитории требуют тарифа Pro или Enterprise.
- Выберите режим развёртывания:
- Стандартный режим: GitHub App считывает хеш HEAD-коммита из исходного репозитория и записывает файлы доказательств в целевой репозиторий или ветку.
- Режим Enterprise ZK: GitHub Action, работающий в вашей среде, отправляет в API Timestamp GIT только хеши коммитов. Timestamp GIT получает нулевой доступ на чтение к исходному репозиторию.
- Подтвердите доступ.
- Стандартный режим требует доступ на чтение к исходному репозиторию и доступ на чтение и запись к целевому репозиторию. Это требование системы разрешений GitHub: разрешения на чтение только хешей коммитов не существует.
- Режим Enterprise ZK требует только доступ на чтение и запись к целевому репозиторию. Исходному репозиторию никогда не нужно предоставлять Timestamp GIT доступ на чтение.
- Готово. С этого момента новые коммиты подхватываются автоматически.
После установки вы можете управлять отслеживаемыми репозиториями через панель управления Timestamp GIT. Ничего не нужно компилировать, не нужно запускать демон и не нужно настраивать cron-задачи.
Автоматизированный конвейер: от коммита до привязки к Bitcoin
После установки GitHub App процесс работает без вашего участия.
Что происходит после каждого коммита
Когда вы отправляете коммит в отслеживаемый репозиторий, GitHub App обнаруживает новый коммит через вебхук. Приложение не читает ваши исходные файлы. Оно извлекает только хеш коммита — криптографически надёжный отпечаток состояния репозитория на этот момент.
Этот хеш коммита помещается в очередь для следующего ночного пакета.
Ночной цикл привязки
Каждую ночь рабочий процесс выполняет следующий конвейер:
- Собираются все хеши коммитов из очереди для каждого отслеживаемого репозитория.
- Создаются файлы манифеста за день.
- Из собранных хешей строится дерево Меркла.
- Корень Меркла привязывается к блокчейну Bitcoin с использованием протокола OpenTimestamps.
- Генерируются квитанции доказательств и отправляются обратно в выделенную ветку timestamps или теневой репозиторий.
Само подтверждение Bitcoin обычно занимает несколько часов. Это означает, что файлы доказательств обычно появляются в вашем репозитории через несколько часов после ночного цикла, а не сразу после коммита.
Доставка доказательств
Результатом является файл квитанции .ots плюс ежедневный манифест. Эти файлы записываются в выделенную ветку или теневой репозиторий, что отделяет их от вашей обычной истории исходного кода.
Вы можете проверить результат обычными командами Git:
# После завершения ночной привязки
git fetch origin
# Найдите выделенную ветку timestamps или теневой репозиторий
git branch -r
# Переключитесь на ветку, содержащую квитанции .ots
git checkout <timestamps-branch>
# Выведите список ежедневных файлов доказательств
ls -1 *.ots
Точное название ветки зависит от конфигурации вашего репозитория.
Режим Enterprise ZK
Для команд, которые не могут предоставить третьей стороне какой-либо доступ к исходному коду, режим Enterprise ZK меняет поток данных.
Вместо того чтобы GitHub App читал метаданные исходного репозитория, небольшой GitHub Action работает внутри вашей инфраструктуры. Действие отправляет в API Timestamp GIT только хеш коммита. Timestamp GIT никогда не получает код, никогда не читает исходный репозиторий и не видит ничего, кроме хеша.
Ночной конвейер привязки с этого момента остаётся тем же: очередь хешей, манифест, дерево Меркла, доказательство OpenTimestamps, привязка к Bitcoin и доставка доказательств обратно в ваш целевой репозиторий.
Мониторинг и обработка сбоев
Автоматизация не означает слепого доверия. Вы должны иметь возможность видеть, что система работает, и у вас должен быть чёткий путь действий, когда что-то выглядит неправильно.
Панель статуса репозитория
У каждого отслеживаемого репозитория есть страница статуса, на которой отображается:
- Долговечность доказательств, включая самую раннюю дату привязки.
- Регулярность ежедневной привязки.
- Данные о блоках и транзакциях Bitcoin, связанные с каждой временной меткой.
- Календарная тепловая карта дней с привязкой.
- Загружаемые отчёты: аудиторский CSV и PDF-сертификат.
Вы также можете запросить статус через публичный API:
curl -s https://timestampgit.dev/api/statusLast/$GITHUB_USER/$GITHUB_REPO | jq .
Для приватных репозиториев к URL-адресам статуса добавляется зашифрованный HMAC. Только авторизованные пользователи могут просматривать временные метки приватных репозиториев, и HMAC привязан к конкретному экземпляру сервера.
Бейджи README
Timestamp GIT предоставляет встраиваемые бейджи для вашего README. Бейдж показывает текущее состояние верификации, и любой, кто перейдёт по ссылке, может проверить временную метку на связанной странице. Это полезно для проектов с открытым исходным кодом и для агентств, которые хотят публично демонстрировать доказательство выполненной работы, не раскрывая приватный код.
Экспорт для аудита и соответствия требованиям
Для проверки соответствия или юридической экспертизы вы можете загрузить:
- Полный аудиторский журнал в формате CSV.
- PDF-сертификат за конкретную дату.
Эти файлы дают вам внеблокчейновую запись, которая дополняет криптографические квитанции в вашем репозитории.
Что делать, если коммит пропущен?
Если коммит не был обработан в ожидаемом ночном пакете, хеш остаётся в очереди временных меток и будет подхвачен в следующем цикле. Панель статуса репозитория — первое место, где стоит проверить наличие пропусков или нерегулярности. Если репозиторий постоянно показывает пропущенные дни, свяжитесь со службой поддержки, прежде чем полагаться на затронутый диапазон для юридических претензий.
Вариант с самостоятельным хостингом через Docker
Для сред с воздушным зазором или для максимального операционного контроля Timestamp GIT доступен в виде Docker-образа. Самостоятельно размещённый экземпляр использует тот же рабочий процесс GitHub App, но работает на инфраструктуре, которой владеете вы.
Минимальная конфигурация 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 и конфигурацию экземпляра. Для оценки доступна демонстрационная лицензия с ограниченным сроком действия.
Лучшие практики автоматической простановки временных меток
Автоматизация устраняет рутинную работу, но несколько привычек сделают вашу историю временных меток значительно надёжнее.
Коммитьте часто. Конвейер выполняет привязку ежедневными пакетами. Если вы делаете коммит раз в месяц, вы создаёте меньше точек доказательства и большие промежутки между привязками. Регулярные коммиты создают плотную, непрерывную запись предшествующего уровня техники.
Используйте осмысленные сообщения коммитов. Временную метку получают хеши коммитов, но читаемая человеком история аудита по-прежнему важна. Сообщение вида Implement cache warming for API responses гораздо полезнее в споре, чем fix stuff.
Храните квитанции .ots отдельно от исходного кода. Относитесь к ветке timestamps или теневому репозиторию как к хранилищу доказательств, доступному только для добавления. Избегайте редактирования, сквоша или удаления.
Регулярно проверяйте образец. Не реже одного раза в квартал открывайте публичную страницу верификации для репрезентативной временной метки и подтверждайте, что доказательство Меркла разрешается корректно. Это позволяет обнаружить дрейф конфигурации до того, как доказательство понадобится.
Используйте режим Enterprise ZK для чувствительных проектов. Если репозиторий содержит коммерческую тайну, внутренние инструменты или логику ещё не выпущенного продукта, режим Enterprise ZK — самый надёжный вариант по умолчанию. Timestamp GIT видит только хеши коммитов, и ваш код никогда не покидает вашу среду.
Рассмотрите самостоятельный хостинг через Docker для регулируемых сред. Если вам нужна работа с воздушным зазором или полный контроль над подключением GitHub App, разместите приложение самостоятельно с помощью Docker-образа.
FAQ
Как работает автоматическая простановка временных меток с GitHub App?
После установки Timestamp GIT GitHub App и выбора репозиториев приложение автоматически обнаруживает новые коммиты через вебхуки. Каждую ночь оно собирает все хеши коммитов в пакет, создаёт дерево Меркла и привязывает корень к блокчейну Bitcoin с помощью OpenTimestamps. Квитанции доказательств (файлы .ots) затем отправляются обратно в выделенную ветку вашего репозитория — никаких ручных действий не требуется.
Раскрывается ли мой исходный код перед Timestamp GIT?
Нет. Timestamp GIT обрабатывает только хеши Git-коммитов, а не сам исходный код. В стандартном режиме GitHub App требует доступ на чтение к репозиторию для получения хеша коммита, но никогда не читает содержимое файлов. В режиме Enterprise ZK GitHub Action работает в вашей инфраструктуре и отправляет в API только хеш коммита, поэтому Timestamp GIT имеет нулевой доступ к вашему коду.
Что произойдёт, если Timestamp GIT прекратит существование?
Ваши временные метки останутся действительными навсегда. Доказательства привязаны к блокчейну Bitcoin и основаны исключительно на SHA-256 и данных блоков Bitcoin. Вы можете проверить их независимо с помощью стандартных инструментов OpenTimestamps, даже если Timestamp GIT перестанет существовать. Файлы квитанций .ots хранятся в вашем репозитории, поэтому они всегда у вас есть.
Можно ли использовать Timestamp GIT с приватными репозиториями?
Да. Тарифы Pro и Enterprise поддерживают приватные репозитории. Для приватных репозиториев бейджи статуса и ссылки верификации включают зашифрованный HMAC, чтобы только авторизованные пользователи могли просматривать статус временных меток. Режим Enterprise ZK рекомендуется для максимальной конфиденциальности, поскольку он не требует доступа на чтение к исходному репозиторию.
Настройте и забудьте
Ручная простановка временных меток не работает, потому что зависит от того, что кто-то не забудет это сделать. Ценность криптографического предшествующего уровня техники складывается из последовательности на протяжении месяцев и лет, а не из одного героического усилия.
Timestamp GIT превращает эту последовательность в инфраструктуру. Установите GitHub App один раз, подключите свои репозитории, и ночной рабочий процесс возьмёт на себя снятие отпечатков, пакетирование, привязку к Bitcoin и доставку доказательств. Вы получаете неизменное доказательство предшествующего уровня техники без постоянного операционного бремени.
Бесплатный тариф покрывает публичные репозитории. Тариф Pro добавляет приватные репозитории за $49 в месяц, а режим Enterprise ZK стоит $199 в месяц с рабочим процессом GitHub Action. Для сред с воздушным зазором или регулируемых сред также доступна лицензия на самостоятельный хостинг через Docker.
Начните создавать свой портфель криптографического предшествующего уровня техники уже сегодня: установите Timestamp GIT GitHub App и подключите свой первый репозиторий.
Похожие статьи
- Что такое криптографический предшествующий уровень техники и почему он важен для программного обеспечения?
- Как доказать, что код существовал в определённое время (не раскрывая его)
- Что такое криптографическое доказательство авторства кода?