自由职业者的代码保护:时间戳解决方案
Alex 是一名自由职业全栈开发者。十八个月前,她为一个客户项目构建了一个可复用的身份验证库。合同中对知识产权条款的约定很模糊,工作通过一个私有 GitHub 仓库交付。上周,Alex 在同一个客户的新 SaaS 产品中发现了一个似曾相识的认证模块——正是她写的逻辑,只是被重新组织得看起来不一样了。
当 Alex 提出质疑时,客户声称他们是独立开发了这个功能。Alex 有本地 Git 历史记录、邮件往来和一些文件导出。但客户的律师称这些证据是自说自话、可以篡改的。没有正式的知识产权协议,也没有关于她代码何时存在的独立记录,Alex 陷入了困境。
这就是自由职业者的抄袭噩梦。技术工作已经完成,但证据却缺失了。
自由职业者的抄袭噩梦
自由职业者很少拥有公司那样的法律基础设施。大多数工作依靠信任、一份可能根本没有提及代码所有权的合同,以及一个客户可能仍然有权限访问的 Git 仓库来完成。当争议发生时,证据状况往往比预期的更糟。
常见的证据来源很快就会失效:
- 带时间戳的电子邮件可以被转发、编辑,或者被认定为与实际代码无关。
- 文件修改日期是本地元数据,可以用基本工具更改。
- Git 提交日期也是元数据。提交时可以设置为任意值,因此法院或客户没有理由将其视为不可篡改的。
- GitHub 或 GitLab 托管只能证明代码存在于某人的服务器上,但不一定是在某个特定日期,而且并非独立于仓库所有者。
对 Alex 来说,痛苦的领悟在于,“我先写的”需要的不仅仅是记忆和提交图谱。它需要一个任何人都无法改写的时间戳。
为什么自由职业者需要密码学在先技术
Git 提交哈希是对某一时刻仓库确切状态的单向密码学指纹。这是一个很好的起点:哈希与代码在数学上是绑定的。但仅凭哈希并不能证明它何时存在。要创建这种证据,哈希必须锚定到一个公开的、不可变的媒介中。
这就是比特币登场的地方。
密码学时间戳使用比特币区块链作为独立见证者。当提交哈希通过 OpenTimestamps 协议嵌入到比特币交易中时,该哈希的存在就被冻结在特定的比特币区块中。一旦确认,该区块就无法被更改、重新排序或移除,除非重写比特币历史——这是任何单一方都无法做到的。
对于自由职业者来说,这创造了一种在先技术,具有以下特点:
- 独立性:证据不依赖于你的 GitHub 账户、你的笔记本电脑,或客户是否愿意承认任何事情。
- 可验证性:任何人都可以对照比特币区块链检查
.ots回执,而无需依赖 Timestamp GIT 的服务器。 - 零知识:你可以证明某个提交哈希存在,而无需暴露其背后的源代码。
这不仅仅是关于抄袭。同样的机制还可以对抗专利流氓、承包商纠纷以及竞争对手的“净室”声明。如果你想更深入地了解底层比特币逻辑的背景,请参阅比特币如何证明你的知识产权在先存在。
本文的关注点更窄:为自由职业开发者提供一种在争议发生之前证明作者身份的实用方法。
实用指南:使用 Timestamp GIT 保护你的代码
Timestamp GIT 自动化了整个密码学时间戳工作流程。你无需运行 OpenTimestamps 命令、管理比特币交易,或记住手动盖章流程。该工作流程围绕你作为自由职业者已经在使用的工具而设计。
步骤 1:一次性安装 Timestamp GIT GitHub 应用
首先安装 Timestamp GIT GitHub 应用,并选择你要监控的仓库。这是一次性设置步骤。
在标准模式下,GitHub 应用只读取每个受监控仓库的 HEAD 提交哈希。它不会读取、复制或存储你的源代码。GitHub 的权限模型要求对源仓库具有读取权限以检测提交,同时对存储证明的目标仓库具有写入权限。目标可以是同一个仓库,也可以是一个单独的影子仓库。
有关完整的安装指南,请参阅使用 GitHub 应用自动为每个 Git 提交添加时间戳。
步骤 2:像往常一样继续提交
安装后,你的日常工作流程中没有任何额外步骤。每个新的提交哈希都会被自动检测、排队,并纳入每晚的批次处理中。
每晚,Timestamp GIT 按仓库对待处理的提交哈希进行分组,创建清单文件,构建 Merkle 树,并通过 OpenTimestamps 协议将 Merkle 根锚定到比特币区块链中。你继续写代码,证据在后台不断积累。
步骤 3:获取你的证明回执
一旦批次处理完成,Timestamp GIT 会将清单和 .ots 回执文件推送到专用的 timestamps 分支或影子仓库。由于比特币确认通常需要大约三小时,证明交付不是即时的——但不需要你做任何操作。
.ots 文件是核心证据。你还可以从 Timestamp GIT 仪表板为特定日期生成 PDF 证书。
步骤 4:公开展示验证状态
Timestamp GIT 为你的 README 提供可嵌入的验证徽章。连接仓库后,你可以使用“仓库已连接”页面上的徽章小部件生成带有正确 Shields.io 徽章 URL 的 Markdown 片段。
公开徽章对自由职业者有两个作用:它向客户展示你的项目拥有独立的时间戳记录,同时使验证立即可用。
步骤 5:在争议中使用证据
如果客户声称独立开发,你可以交出 .ots 回执和验证链接。对方不需要访问 Timestamp GIT。他们可以下载回执,并使用标准 OpenTimestamps 工具在本地对照比特币区块链进行验证。
对于私有仓库,验证状态 URL 使用加密的 HMAC 进行保护,因此只有授权用户才能查看仓库的时间戳状态。证明本身仍然可以通过 .ots 文件独立验证。
当你无法授予源仓库访问权限时
一些自由职业合同强制执行严格的保密协议,禁止授予任何第三方应用对源仓库的读取权限。在这种情况下,企业零知识模式是合适的选择。一个 12 行的 GitHub Action 在你的基础设施上运行,仅将提交哈希推送到 Timestamp GIT API。你的源代码永远不会离开你的环境,Timestamp GIT 也不需要源仓库的读取权限。
需要避免的事项:代码保护中的常见错误
在自由职业开发者遇到争议之前,他们往往依赖一些看似安全但在审查下很脆弱的习惯。避免以下这些模式。
仅依赖电子邮件时间戳或自托管 Git 日志
Git 历史记录对你自己的调试很有用。但它不是独立的存在证明。提交日期可以被操纵,内部日志在法律或客户争议中通常被视为自说自话。用 Git 进行开发,但不要把它当作公证人。
等到争议发生才开始做时间戳
密码学在先技术只有在时间戳存在于争议作品之前才有帮助。在主张提出之后才做时间戳,无法证明任何关于原始创作日期的内容。唯一实际的方法是从项目开始就对每个提交做时间戳。
对每个提交使用手动 OpenTimestamps CLI 工具
原始协议是有效的,但在多个自由职业项目中手动操作既耗时又容易出错。你需要自己构建批处理、存储回执、管理验证,并记得持续运行该流程。那是困难的方式。Timestamp GIT 的存在就是为了用自动化托管工作流取代这种手动工作。
假设 GitHub 发布就能证明作者身份
在 GitHub 上发布代码只能证明代码现在可用。它不能证明你何时编写了代码,也不会创建不可变的时间戳。竞争对手或前客户仍然可以声称他们先构建了某些东西。仅靠 GitHub 托管并不是在先技术保护。
忽视证明文件的保管链
.ots 回执只有在你能够找到它并将其与正确的提交关联起来时才有用。保持回执有序。如果一个项目跨越多个仓库或客户,请将回执与项目名称和日期一起存储。Timestamp GIT 将回执保存在 timestamps 分支或影子仓库中,为你提供一致的保管链,无需手动归档。
Timestamp GIT:零配置的托管解决方案
Timestamp GIT 是为那些希望获得密码学证明而又不想成为时间戳专家的开发者而构建的。一旦安装了 GitHub 应用,受监控仓库的每个提交都会在每晚自动锚定到比特币中。没有 CLI 工具,没有手动 OpenTimestamps 命令,也没有本地协议设置。
托管工作流的关键特性:
- GitHub 应用集成:受监控的仓库只需连接一次,提交哈希自动流转。
- 零知识架构:Timestamp GIT 只对提交哈希做时间戳。它从不读取、复制或存储源代码。
- 供应商独立性:证明仅使用 SHA-256 和比特币区块数据。即使 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 应用。Docker 许可证页面提供限时演示许可证。
对于大多数自由职业者来说,托管方案是实际的起点:开源版对公共仓库免费,专业代理版对私有仓库收费 49 美元/月,企业零知识版对基于 GitHub Action 的无读取权限工作流收费 199 美元/月。
如果你在比较选项,请参阅Timestamp GIT 与手动 OpenTimestamps:哪个更好?。
常见问题:使用 Timestamp GIT 保护自由职业代码
Timestamp GIT 是否要求我暴露源代码?
不需要。Timestamp GIT 只读取提交哈希,从不读取你的实际代码。在标准模式下,GitHub 应用需要仓库的读取权限来检测提交,但它不会存储或传输你的源代码。为了最大程度的隐私保护,企业零知识模式使用 GitHub Action 仅将提交哈希推送到 API,因此你的代码永远不会离开你的环境。
如何在法律争议中证明时间戳的真实性?
你会收到一个 .ots 回执文件,可以使用标准 OpenTimestamps 工具对照比特币区块链进行独立验证。该证明在数学上是绝对的,不依赖于 Timestamp GIT 的服务器。你还可以从 Timestamp GIT 仪表板生成 PDF 证书并分享验证链接。
如果我在私有仓库上工作怎么办?
Timestamp GIT 通过专业代理版(49 美元/月)支持私有仓库。GitHub 应用需要源仓库的读取权限和目标仓库的写入权限,目标可以是影子仓库。对于受严格保密协议约束的自由职业者,企业零知识版(199 美元/月)允许在不授予源仓库读取权限的情况下进行时间戳。
时间戳在法律上被认可吗?
锚定在比特币区块链中的密码学时间戳作为在先技术和作者身份的证据越来越被接受。它们提供了不可篡改、可独立验证的记录。然而,法律认可因司法管辖区而异,因此请就具体案件咨询法律顾问。Timestamp GIT 提供技术证明,它不能替代法律建议。
结论:在你需要证据之前就做时间戳
Alex 的错误不是缺乏技能——而是等到争议发生才去寻找证据。当客户声称独立开发时,自由职业者不能依赖信任、电子邮件往来或可编辑的 Git 元数据。
Timestamp GIT 通过使密码学在先技术自动化来改变这一局面。安装一次 GitHub 应用,连接仓库,然后继续提交。每个提交哈希每晚都会锚定到比特币中,回执会交付到 timestamps 分支或影子仓库,你获得的是一份独立于任何客户关系而存在的可验证记录。
从 Timestamp GIT 的免费公共仓库开始,现在就养成这个习惯。证明你写了某样东西的最佳时机就是你写下它的那一天。