Как криптографически проставлять временные метки для Git-коммитов (без CLI-инструментов)
Большинство разработчиков относятся к git log как к надёжному источнику сведений о том, когда выполнялась работа. Но стандартная история Git не является криптографически достоверной: даты коммитов можно задать любыми значениями, историю можно переписать с помощью force-push, а репозиторий, размещённый на GitHub, может быть изменён людьми с правами администратора. Если патентный тролль, бывший подрядчик или конкурент попросит вас доказать, когда существовала конкретная реализация, ваш локальный git log часто отклоняют как заинтересованное доказательство.
Это руководство покажет, как криптографически проставлять временные метки для Git-коммитов без установки OpenTimestamps, запуска узла Bitcoin или изучения низкоуровневых инструментов командной строки. Вы будете использовать Timestamp GIT — управляемое GitHub-приложение, которое считывает только хеши ваших коммитов, ежедневно объединяет их в пакеты, закрепляет их в Bitcoin и записывает обратно файлы доказательств .ots. В итоге каждый коммит в отслеживаемом репозитории можно будет проверить по блокчейну Bitcoin.
Если вы не знакомы с базовой концепцией, см. Proof of Existence in Software: A Beginner’s Guide. Эта статья сосредоточена на задаче настройки.
Предварительные требования
Вам не нужны знания в области криптографии, но потребуется:
- Учётная запись GitHub и как минимум один репозиторий, который вы хотите защитить.
- Доступ к GitHub-приложению Timestamp GIT, доступному на сайте Timestamp GIT.
- Базовое знакомство с обычными рабочими процессами Git, такими как коммит и отправка изменений.
- Публичный репозиторий, если вы хотите начать бесплатно. Приватные репозитории доступны на платных тарифах.
Для стандартной настройки не требуется локальная установка, клиент OpenTimestamps или Bitcoin-кошелёк.
Пошаговая инструкция: настройка автоматической простановки временных меток
Шаг 1: Установите GitHub-приложение Timestamp GIT
Начните с сайта Timestamp GIT или GitHub Marketplace. Нажмите Install GitHub App, выберите, следует ли установить приложение для личной учётной записи или организации, и завершите процесс авторизации GitHub.
Приложение становится управляемым сервисом: после установки оно отслеживает выбранные репозитории и автоматически закрепляет коммиты. Вам не нужно добавлять post-commit-хуки или менять свой рабочий процесс разработки.
Шаг 2: Предоставьте необходимые разрешения
Timestamp GIT работает в двух режимах:
- Стандартный режим: GitHub-приложение считывает только последний хеш коммита из исходного репозитория. Поскольку в системе разрешений GitHub нет доступа «только к хешу коммита», приложению требуется доступ только для чтения к исходному репозиторию. Также требуется доступ на чтение и запись к целевому репозиторию, куда будут записываться файлы доказательств.
- Режим Enterprise ZK: короткий GitHub Action выполняется в вашей инфраструктуре и отправляет в API Timestamp GIT только хеш коммита. В этом режиме доступ на чтение к исходному репозиторию не требуется. Вам нужен только доступ на чтение и запись к целевому репозиторию, где хранятся доказательства.
Для большинства пользователей стандартный режим — правильная отправная точка. Важно то, что Timestamp GIT никогда не читает ваш исходный код ни в одном из режимов.
Шаг 3: Выберите репозитории для отслеживания
Во время установки выберите, должно ли приложение отслеживать все текущие и будущие репозитории или только выбранные. Если вы тестируете на публичном репозитории, выберите его сейчас.
Файлы доказательств можно записывать в тот же репозиторий в отдельную ветку или в отдельный теневой репозиторий. Использование того же репозитория — обычная практика для небольших проектов. Отдельный теневой репозиторий полезен, если вы хотите полностью исключить файлы доказательств из основного репозитория.
Шаг 4: Подтвердите настройку в панели управления
После установки откройте https://timestampgit.dev/repos. Вы должны увидеть там список отслеживаемых репозиториев.
Проверьте, что:
- Исходный репозиторий присутствует в списке.
- Целевой репозиторий для доказательств настроен так, как ожидалось.
- Репозиторий помечен как активный.
Если репозиторий не отображается, вернитесь к настройкам установки GitHub-приложения и убедитесь, что выбраны правильные репозитории.
Шаг 5: Создайте новый коммит
Timestamp GIT обрабатывает только коммиты, сделанные после подключения репозитория. Создайте обычный коммит и отправьте его:
git add src/validation.js
git commit -m "Add payment validation logic"
git push origin main
Больше ничего запускать не нужно. GitHub-приложение автоматически обнаружит новый коммит через вебхуки.
Шаг 6: Дождитесь ночного пакетного процесса
Timestamp GIT не закрепляет каждый коммит немедленно. Коммиты собираются в очередь, и ночной обработчик группирует их вскоре после полуночи по UTC.
Обработчик:
- Создаёт файл манифеста для каждого репозитория.
- Строит дерево Меркла из ожидающих хешей коммитов.
- Создаёт доказательства OpenTimestamps.
- Закрепляет корень Меркла в блокчейне Bitcoin.
Подтверждение в Bitcoin обычно занимает несколько часов. Полный процесс записи доказательств в сумме может занять несколько часов, поэтому не ожидайте, что бейдж или страница статуса обновятся через несколько минут после отправки коммита.
Шаг 7: Проверьте доставку доказательств
После подтверждения пакета Timestamp GIT отправляет файлы доказательств обратно в выбранную вами цель. Вы увидите отдельную ветку timestamps или теневой репозиторий, содержащий:
manifests/2026-08-25.txt
proofs/2026-08-25.ots
Файл .ots — это ваша криптографическая квитанция. Вы можете хранить его, публиковать или передать аудитору. Доказательство не зависит от инфраструктуры Timestamp GIT.
Как убедиться, что всё работает (проверка)
Самый быстрый способ убедиться, что простановка временных меток активна, — открыть страницу статуса репозитория:
https://timestampgit.dev/status/{user}/{repo}
Замените {user} и {repo} на ваше имя пользователя или организацию GitHub и название репозитория. Страница статуса показывает самую раннюю дату закрепления, ежедневную регулярность, данные о блоках и транзакциях Bitcoin, а также календарную тепловую карту.
Для машиночитаемой проверки можно вызвать публичный API статуса:
curl -s https://timestampgit.dev/api/statusLast/octocat/hello-world
Ответ содержит информацию о последнем закреплённом блоке Bitcoin. Для приватных репозиториев URL включает зашифрованный HMAC, чтобы доступ к статусу имели только авторизованные пользователи.
Чтобы отображать статус доказательства прямо в вашем README, откройте панель управления репозиторием и скопируйте встраиваемую разметку бейджа. Она будет выглядеть примерно так:
[](https://timestampgit.dev/status/YOUR_USER/YOUR_REPO)
Панель управления предоставляет полный фрагмент, включая правильный URL бейджа Shields.io для вашего репозитория.
Для более глубокой проверки доказательства посетите:
https://timestampgit.dev/verification/{user}/{repo}/{date}
Эта страница пошагово выполняет проверку цепочки Меркла локально в вашем браузере. Вы также можете скачать PDF-сертификат для конкретной даты или экспортировать полный аудиторский журнал в CSV из панели статуса.
Если вы хотите проверить файл .ots полностью независимо, вы можете скачать его и проверить по блокчейну Bitcoin с помощью инструментов OpenTimestamps с открытым исходным кодом. Timestamp GIT не требует делать это вручную, но такая возможность существует, потому что доказательство не зависит от поставщика. Подробное руководство см. в How to Verify Your Git Commit Timestamps.
Устранение распространённых проблем
Проблема: после коммита доказательство не появляется.
Решение: убедитесь, что репозиторий по-прежнему выбран в настройках установки GitHub-приложения. Также убедитесь, что коммит был сделан после установки. Коммиты, сделанные до подключения приложения, не обрабатываются задним числом.
Проблема: ветка доказательств не была создана.
Решение: проверьте, что у приложения есть доступ на запись к целевому репозиторию. Если вы записываете доказательства в другой репозиторий, у этой цели должен быть доступ на чтение и запись. Использование теневого репозитория часто чисто решает эту проблему.
Проблема: бейдж проверки показывает неизвестный или устаревший статус.
Решение: дождитесь завершения ночного пакета и подтверждения в Bitcoin. Обычно это занимает несколько часов после полуночи по UTC. Обновите бейдж после того, как файлы доказательств будут записаны обратно.
Проблема: статус приватного репозитория не виден другим.
Решение: URL статуса приватного репозитория включает зашифрованный HMAC. Используйте аутентифицированную ссылку бейджа из панели управления Timestamp GIT, а не публичную конечную точку статуса.
Проблема: вам нужно автономное или самостоятельно размещаемое развёртывание.
Решение: Timestamp GIT доступен по лицензии для самостоятельного размещения в Docker. Минимальная конфигурация Docker Compose выглядит так:
services:
timestampgit:
image: rue1401/timestampgit:prod
ports:
- "8080:8080"
volumes:
- ./data:/app/data
- ./license.lic:/app/license.lic:ro
restart: unless-stopped
valkey:
image: valkey/valkey:8
restart: unless-stopped
После запуска приложение доступно по адресу http://localhost:8080, а мастер настройки проведёт вас через подключение вашего GitHub-приложения. Демонстрационная лицензия с ограниченным сроком действия доступна на странице лицензий Docker.
Часто задаваемые вопросы
Как Timestamp GIT криптографически проставляет временные метки для моих Git-коммитов?
Timestamp GIT извлекает хеш SHA-1 или SHA-256 каждого коммита, ежедневно объединяет эти хеши в пакеты, строит дерево Меркла и закрепляет корень Меркла в блокчейне Bitcoin с помощью протокола OpenTimestamps. Это создаёт неизменяемое доказательство того, что коммит существовал в это время.
Нужно ли мне запускать какие-либо CLI-инструменты или разбираться в OpenTimestamps?
Нет. Timestamp GIT — это управляемое GitHub-приложение. После установки оно автоматически отслеживает ваши репозитории и закрепляет коммиты каждую ночь. Вам не нужно запускать какие-либо команды или управлять базовым протоколом.
Раскрывается ли мой исходный код во время простановки временных меток?
Нет. Timestamp GIT считывает только хеш коммита — криптографический отпечаток, а не сам код. В режиме Enterprise ZK даже хеш коммита отправляется из вашей инфраструктуры через GitHub Action, поэтому ваш исходный код никогда не покидает вашу среду.
Могу ли я проверить временную метку независимо, не полагаясь на Timestamp GIT?
Да. Доказательство хранится в виде стандартного файла квитанции .ots. Любой может скачать его и проверить по блокчейну Bitcoin с помощью инструментов OpenTimestamps с открытым исходным кодом. Доказательство остаётся действительным, даже если Timestamp GIT исчезнет.
Заключение
Теперь у вас есть автоматическая криптографическая простановка временных меток для ваших Git-коммитов. После однократной установки GitHub-приложения каждый коммит в отслеживаемом репозитории ежедневно объединяется в пакет, закрепляется в Bitcoin и преобразуется в проверяемую квитанцию .ots. Процесс не требует локальных CLI-инструментов, ручных команд OpenTimestamps или знаний о Bitcoin.
Публичные репозитории могут начать бесплатно. Приватные репозитории доступны на платных тарифах. Установите GitHub-приложение сегодня и сделайте историю своих коммитов юридически защитимой.
Связанные публикации
- Timestamp GIT Pricing: Plans for Every Developer
- Proof of Existence in Software: A Beginner’s Guide
- How to Verify Your Git Commit Timestamps
- Defend Your Software Against Patent Trolls with Timestamps
- OpenTimestamps vs Timestamp GIT: Which Is Right for Your Code?
- Set Up Automatic Git Commit Timestamping in Minutes