Как доказать, что ваш код существовал на определённую дату (не раскрывая его)
Задача проста в постановке, но сложна в качественном решении: доказать, что конкретный коммит — или целая кодовая база — существовал на определённую дату, не публикуя исходный код и не полагаясь на журналы, которые суд может счесть заинтересованными. Это руководство подробно объясняет, как именно это сделать с помощью Timestamp GIT — управляемого GitHub-приложения, которое привязывает хеши Git-коммитов к блокчейну Bitcoin с использованием протокола OpenTimestamps.
К концу у вас будет автоматизированное timestamp-подтверждение с нулевым разглашением для вашей Git-истории. Каждый отслеживаемый коммит получает криптографическую квитанцию .ots, публичную страницу верификации и путь к готовым для суда доказательствам приоритета — и всё это без установки инструментов OpenTimestamps и без самостоятельной работы с транзакциями Bitcoin.
Предварительные требования
Перед началом убедитесь, что у вас есть:
- Учётная запись GitHub.
- Репозиторий, который вы хотите маркировать временем, — публичный или приватный.
- Доступ к установке Timestamp GIT GitHub App с timestampgit.dev.
- Базовое владение командами
git commitиgit push. Знания криптографии или блокчейна не требуются. - Для режима Enterprise ZK: файл рабочего процесса GitHub Actions, предоставленный Timestamp GIT, а также целевой репозиторий, куда будут записываться доказательства.
- Опционально: если вам нужна изолированная или самостоятельно размещённая установка — лицензия Timestamp GIT Docker.
Ценообразование соответствует сценариям использования: публичные репозитории могут использовать бесплатный тариф, приватные репозитории покрываются тарифом Pro Agency за $49 в месяц, а режим Enterprise ZK с GitHub Actions начинается от $199 в месяц.
Пошаговое руководство: настройка автоматической маркировки времени
Шаг 1: Установите GitHub-приложение Timestamp GIT
Перейдите на timestampgit.dev и установите GitHub-приложение Timestamp GIT из GitHub Marketplace.
Предоставляемые разрешения зависят от выбранного режима:
- Стандартный режим: Timestamp GIT требуется доступ только для чтения к исходному репозиторию, поскольку GitHub не предлагает разрешения «только хеш коммита». Приложение читает только хеш HEAD-коммита и никогда не читает содержимое файлов.
- Режим Enterprise ZK: Timestamp GIT вообще не требуется доступ для чтения к исходному репозиторию. Вам нужен лишь доступ на запись к отдельному целевому репозиторию, где будут храниться файлы доказательств.
В обоих режимах целевой репозиторий получает выделенную ветку или теневой репозиторий с доказательствами.
Шаг 2: Выберите репозитории для мониторинга
После установки откройте панель репозиториев по адресу timestampgit.dev/repos. Вы увидите репозитории, доступные для мониторинга.
Выберите исходные репозитории, которые должны маркироваться временем автоматически. Если вы используете отдельный теневой репозиторий для доказательств, выберите его в качестве целевого.
Шаг 3: Выберите режим развёртывания
Timestamp GIT предлагает два режима:
- Стандартный режим: GitHub-приложение автоматически обнаруживает новые коммиты через вебхуки и читает только хеш коммита.
- Режим Enterprise ZK: короткий GitHub Action выполняется в вашей собственной инфраструктуре и отправляет в API Timestamp GIT только хеш коммита. Ваш исходный код никогда не покидает вашу среду.
Для большинства команд стандартный режим — самый быстрый путь. Для строгих требований соответствия или сред с закрытым исходным кодом режим Enterprise ZK является более сильным вариантом с нулевым разглашением.
Шаг 4: Для режима Enterprise ZK добавьте рабочий процесс GitHub Actions
Если вы выбрали режим Enterprise ZK, Timestamp GIT предоставляет файл рабочего процесса из 12 строк. Упрощённая версия выглядит так:
# .github/workflows/timestamp-git.yml
name: timestamp-git
on:
push:
branches: ["**"]
jobs:
timestamp:
runs-on: ubuntu-latest
steps:
- name: Send commit hash to Timestamp GIT
env:
TIMESTAMP_GIT_SIGNED_URL: ${{ secrets.TIMESTAMP_GIT_SIGNED_URL }}
run: |
curl -f -X POST "$TIMESTAMP_GIT_SIGNED_URL"
Реальный рабочий процесс использует подписанный URL, сгенерированный в панели управления Timestamp GIT. Этот URL содержит значение HMAC и идентификатор коммита, поэтому Action никогда не работает с исходным кодом — только с хешем.
Шаг 5: Сделайте коммит
Теперь создайте обычный коммит и отправьте его в отслеживаемый репозиторий:
git add .
git commit -m "feat: add rate limiter"
git push origin main
В стандартном режиме GitHub-приложение обнаруживает новый коммит через вебхук. В режиме Enterprise ZK GitHub Action отправляет хеш коммита в API Timestamp GIT сразу после пуша.
Шаг 6: Дождитесь ночного пакетного процесса
Timestamp GIT не привязывает каждый коммит индивидуально в реальном времени. Вместо этого ночной cron-воркер запускается в полночь:
- Собирает все ожидающие хеши коммитов.
- Группирует их в ежедневные файлы манифеста.
- Строит дерево Меркла.
- Создаёт доказательства OpenTimestamps с использованием публичных OTS-календарей.
- Привязывает корень Меркла к блокчейну Bitcoin.
Подтверждение Bitcoin обычно занимает около трёх часов. После этого доказательство становится неизменяемым — ни одна организация, включая Timestamp GIT или вас, не может его изменить.
Шаг 7: Получите доказательство
После завершения ночного процесса Timestamp GIT отправляет файлы манифеста и квитанции .ots обратно в вашу выделенную ветку timestamps или теневой репозиторий.
Вы также можете скачать файлы доказательств напрямую из панели управления Timestamp GIT. Основные артефакты:
- Ежедневный файл манифеста, содержащий хеши коммитов.
- Файл квитанции
.otsдля каждой привязанной партии. - Метаданные аудита с информацией о блоке и транзакции Bitcoin.
Как убедиться, что всё работает (верификация)
Верификация — это то, что превращает Git-хеш в нечто, что можно показать юристу, аудитору или суду.
Проверьте страницу статуса репозитория
Откройте https://timestampgit.dev/status/{user}/{repo}. Эта публичная панель показывает:
- Последний привязанный блок Bitcoin и детали транзакции.
- Самую раннюю дату привязки для репозитория.
- Регулярность ежедневной маркировки времени.
- Календарную тепловую карту привязанных коммитов.
- Скачиваемый CSV-файл аудита и PDF-сертификат.
Запустите браузерную верификацию Меркла
Для конкретного дня откройте https://timestampgit.dev/verification/{user}/{repo}/{date}. Эта страница пошагово проводит через проверку цепочки Меркла.
Все вычисления выполняются локально в вашем браузере. Timestamp GIT никогда не видит, что именно вы проверяете, — это процесс верификации с нулевым разглашением.
Скачайте официальные записи
Используйте панель управления или API для скачивания:
- PDF-сертификата за конкретную дату.
- Полного журнала аудита в формате CSV.
Это полезно при договорных спорах, проверке интеллектуальной собственности и раскрытии доказательств в суде.
Добавьте бейдж верификации в README
Timestamp GIT предоставляет встраиваемые сниппеты бейджей Shields.io с https://timestampgit.dev/connected/{user}/{repo}. Разместите сгенерированный Markdown в вашем README, чтобы публично отображать статус верификации.
Учитывайте, что для приватных репозиториев к URL бейджа добавляется зашифрованный HMAC. Только авторизованные пользователи могут видеть статус приватных репозиториев.
Независимая верификация
Если вы когда-нибудь захотите проверить доказательство вне интерфейса Timestamp GIT, вы можете скачать файл квитанции .ots и запустить стандартные инструменты верификации OpenTimestamps против блокчейна Bitcoin. Браузерная страница верификации продукта уже делает это за вас, но квитанция остаётся независимо проверяемой навсегда.
Устранение распространённых проблем
Коммиты не обнаруживаются
Проверьте, что GitHub-приложение установлено на нужный репозиторий и имеет разрешения, необходимые для вашего режима. В настройках GitHub посмотрите доставку вебхуков, чтобы увидеть, получил ли Timestamp GIT событие push.
Доказательство не появляется спустя день
Помните, что привязка к Bitcoin занимает несколько часов — обычно около трёх часов. Убедитесь, что ночной cron-запуск выполнился и целевая ветка получила новые файлы. Если вы в стандартном режиме, проверьте, что целевой репозиторий доступен для записи.
Бейдж показывает «Unverified»
Если репозиторий приватный, публичный бейдж не будет работать, пока вы не используете URL с HMAC-подписью из виджета бейджа. Для публичных репозиториев убедитесь, что вы используете точный сниппет, сгенерированный Timestamp GIT.
Режим Enterprise ZK не отправляет хеши
Откройте журналы рабочего процесса GitHub Actions и найдите ошибки. Убедитесь, что:
- Подписанный URL в секрете репозитория всё ещё действителен.
- Целевой репозиторий доступен.
- Рабочий процесс запускается на правильных событиях push.
Проблемы с самостоятельно размещённым Docker-инстансом
Если вы запускаете Docker-образ, проверьте настройку Compose и журналы:
docker compose pull
docker compose up -d
docker compose logs -f timestampgit
Также проверьте, что файл лицензии действителен и смонтирован в ожидаемом месте. После запуска приложение доступно по адресу http://localhost:8080.
Часто задаваемые вопросы
Как Timestamp GIT доказывает, что мой код существовал на определённую дату, не видя мой код?
Timestamp GIT извлекает только хеш Git-коммита — односторонний криптографический отпечаток — и привязывает этот хеш к блокчейну Bitcoin. Сам исходный код никогда не покидает ваш репозиторий. Поскольку хеш невозможно обратить для восстановления кода, метка времени доказывает, что хеш существовал в тот момент, что, в свою очередь, доказывает существование кода.
Можно ли использовать Timestamp GIT для приватных репозиториев?
Да. У Timestamp GIT есть тарифы для приватных репозиториев. В стандартном режиме GitHub-приложению требуется доступ на чтение к исходному репозиторию для обнаружения хешей коммитов, но оно никогда не читает содержимое файлов. В режиме Enterprise ZK GitHub Action отправляет в API только хеш коммита, поэтому приложение вообще не имеет доступа к исходному репозиторию.
Что произойдёт, если Timestamp GIT прекратит работу? Смогу ли я по-прежнему проверять свои метки времени?
Ваши метки времени остаются проверяемыми навсегда. Доказательства основаны на блокчейне Bitcoin и протоколе OpenTimestamps, оба из которых не зависят от Timestamp GIT. Вы можете скачать файлы квитанций .ots и проверить их локально с помощью стандартных инструментов OpenTimestamps против блокчейна Bitcoin, без какой-либо зависимости от серверов Timestamp GIT.
Имеет ли метка времени юридическую силу в суде?
Ни одна метка времени не может гарантировать конкретный юридический исход. Однако криптографические метки времени, привязанные к блокчейну Bitcoin, всё чаще признаются убедительным доказательством существования в определённый момент времени. Они предоставляют защищённую от подделки, математически проверяемую запись, которую можно представить в судебном разбирательстве для подтверждения приоритета или авторства. Вам следует проконсультироваться с юристом о допустимости таких доказательств в вашей юрисдикции.
Заключение
Вы настроили автоматическую маркировку времени с нулевым разглашением для ваших Git-коммитов с помощью Timestamp GIT. Вместо поддержки хрупких внутренних журналов или ручного изучения криптографического протокола вы один раз установили GitHub-приложение, подключили репозиторий и позволили ночным процессам привязывать хеши коммитов к Bitcoin.
Результат — неизменяемое доказательство приоритета, независимое от любого поставщика, созданное без раскрытия исходного кода. Начните с бесплатного тарифа для публичных репозиториев или изучите самостоятельно размещаемый вариант Docker, если вам нужна изолированная инфраструктура.
Для более глубокого погружения смотрите связанные публикации ниже.
Связанные публикации
- Защитите свой стартап от патентных троллей с помощью Git-маркировки времени
- Как dev-студии могут доказать выполнение работ с помощью Timestamp GIT
- Доказательство существования кода: что это такое и почему это важно