Автоматически проставляйте временные метки для каждого Git-коммита с помощью GitHub App
Каждый раз, когда вы делаете коммит, Git уже генерирует уникальный хеш, идентифицирующий точное состояние вашего репозитория. Этот хеш — криптографически надёжный отпечаток вашей работы в данный момент. Но сам по себе он не является доказательством того, когда эта работа существовала. Превращение этого хеша в неизменяемое доказательство, пригодное для суда, раньше означало ручной процесс: запускать дополнительные команды, следить за выводом, хранить файлы-квитанции и повторять всё это для каждого коммита.
Автоматизированная альтернатива проще: один раз установите GitHub App, выберите репозитории — и каждый будущий коммит будет привязан к блокчейну Bitcoin, пока вы спите.
Timestamp GIT — это управляемый сервис, построенный вокруг этой идеи. Он полностью автоматизирует протокол OpenTimestamps, поэтому вам никогда не придётся работать с CLI, создавать Bitcoin-транзакцию или вручную управлять файлами доказательств. В этой статье рассматриваются одноразовая настройка, ночной конвейер автоматизации, мониторинг, лучшие практики и частые вопросы.
Одноразовая настройка: установка GitHub App Timestamp GIT
Весь продукт построен вокруг единого процесса настройки. После этого единственное действие, которое вам нужно совершать, — это коммитить код.
Стандартный режим: GitHub App
- Установите Timestamp GIT GitHub App из GitHub Marketplace.
- Предоставьте разрешения, запрошенные при установке. В стандартном режиме приложению требуется доступ только для чтения к исходному репозиторию, поскольку разрешения GitHub не предлагают область, ограниченную только хешами коммитов. Timestamp GIT никогда не читает, не копирует и не хранит ваш исходный код.
- Выберите репозитории, которые хотите отслеживать. Публичные репозитории поддерживаются на бесплатном тарифе Open Source; для приватных репозиториев требуется платный тариф.
- Выберите, где должны храниться файлы доказательств. Вы можете хранить их в отдельной ветке
timestampsв том же репозитории или в отдельном целевом репозитории. Отдельный теневой репозиторий сохраняет историю основного исходного кода чистой.
После установки GitHub App автоматически отслеживает выбранные репозитории. Не нужно устанавливать CLI-инструменты, изучать команды OpenTimestamps или выполнять ручные шаги после настройки.
Режим Enterprise ZK: GitHub Action
Для организаций, которым требуется максимальная изоляция, Timestamp GIT предлагает режим Enterprise ZK. Вместо предоставления GitHub App доступа на чтение к вашему исходному репозиторию GitHub Action запускается на вашей собственной инфраструктуре и отправляет в API Timestamp GIT только хеш коммита.
Схема workflow выглядит так:
name: timestamp-git-zk
on:
push:
jobs:
timestamp:
runs-on: ubuntu-latest
steps:
- name: Push commit hash to Timestamp GIT
env:
COMMIT_SHA: ${{ github.sha }}
REPO: ${{ github.repository }}
run: |
curl -fsS -X POST \
-H "Authorization: Bearer ${{ secrets.TIMESTAMP_GIT_HMAC }}" \
-H "Content-Type: application/json" \
-d "{\"repo\":\"$REPO\",\"hash\":\"$COMMIT_SHA\"}" \
"${{ vars.TIMESTAMP_GIT_API_URL }}"
Точный URL API, идентификаторы репозитория и секрет HMAC предоставляются в мастере настройки Enterprise. Важно то, чего этот workflow не делает: он никогда не отправляет исходный код, файлы или содержимое репозитория. Он отправляет хеш коммита и ничего больше.
В этом режиме Timestamp GIT вообще не нужен доступ на чтение к вашему исходному репозиторию.
Автоматизированный конвейер: от коммита до привязки к Bitcoin
Как только GitHub App или GitHub Action установлены, проставление временных меток становится фоновой задачей.
1. Обнаружение коммитов
В стандартном режиме GitHub App получает вебхуки, когда в отслеживаемые репозитории попадают новые коммиты. В режиме Enterprise ZK ваш GitHub Action напрямую отправляет хеш коммита в API.
2. Очередь хешей
Обнаруженные хеши коммитов попадают в in-memory хранилище «ключ — значение», где они ожидают пакетной обработки. Timestamp GIT не сканирует ваш код, не клонирует весь репозиторий и не проверяет содержимое файлов.
3. Ночной cron-воркер
Каждую ночь воркер группирует все ожидающие хеши по репозиториям. Для каждого репозитория он создаёт файл манифеста, нативно строит дерево Меркла и создаёт доказательства OpenTimestamps с использованием публичных OTS-календарей.
4. Привязка к Bitcoin
Корень Меркла дневного пакета встраивается в Bitcoin-транзакцию с помощью протокола OpenTimestamps. Как только эта транзакция подтверждается в блоке Bitcoin, привязка становится неизменяемой. Ни одна организация — включая Timestamp GIT — не может изменить или подделать её.
Подтверждение в Bitcoin обычно занимает около трёх часов. Это означает, что коммит, сделанный в течение рабочего дня, как правило, привязывается к следующему утру.
5. Доставка доказательств
После подтверждения манифест и файлы-квитанции .ots отправляются обратно в настроенное вами место хранения доказательств: либо в отдельную ветку timestamps, либо в теневой репозиторий. Файлы доказательств — это небольшие текстовые и бинарные файлы, которые доказывают, что ваш хеш коммита существовал до того, как был добыт блок Bitcoin.
Вы можете запросить последний привязанный блок для публичного репозитория простым вызовом API:
curl -s https://timestampgit.dev/api/statusLast/your-org/your-repo
Ответ содержит информацию о последнем привязанном блоке Bitcoin. Дополнительные эндпоинты возвращают общее количество отмеченных коммитов, сводные статусы и полные данные цепочки Меркла за конкретный день.
Мониторинг и обработка сбоев
Автоматизация полезна только тогда, когда вы можете видеть, что она работает.
Панель статуса репозитория
Каждый подключённый репозиторий получает публичную или аутентифицированную страницу статуса. Панель показывает:
- Долговечность доказательств: насколько далеко в прошлое уходит ваша самая ранняя дата привязки
- Ежедневную регулярность: последовательно ли коммиты объединяются в пакеты
- Данные о блоках и транзакциях Bitcoin для каждой привязки
- Календарную тепловую карту для визуального представления активности
Страница статуса даёт быстрый ответ на вопрос: «Были ли вчерашние коммиты привязаны?»
Экспорт для аудита и соответствия требованиям
Timestamp GIT предоставляет загружаемые записи аудита:
# Download a full audit ledger as CSV
curl -o audit.csv https://timestampgit.dev/api/audit/your-org/your-repo
Вы также можете скачать PDF-сертификат за конкретную дату. Эти экспорты полезны для архивов соответствия требованиям, юридических проверок или документации по интеллектуальной собственности на уровне совета директоров.
Обработка пропущенных коммитов
В нормальном режиме работы коммит, пропустивший ночной пакет — например, из-за задержки доставки вебхука, — подхватывается при следующем ночном запуске. Пакетно-ориентированная архитектура означает, что временные сбои не требуют от вас ручного повторного запуска чего-либо.
Приватность приватных репозиториев
Для приватных репозиториев эндпоинты статуса защищены зашифрованным HMAC. Только авторизованные пользователи с корректной подписью URL могут просматривать статус репозитория. HMAC привязан к конкретному экземпляру сервера, поэтому данные статуса не доступны публично.
Лучшие практики автоматизированного проставления временных меток
GitHub App может автоматизировать механику, но несколько решений по конфигурации делают доказательства сильнее и удобнее в управлении.
Отслеживайте все активные репозитории
Не отслеживайте только релизные ветки. Споры о предшествующем уровне техники часто зависят от раннего экспериментального коммита, ветки в процессе разработки или быстрого прототипа. Включите мониторинг для каждого репозитория, где пишется значимый код.
Используйте отдельный теневой репозиторий
Если вы не хотите, чтобы файлы доказательств загромождали основной репозиторий, настройте Timestamp GIT на отправку доказательств в отдельный репозиторий. Это сохраняет историю исходного кода чистой, при этом давая юристам, аудиторам и командам по соответствию требованиям единое место для поиска квитанций доказательств.
Выбирайте режим Enterprise ZK для максимальной изоляции
Если ваш код крайне чувствителен или ваша политика безопасности запрещает сторонний доступ на чтение к исходным репозиториям, используйте режим Enterprise ZK. Подход с GitHub Action означает, что ваш исходный код никогда не покидает вашу среду. Timestamp GIT получает только хеши коммитов.
Регулярно архивируйте CSV-файлы аудита
Файлы .ots — это криптографическое доказательство, но CSV-файлы аудита — это человекочитаемая запись. Скачивайте их по расписанию и храните вместе с остальными документами по соответствию требованиям. В споре наличие чистого хронологического журнала экономит время.
Добавьте бейджи верификации в README
Публичные репозитории могут отображать бейдж верификации, который ссылается на страницу статуса Timestamp GIT. Страница подключения репозитория предоставляет URL бейджей и сниппеты Markdown. Типичный бейдж выглядит так:
[](https://timestampgit.dev/status/your-org/your-repo)
Любой, кто просматривает репозиторий, может перейти по ссылке и проверить текущий статус временных меток, ничего не устанавливая.
FAQ
Как GitHub App автоматически проставляет временные метки для моих коммитов?
После установки GitHub App отслеживает выбранные вами репозитории. Каждую ночь он собирает все новые хеши коммитов, создаёт дерево Меркла, привязывает корень к блокчейну Bitcoin через OpenTimestamps и отправляет файлы доказательств .ots обратно в ваш репозиторий. Никаких ручных шагов не требуется.
Нужен ли GitHub App доступ к моему исходному коду?
В стандартном режиме GitHub App требуется доступ только для чтения к исходному репозиторию для чтения хешей коммитов, поскольку разрешения GitHub требуют этой области. Однако Timestamp GIT никогда не читает, не копирует и не хранит ваш исходный код — он обрабатывает только хеш коммита. В режиме Enterprise ZK GitHub Action запускается на вашей инфраструктуре и отправляет в API только хеш коммита, поэтому у приложения вообще нет доступа к вашему исходному репозиторию.
Сколько времени занимает проставление временной метки коммита в Bitcoin?
Коммиты объединяются в пакеты каждую ночь. После обработки пакета Bitcoin-транзакция транслируется в сеть. Подтверждение в блокчейне Bitcoin обычно занимает около трёх часов, после чего файлы доказательств записываются в ваш репозиторий. Для коммита, сделанного в течение дня, доказательство временной метки обычно доступно на следующее утро.
Могу ли я проверить временную метку, не полагаясь на Timestamp GIT?
Да. Доказательство — это стандартный файл OpenTimestamps .ots. Вы можете скачать его и проверить локально с помощью любого инструмента верификации OpenTimestamps по блокчейну Bitcoin. Timestamp GIT также предоставляет веб-страницу верификации и PDF-сертификаты для удобства.
Заключение: настройте и забудьте
Timestamp GIT превращает криптографическую защиту предшествующего уровня техники из ручной рутины в автоматический фоновый процесс. Установите GitHub App один раз, выберите репозитории — и каждый будущий коммит проходит через один и тот же конвейер: обнаружение хеша, ночное пакетирование, построение дерева Меркла, привязка к Bitcoin и доставка доказательств.
Модель безопасности намеренно zero-knowledge. Ваш исходный код никогда не читается и не хранится. Стандартный режим обрабатывает только хеши коммитов, а режим Enterprise ZK сохраняет даже эти хеши под вашим контролем до момента отправки в API.
Цены покрывают распространённые случаи: Open Source бесплатен для публичных репозиториев, Pro Agency стоит $49/месяц для приватных репозиториев, а Enterprise ZK стоит $199/месяц с поддержкой GitHub Actions. Для изолированных или самостоятельно управляемых сред также доступна self-hosted лицензия Docker.
Если вы всё ещё вручную создаёте временные метки для отдельных коммитов, более быстрый путь — установить Timestamp GIT GitHub App или запросить self-hosted лицензию Docker для максимального контроля.
Похожие статьи
- Timestamp GIT против ручного OpenTimestamps: что лучше?
- Как доказать предшествующий уровень техники для программного обеспечения: руководство разработчика
- Как защитить ваше программное обеспечение от патентных троллей