如何证明代码在特定时间已存在(且不泄露代码内容)
如果你需要证明某段特定代码在某个日期之前就已存在——无论是为了专利纠纷、员工争议,还是应对竞争对手“独立开发”的说法——标准的 Git 历史记录是不够的。内部日志存放在你并不拥有的服务器上,可以被编辑,而且在法律审计中常常被视为自利证据而不被采信。本文将带你完成一个具体任务:在不泄露代码本身的前提下,证明代码在特定时间已存在。
你将通过使用托管式 Timestamp GIT GitHub 应用,将 Git 提交哈希(而非源代码)锚定到比特币区块链上来实现这一目标。完成后,你将获得一份不可篡改、可直接提交法庭的证明,任何人都能独立验证,无需手动进行密码学操作,源代码也永远不会离开你的仓库。
如果你对底层概念还不熟悉,请参阅什么是代码作者身份的密码学证明?。
前置条件
- 一个 GitHub 账户和一个你想要打时间戳的仓库。公开仓库可使用免费的 Open Source 计划。私有仓库需要付费的 Pro Agency 或 Enterprise ZK 计划。
- 能够访问 Timestamp GIT GitHub 应用,并拥有一个 Timestamp GIT 账户。你需要从产品页面 Timestamp GIT 安装一次该应用。
- 基本熟悉 Git 提交和仓库结构。无需高级密码学知识。
- 对于私有仓库,请确保你的账户拥有包含私有仓库权限的付费计划层级。
分步指南:设置自动时间戳
第 1 步:安装 Timestamp GIT GitHub 应用
前往 Timestamp GIT 仪表板,开始安装 GitHub 应用。选择你的个人账户或组织,然后授予所请求的权限:
- 对源仓库的读取权限。GitHub 的权限系统要求至少具备只读权限,因为没有该权限就无法获取提交哈希。
- 对目标仓库的读写权限,证明文件将写入该仓库。
重要保证:Timestamp GIT 绝不会读取、复制或存储你的源代码。它只提取提交哈希。
第 2 步:连接你的仓库
安装应用后,打开 Timestamp GIT 仪表板,选择你要监控的仓库。选择证明文件的交付位置:
- 同一仓库中一个专用的
timestamps分支,或者 - 一个独立的影子仓库。
该目标位置就是稍后清单文件和 .ots 回执文件将被推送到的位置。
第 3 步:配置时间戳偏好设置
默认行为是每晚自动批量处理。待处理的提交哈希每天分组,构建 Merkle 树,创建 OpenTimestamps 证明,并将 Merkle 根锚定到比特币。在大多数情况下,你无需更改任何设置。
如果你使用的是 Enterprise ZK 模式,你将在自己的基础设施上运行一个简短的 GitHub Action,而不是授予对源仓库的读取权限。该 Action 只将提交哈希推送到 Timestamp GIT API,因此你的源代码永远不会离开你的环境。
第 4 步:创建新的提交
像往常一样向你的仓库提交代码。GitHub 应用会通过 webhook 自动检测到新的提交。
git add .
git commit -m "Add new feature logic"
git push origin main
无需额外的打时间戳命令。提交哈希会自动进入 Timestamp GIT 的队列。
第 5 步:等待每晚的定时任务
每晚,Timestamp GIT 会处理待处理的哈希:
- 将当天所有待处理的提交哈希分组。
- 为每个仓库创建清单文本文件。
- 原生构建 Merkle 树。
- 使用公共 OTS 日历创建 OpenTimestamps 证明。
- 将 Merkle 根锚定到比特币区块链。
比特币确认通常需要每晚批量处理后再等几个小时。
第 6 步:接收你的证明
一旦比特币交易得到确认,Timestamp GIT 会将证明文件推送到指定分支。你会看到:
- 一个列出提交哈希的清单文件。
- 每日批次的
.ots回执文件。
这些证明文件与供应商无关。即使 Timestamp GIT 服务消失,你之后仍然可以验证它们。
第 7 步:在 README 中添加验证徽章
从仓库状态页面复制提供的 Shields.io 徽章 Markdown,粘贴到你的 README.md 中。对于公开仓库,徽章链接到一个公开验证页面。对于私有仓库,徽章 URL 包含加密的 HMAC,因此只有授权用户才能查看状态。
仪表板会提供确切的 Markdown 代码片段,大致如下:
[](https://timestampgit.dev/status/your-user/your-repo)
将 your-user 和 your-repo 替换为仪表板中显示的实际值。
如何确认它已生效(验证)
查看仓库状态仪表板
打开你仓库的公开状态页面。它显示:
- 证明的持久性和最早的锚定日期。
- 每日锚定规律性和日历热力图。
- 比特币区块高度和交易数据。
- 可下载的审计 CSV 和特定日期的 PDF 证书。
在浏览器中运行验证
使用特定仓库和日期的验证页面。它会逐步演示 Merkle 链验证过程,所有计算都在你的浏览器本地完成。没有人能看到你验证了什么。
下载 PDF 证书
如需可直接提交法庭的文件,请下载你所需日期的 PDF 证书。这样你就能获得一份干净、可分享的证明,而不会暴露任何代码。
通过 API 程序化查询
你可以使用 curl 查询公开状态端点:
curl https://timestampgit.dev/api/statusLast/your-user/your-repo
curl https://timestampgit.dev/api/statusCount/your-user/your-repo
curl https://timestampgit.dev/api/statusSummary/your-user/your-repo
最后一个端点返回适用于 Shields.io 徽章的综合摘要。
高级用户的独立验证
由于证明仅依赖 SHA-256 和比特币区块数据,你可以下载 .ots 回执,并使用标准 OpenTimestamps 验证工具对照比特币区块链进行验证。这不需要信任 Timestamp GIT 或任何供应商。托管应用只是自动化了原本需要手动协议操作的过程。
常见问题排查
提交后没有出现时间戳
检查 GitHub 应用是否已安装在账户或组织上,以及仓库是否已在 Timestamp GIT 仪表板中连接。只有设置完成后的提交才会被打上时间戳。
24 小时后仍未收到证明
比特币确认可能需要每晚批量处理后再等几个小时。检查仓库状态仪表板是否有待处理状态。如果你使用的是私有仓库,请确认你的计划包含私有仓库。
徽章显示“未验证”或链接失效
从仪表板验证徽章 URL,并确保仓库是公开的,或者私有仓库已包含加密的 HMAC。链接失效通常意味着仓库名或用户名输入有误。
你需要为不在 GitHub 上托管的代码证明存在性
使用 Enterprise ZK 模式。一个 GitHub Action 在你的基础设施上运行,只将提交哈希推送到 API。这适用于任何 Git 仓库,且 Timestamp GIT 无需对源仓库的读取权限。
你想在隔离环境中自托管
Timestamp GIT 以 Docker 镜像形式提供,并附带自托管许可证。你可以使用提供的 Docker Compose 配置在自己的基础设施上运行相同的托管工作流:
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 访问。评估可用的限时演示许可证。
常见问题解答
为我的代码打时间戳会向任何人泄露其内容吗?
不会。Timestamp GIT 只提取 Git 提交哈希——一种密码学指纹——并将该哈希锚定到比特币区块链。你的实际源代码永远不会被该服务读取、复制或存储。
获得时间戳证明需要多长时间?
该过程是自动的。你提交后,哈希会进入队列,并在下一个每晚批次中锚定。比特币确认通常需要几个小时,之后证明文件会被推送到你的仓库。
我可以在不依赖 Timestamp GIT 的情况下验证时间戳吗?
可以。证明基于 OpenTimestamps 协议和比特币区块链数据。你可以下载 .ots 回执,并使用标准 OpenTimestamps 工具独立验证,即使 Timestamp GIT 消失也能验证。
如果我需要为不在 GitHub 上托管的代码证明存在性怎么办?
Timestamp GIT 提供 Enterprise ZK 模式,一个 GitHub Action 在你的基础设施上运行,只将提交哈希推送到 API。这适用于任何 Git 仓库,你的代码永远不会离开你的环境。
结论
你现在知道如何在不泄露代码的情况下证明代码在特定时间已存在:安装一次 Timestamp GIT GitHub 应用,连接一个仓库,让服务自动将每个提交哈希锚定到比特币。你的源代码永远不会离开你的仓库——只有密码学指纹被打上时间戳。
这些证明独立于任何单一供应商,依赖比特币数学,可以在浏览器中、通过 API 或使用标准 OpenTimestamps 工具进行验证。对于公开仓库,免费的 Open Source 计划是一个实用的起点。对于私有仓库或隔离环境,Pro Agency、Enterprise ZK 和 Docker 自托管许可证选项可以覆盖其余需求。
如果你想了解底层概念,或将托管方法与原始协议进行比较,请参阅以下文章。