Защита кода для фрилансеров: решение на основе временных меток
Алекс — фрилансер, full-stack-разработчик. Полтора года назад она создала многоразовую библиотеку аутентификации для клиентского проекта. Контракт был слабым в части интеллектуальной собственности, а работа передавалась через приватный репозиторий GitHub. На прошлой неделе Алекс обнаружила подозрительно знакомый модуль аутентификации внутри нового SaaS-продукта того же клиента — логику, которую написала она, лишь слегка реорганизованную, чтобы выглядела иначе.
Когда Алекс подняла этот вопрос, клиент заявил, что разработал функцию самостоятельно. У Алекс есть локальная история Git, цепочки писем и несколько экспортированных файлов. Но юрист клиента называет эти доказательства субъективными и редактируемыми. Без формального соглашения об интеллектуальной собственности и без независимой записи о том, когда её код существовал, Алекс оказалась в тупике.
Это кошмар фрилансера, связанный с плагиатом. Техническая работа выполнена, но доказательства отсутствуют.
Кошмар фрилансера: плагиат
У фрилансеров редко есть юридическая инфраструктура компании. Большая часть работы строится на доверии, контракте, который может не упоминать право собственности на код, и Git-репозитории, к которому у клиента может быть или не быть доступа. Когда возникает спор, ситуация с доказательствами часто оказывается хуже, чем ожидалось.
Распространённые источники доказательств быстро подводят:
- Письма с временными метками можно переслать, отредактировать или отклонить как не привязанные к фактическому коду.
- Даты изменения файлов — это локальные метаданные, которые можно изменить базовыми инструментами.
- Даты коммитов Git — тоже метаданные. Их можно задать произвольными значениями при коммите, поэтому у суда или клиента нет оснований считать их защищёнными от подделки.
- Хостинг GitHub или GitLab доказывает, что код существовал на чьём-то сервере, но не обязательно в конкретную дату и не способом, независимым от владельца репозитория.
Для Алекс болезненное осознание заключается в том, что фразы «я написала это первой» недостаточно — нужны не только память и граф коммитов. Нужна временная метка, которую никто не сможет переписать.
Почему фрилансерам нужен криптографический приоритет
Хеш коммита Git — это односторонний криптографический отпечаток точного состояния репозитория в определённый момент времени. Это хорошая отправная точка: хеш математически привязан к коду. Но сам по себе хеш не является доказательством того, когда он существовал. Чтобы создать такое доказательство, хеш должен быть закреплён в публичной неизменяемой среде.
Именно здесь в игру вступает Bitcoin.
Криптографическая временная метка использует блокчейн Bitcoin как независимого свидетеля. Когда хеш коммита встраивается в транзакцию Bitcoin через протокол OpenTimestamps, существование этого хеша замораживается в конкретном блоке Bitcoin. После подтверждения этот блок нельзя изменить, переупорядочить или удалить без переписывания истории Bitcoin — а это не под силу ни одной отдельной стороне.
Для фрилансеров это создаёт форму приоритета, которая является:
- Независимой: доказательство не зависит от вашего аккаунта GitHub, вашего ноутбука или готовности клиента что-либо признавать.
- Проверяемой: любой может проверить файл
.otsпо блокчейну Bitcoin без необходимости в серверах Timestamp GIT. - С нулевым разглашением: вы можете доказать, что конкретный хеш коммита существовал, не раскрывая исходный код, стоящий за ним.
Речь не только о плагиате. Тот же механизм помогает против патентных троллей, споров с подрядчиками и заявлений конкурентов о «чистой комнате». Если вам нужен более глубокий контекст о лежащей в основе логике Bitcoin, см. How Bitcoin Can Prove Your IP Existed First.
В этой статье фокус уже: дать фрилансерам-разработчикам практический способ доказать авторство до того, как возникнет спор.
Практическое руководство: защита вашего кода с помощью Timestamp GIT
Timestamp GIT автоматизирует весь рабочий процесс криптографических временных меток. Вам не нужно запускать команды OpenTimestamps, управлять транзакциями Bitcoin или помнить о ручном процессе отметки. Рабочий процесс построен вокруг инструментов, которые вы уже используете как фрилансер.
Шаг 1: Установите GitHub App Timestamp GIT один раз
Начните с установки GitHub App Timestamp GIT и выберите репозитории, которые хотите отслеживать. Это одноразовая настройка.
В стандартном режиме GitHub App считывает только хеш HEAD-коммита каждого отслеживаемого репозитория. Он не читает, не копирует и не хранит ваш исходный код. Модель разрешений GitHub требует доступа на чтение к исходному репозиторию для обнаружения коммитов, а также доступа на запись к целевому репозиторию, где будут храниться доказательства. Целевым может быть тот же репозиторий или отдельный теневой репозиторий.
Полное пошаговое руководство по установке см. в Automatically Timestamp Every Git Commit with a GitHub App.
Шаг 2: Продолжайте коммитить как обычно
После установки в вашем ежедневном рабочем процессе нет дополнительных шагов. Каждый новый хеш коммита обнаруживается автоматически, ставится в очередь и включается в ночной пакет.
Каждую ночь Timestamp GIT группирует ожидающие хеши коммитов по репозиториям, создаёт файл манифеста, строит дерево Меркла и закрепляет корень Меркла в блокчейне Bitcoin через протокол OpenTimestamps. Вы продолжаете писать код; доказательства накапливаются в фоновом режиме.
Шаг 3: Получите свои квитанции-доказательства
После обработки пакета Timestamp GIT отправляет манифест и файлы квитанций .ots обратно в выделенную ветку timestamps или теневой репозиторий. Поскольку подтверждение Bitcoin обычно занимает около трёх часов, доставка доказательств не мгновенная — но она не требует от вас никаких действий.
Файл .ots — это основное доказательство. Вы также можете сгенерировать PDF-сертификат из панели управления Timestamp GIT для конкретной даты.
Шаг 4: Публично отображайте статус верификации
Timestamp GIT предоставляет встраиваемые бейджи верификации для вашего README. После подключения репозитория вы можете использовать виджет бейджа на странице Repository Connected, чтобы сгенерировать фрагмент Markdown с корректным URL бейджа Shields.io.
Публичный бейдж делает для фрилансеров две вещи: он показывает клиентам, что у вашего проекта есть независимая цепочка временных меток, и делает верификацию немедленно доступной.
Шаг 5: Используйте доказательство в споре
Если клиент заявляет о независимой разработке, вы можете передать квитанцию .ots и ссылку для верификации. Другой стороне не нужен доступ к Timestamp GIT. Она может скачать квитанцию и проверить её локально по блокчейну Bitcoin с помощью стандартных инструментов OpenTimestamps.
Для приватных репозиториев URL статуса верификации защищены зашифрованным HMAC, поэтому только авторизованные пользователи могут просматривать состояние временных меток репозитория. Само доказательство остаётся независимо проверяемым через файл .ots.
Когда вы не можете предоставить доступ к исходному репозиторию
Некоторые контракты фрилансеров предусматривают строгие NDA, которые запрещают предоставлять любому стороннему приложению доступ на чтение к исходному репозиторию. В этом случае подходит режим Enterprise ZK. GitHub Action из 12 строк запускается в вашей инфраструктуре и отправляет в API Timestamp GIT только хеш коммита. Ваш исходный код никогда не покидает вашу среду, и Timestamp GIT не нужен доступ на чтение к исходному репозиторию.
Чего избегать: распространённые ошибки при защите кода
До возникновения спора фрилансеры-разработчики часто полагаются на привычки, которые кажутся безопасными, но оказываются слабыми при проверке. Избегайте этих паттернов.
Полагаться только на временные метки писем или собственные журналы Git
История Git полезна для вашей собственной отладки. Она не является независимым доказательством существования. Даты коммитов можно манипулировать, а внутренние журналы часто рассматриваются как субъективные в юридических или клиентских спорах. Используйте Git для разработки, но не относитесь к нему как к нотариусу.
Ждать возникновения спора, чтобы начать ставить временные метки
Криптографический приоритет помогает только в том случае, если временная метка существует до спорной работы. Отметка после предъявления претензии ничего не доказывает об исходной дате создания. Единственный практический подход — ставить временные метки на каждый коммит с самого начала проекта.
Использовать ручные инструменты CLI OpenTimestamps для каждого коммита
Сам протокол работает, но делать это вручную в нескольких фрилансерских проектах трудоёмко и чревато ошибками. Вам пришлось бы самостоятельно строить пакетную обработку, хранить квитанции, управлять верификацией и не забывать запускать процесс последовательно. Это сложный путь. Timestamp GIT существует, чтобы заменить эту ручную работу автоматизированным управляемым рабочим процессом.
Предполагать, что публикация на GitHub доказывает авторство
Публикация кода на GitHub доказывает, что код доступен сейчас. Она не доказывает, когда вы его написали, и не создаёт неизменяемую временную метку. Конкурент или бывший клиент всё равно может заявить, что создал что-то первым. Один лишь хостинг GitHub не является защитой приоритета.
Игнорировать цепочку хранения файлов доказательств
Квитанция .ots полезна только в том случае, если вы можете её найти и связать с правильным коммитом. Держите квитанции в порядке. Если проект охватывает несколько репозиториев или клиентов, храните квитанции с названиями проектов и датами. Timestamp GIT хранит квитанции в ветке timestamps или теневом репозитории, что даёт вам последовательную цепочку хранения без ручной подачи.
Timestamp GIT: управляемое решение с нулевой настройкой
Timestamp GIT создан для разработчиков, которые хотят криптографическое доказательство, не становясь экспертами по временным меткам. После установки GitHub App каждый коммит в отслеживаемый репозиторий автоматически закрепляется в Bitcoin каждую ночь. Никакого CLI-инструмента, никаких ручных команд OpenTimestamps и никакой локальной настройки протокола.
Ключевые свойства управляемого рабочего процесса:
- Интеграция с GitHub App: отслеживаемые репозитории подключаются один раз, и хеши коммитов передаются автоматически.
- Архитектура с нулевым разглашением: Timestamp GIT ставит метки только на хеши коммитов. Он никогда не читает, не копирует и не хранит исходный код.
- Независимость от поставщика: доказательства используют только SHA-256 и данные блоков Bitcoin. Вы можете проверить всё офлайн, даже если Timestamp GIT исчезнет.
- Ничего не нужно устанавливать на машины разработчиков: управляемый SaaS-рабочий процесс работает без локальных агентов.
Для фрилансеров, которым нужен максимальный контроль или изолированная среда, Timestamp GIT также доступен в виде Docker-образа для самостоятельного хостинга. Базовый docker-compose.yml выглядит так:
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. Ограниченная по времени демо-лицензия доступна на странице Docker License.
Для большинства фрилансеров практической отправной точкой являются управляемые тарифы: Open Source бесплатен для публичных репозиториев, Pro Agency стоит $49/месяц для приватных репозиториев, а Enterprise ZK — $199/месяц за рабочий процесс на основе GitHub Action без доступа на чтение.
Если вы сравниваете варианты, см. Timestamp GIT vs Manual OpenTimestamps: Which Is Better?.
FAQ: Защита кода фрилансеров с помощью Timestamp GIT
Требует ли Timestamp GIT раскрытия моего исходного кода?
Нет. Timestamp GIT считывает только хеши коммитов, но никогда ваш фактический код. В стандартном режиме GitHub App требует доступ на чтение к репозиторию для обнаружения коммитов, но он не хранит и не передаёт ваш исходный код. Для максимальной конфиденциальности режим Enterprise ZK использует GitHub Action, который отправляет в API только хеш коммита, поэтому ваш код никогда не покидает вашу среду.
Как я могу доказать подлинность временной метки в юридическом споре?
Вы получаете файл квитанции .ots, который можно независимо проверить по блокчейну Bitcoin с помощью стандартных инструментов OpenTimestamps. Доказательство математически абсолютно и не зависит от серверов Timestamp GIT. Вы также можете сгенерировать PDF-сертификат и поделиться ссылкой для верификации из панели управления Timestamp GIT.
Что если я работаю с приватными репозиториями?
Timestamp GIT поддерживает приватные репозитории с тарифом Pro Agency за $49/месяц. GitHub App требует доступ на чтение к исходному репозиторию и доступ на запись к целевому репозиторию, который может быть теневым. Для фрилансеров под строгими NDA режим Enterprise ZK за $199/месяц позволяет ставить временные метки без предоставления доступа на чтение к исходному репозиторию.
Имеет ли временная метка юридическую силу?
Криптографические временные метки, закреплённые в блокчейне Bitcoin, всё чаще принимаются как доказательство приоритета и авторства. Они предоставляют защищённую от подделки, независимо проверяемую запись. Однако юридическое признание варьируется в зависимости от юрисдикции, поэтому для конкретных случаев консультируйтесь с юристом. Timestamp GIT предоставляет техническое доказательство; он не заменяет юридическую консультацию.
Заключение: ставьте временные метки до того, как вам понадобится доказательство
Ошибка Алекс была не в недостатке навыков — она ждала до возникновения спора, чтобы искать доказательства. Фрилансеры не могут полагаться на доверие, цепочки писем или редактируемые метаданные Git, когда клиент заявляет о независимой разработке.
Timestamp GIT меняет уравнение, делая криптографический приоритет автоматическим. Установите GitHub App один раз, подключите репозитории и продолжайте коммитить. Каждый хеш коммита закрепляется в Bitcoin каждую ночь, квитанции доставляются в ветку timestamps или теневой репозиторий, и вы получаете проверяемую запись, которая существует независимо от любых отношений с клиентом.
Начните с бесплатных публичных репозиториев на Timestamp GIT и выработайте привычку сейчас. Лучшее время доказать, что вы что-то написали, — это день, когда вы это написали.
Похожие статьи
- How Bitcoin Can Prove Your IP Existed First
- Automatically Timestamp Every Git Commit with a GitHub App
- Timestamp GIT vs Manual OpenTimestamps: Which Is Better?