Что такое доказательство существования для программного кода?
Для разработчиков и команд комплаенса «доказательство существования» — это не про подтверждение владения или авторства. Оно отвечает на один узкий вопрос: существовал ли именно этот код в этот момент времени? В мире, где историю Git можно переписать, временные метки файлов — изменить, а внутренние журналы часто отвергаются как заинтересованные, доказательство существования программного кода означает закрепление криптографического отпечатка вашей работы в неизменяемом публичном реестре.
В этой статье объясняется, что означает доказательство существования, как оно работает изнутри и как Timestamp GIT превращает его в GitHub-воркфлоу без какой-либо настройки.
Что означает «доказательство существования» для кода?
Доказательство существования программного кода — это возможность продемонстрировать, что конкретный фрагмент кода — точнее, криптографический хеш этого кода — существовал в конкретный момент времени.
Последний момент важен. Вам не нужно публиковать исходный код и не нужно загружать его третьей стороне. Вместо этого вы создаёте односторонний отпечаток состояния репозитория и записываете этот отпечаток в публичное и защищённое от подделки место.
Чтобы понять разницу:
- Доказательство существования показывает, что данное состояние кода существовало на данную дату.
- Доказательство авторства показывает, кто создал или закоммитил этот код.
- Доказательство владения — это юридический вывод, основанный на авторстве, трудовых договорах, передаче прав или других доказательствах.
Временная метка, закреплённая в блокчейне, не доказывает, что код написали вы. Она доказывает, что код существовал в этот момент. Во многих спорах этого различия достаточно — потому что если ваша реализация существовала до чьей-либо патентной заявки или претензии, временная шкала становится математически закреплённой.
Вот как выглядит отпечаток в Git:
# Git создаёт уникальный отпечаток для точного состояния репозитория
git rev-parse HEAD
# 6f1ed002ab5595859012f3f9b6b4c2b1e1c9a2e5
Этот хеш представляет полное состояние репозитория на момент коммита. Измените один байт — и хеш полностью изменится. Сам хеш невозможно обратить, чтобы раскрыть ваш исходный код.
Простая аналогия: нотариус и сейф
Представьте, что вы приходите к нотариусу с запечатанным конвертом. Нотариус его не открывает. Вместо этого он записывает дату, ставит штамп снаружи и подписывает запись в журнале. Спустя годы вы можете открыть конверт в суде и показать, что содержимое существовало на эту дату, потому что запись нотариуса независима и защищена от подделки.
Доказательство существования для программного обеспечения работает так же, только «конверт» — это криптографический хеш, а «нотариус» — блокчейн Bitcoin.
- Вы сохраняете код в тайне. Нотариус — в данном случае сервис временных меток и публичный реестр — видит только отпечаток.
- Запись независима. Блокчейн Bitcoin — это публичный реестр, который не контролируется ни одним поставщиком. Как только транзакция подтверждена в блоке, изменение этой записи вычислительно нецелесообразно.
- Доказательство переживает поставщика. Поскольку доказательство закреплено в Bitcoin, вы можете проверить его, даже если сервис временных меток исчезнет.
Эта аналогия помогает нетехническим заинтересованным сторонам понять, почему блокчейн-временная метка отличается от внутреннего журнала Git. Внутренний журнал живёт на инфраструктуре, которую вы контролируете или арендуете. Доказательство, закреплённое в Bitcoin, публично, неизменяемо и независимо проверяемо.
Как доказательство существования работает изнутри
Процесс можно разбить на три шага.
Шаг 1: Отпечаток
Git уже выполняет первый шаг за вас. Каждый коммит получает уникальный хеш — SHA-1 в старых версиях Git, с поддержкой SHA-256 в новых репозиториях — который покрывает полное состояние репозитория на этот момент.
Этот хеш — не ваш код. Это математический дайджест фиксированного размера. Из него невозможно восстановить исходный код, и одно и то же состояние кода всегда даёт один и тот же хеш.
Шаг 2: Закрепление
Следующий шаг — закрепить хеш в публичном реестре. Timestamp GIT собирает хеши коммитов и группирует их в ежедневные файлы-манифесты. Он строит дерево Меркла из этих хешей и создаёт доказательства OpenTimestamps. Корень Меркла затем закрепляется в транзакции Bitcoin.
Как только эта транзакция подтверждена в блоке Bitcoin, временная метка становится неизменяемой. Нет кнопки удаления, нет административного переопределения и нет проприетарной базы данных, которую можно отредактировать позже.
Поток выглядит так:
хеш коммита -> ежедневный манифест -> дерево Меркла -> транзакция Bitcoin -> .ots-квитанция
Шаг 3: Доказательство
Результатом является криптографическая квитанция, обычно файл .ots. Эта квитанция позволяет любому проверить временную метку по блокчейну Bitcoin с помощью стандартных инструментов OpenTimestamps.
Это важно: доказательство опирается на SHA-256 и данные блоков Bitcoin. Нет привязки к формату или инфраструктуре одного поставщика. Даже если SaaS-провайдер перестанет существовать, доказательство останется проверяемым.
Делать это вручную с помощью сырых инструментов OpenTimestamps возможно, но это означает самостоятельно разбираться с календарями, деревьями Меркла и мониторингом подтверждений Bitcoin. Именно эту ручную сложность устраняет Timestamp GIT, автоматизируя конвейер за GitHub App.
Почему доказательство существования важно для разработчиков и комплаенса
Доказательство существования важно, потому что время часто является центральным вопросом в спорах об интеллектуальной собственности.
- Патентные тролли: Распространённая защита от широкого патента на программное обеспечение — это предшествующий уровень техники. Если вы можете показать, что ваш код существовал до даты подачи заявки, патентная претензия может быть признана недействительной. Доказательство существования превращает ваш приватный репозиторий в датированную, проверяемую запись предшествующего уровня техники. Подробнее см. Как доказать, что ваш код существовал до подачи патента.
- Споры с сотрудниками и клиентами: Когда разработчик уходит или клиент сомневается, когда был завершён этап, хеш коммита с временной меткой сильнее, чем экспортированный журнал чата или отредактированная история Git.
- Комплаенс и управление: Команды, которым нужны аудиторские следы для проверок безопасности, due diligence или внутреннего управления, могут показать регулярную, проверяемую запись того, когда состояния кода существовали.
Есть и распространённые заблуждения, которые стоит прояснить.
- Это не регистрация авторских прав. Блокчейн-временная метка не заменяет регистрацию авторских прав и сама по себе не доказывает авторство.
- Это не доказывает, кто написал код. Это доказывает, что данный хеш существовал в данное время. Авторство по-прежнему требует трудовых записей, метаданных коммитов или других доказательств.
- Это не «просто внутренний журнал». Историю Git можно переписать, принудительно запушить или потерять. Доказательство, закреплённое в Bitcoin, внешнее, публичное и математически проверяемое.
Как Timestamp GIT делает доказательство существования простым
Timestamp GIT — это управляемый SaaS и GitHub App, который автоматизирует весь конвейер доказательства существования. Вам не нужно запускать команды OpenTimestamps, управлять календарями или напрямую взаимодействовать с Bitcoin.
Основной рабочий процесс:
- Установите GitHub App один раз.
- Выберите репозитории, которые хотите отслеживать.
- Продолжайте коммитить код как обычно.
Каждую ночь Timestamp GIT автоматически группирует ожидающие хеши коммитов, строит дерево Меркла, создаёт доказательства OpenTimestamps и закрепляет корень Меркла в блокчейне Bitcoin. После подтверждения в Bitcoin — обычно около трёх часов — файлы манифеста и .ots-квитанции отправляются обратно в выделенную ветку timestamps или теневой репозиторий.
Ключевые характеристики:
- Zero-knowledge по дизайну. Timestamp GIT никогда не видит, не копирует и не хранит ваш исходный код. Он обрабатывает только хеши коммитов.
- Никаких ручных шагов. Нет CLI-инструментов для установки на машины разработчиков и нет сырых транзакций Bitcoin для создания.
- Гибкое развёртывание. Стандартный режим использует GitHub App и требует доступ на чтение к исходному репозиторию и доступ на чтение-запись к целевому репозиторию. Enterprise ZK Mode использует GitHub Action на вашей инфраструктуре, чтобы отправлять только хеш коммита в API Timestamp GIT, поэтому сервису вообще не нужен доступ на чтение к исходному репозиторию.
- Публичная проверка. Вы можете встроить статусные бейджи в README, просматривать публичную страницу статуса, скачивать аудиторские CSV или генерировать PDF-сертификаты.
- Независимость от поставщика.
.ots-квитанцию можно проверить офлайн с помощью стандартных инструментов OpenTimestamps, даже если Timestamp GIT прекратит работу.
Для self-hosted или изолированных сред доступен Docker-образ:
services:
timestampgit:
image: rue1401/timestampgit:prod
ports:
- "8080:8080"
volumes:
- ./data:/app/data
restart: unless-stopped
valkey:
image: valkey/valkey:8
restart: unless-stopped
Вы также можете напрямую запрашивать публичные статусные эндпоинты, например:
curl https://timestampgit.dev/api/statusLast/your-org/your-repo
Этот эндпоинт возвращает информацию о последнем закреплённом блоке Bitcoin для отслеживаемого репозитория.
FAQ
Имеет ли доказательство существования юридическую силу?
Криптографические временные метки всё чаще принимаются судами как доказательство предшествующего уровня техники. Они предоставляют надёжную, защищённую от подделки запись, которую можно независимо проверить. Однако юридическое признание варьируется в зависимости от юрисдикции, и для конкретных случаев рекомендуется проконсультироваться с юристом.
Раскрывает ли доказательство существования мой исходный код?
Нет. Доказательство существования использует криптографические хеши, которые являются односторонними функциями. Фактический исходный код никогда не передаётся и не хранится. В блокчейн закрепляется только хеш, поэтому ваш код остаётся приватным.
Сколько стоит ставить временные метки на мой код?
Timestamp GIT предлагает бесплатный тариф для публичных репозиториев. Платные планы начинаются от $49/месяц для приватных репозиториев, с планом Enterprise ZK за $199/месяц. Также доступны лицензии на self-hosted Docker.
Могу ли я проверить временную метку, не полагаясь на Timestamp GIT?
Да. Доказательства основаны на протоколе OpenTimestamps и блокчейне Bitcoin. Вы можете скачать .ots-квитанцию и проверить её с помощью стандартных инструментов OpenTimestamps, даже если Timestamp GIT перестанет существовать.
Заключение
Доказательство существования программного кода — один из немногих инструментов разработчика, который одновременно дёшев, математически строг и полезен как в юридическом, так и в комплаенс-контексте. Оно не доказывает авторство или владение, но создаёт фиксированную точку во времени, которую крайне сложно оспорить.
Сложный путь — запускать протокол OpenTimestamps вручную. Практичный путь — установить GitHub App Timestamp GIT, подключить репозитории и позволить ночному конвейеру закрепления сделать всё остальное. Начните ставить временные метки на свои коммиты в Timestamp GIT.
Похожие статьи
- Как доказать, что ваш код существовал до подачи патента
- Временные метки Git-коммитов для защиты от патентных троллей
- Автоматизация временных меток кода с помощью GitHub App