使用 GitHub App 自动为 Git 提交添加时间戳
你已经知道,证明提交存在的时间可能与代码本身同样重要。如果专利流氓、客户纠纷或前合作者质疑你的时间线,自托管的 Git 日志通常是不够的。内部日志可以被编辑,托管仓库的历史记录也不是不可篡改的现有技术证明。
困难的方式是学习底层时间戳协议,为每次提交手动运行命令、复制哈希、等待确认,并将回执存储在安全的地方。当你拥有多个仓库、多名开发者或一个繁忙的发布周时,这种方法就会崩溃。
Timestamp GIT 消除了所有这些手动负担。你只需安装一次 GitHub App,选择要保护的仓库,之后每个新提交都会在每晚的计划任务中自动写入比特币区块链的时间戳。无需运行 CLI 工具,无需手动管理回执文件,也无需学习 OpenTimestamps 命令。
如果你还不了解这背后的原因,请参阅什么是加密现有技术,为什么它对软件很重要?。
本文介绍自动化路径:一次性设置、从提交到比特币锚定之间发生了什么、如何监控你的证明,以及如何长期保持流程健康。
一次性设置:安装 GitHub App
整个设置就是一次 GitHub App 安装。无需本地代理、无需配置文件、无需维护脚本。
步骤如下:
- 从 GitHub Marketplace 安装 Timestamp GIT GitHub App。
- 选择你要监控的仓库。
- 公共仓库在免费套餐中受支持。
- 私有仓库需要 Pro 或 Enterprise 计划。
- 选择部署模式:
- 标准模式:GitHub App 从源仓库读取 HEAD 提交哈希,并将证明文件写入目标仓库或分支。
- 企业 ZK 模式:在你的环境中运行的 GitHub Action 仅将提交哈希推送到 Timestamp GIT API。Timestamp GIT 对源仓库的读取权限为零。
- 确认访问权限。
- 标准模式需要对源仓库的读取权限和对目标仓库的读写权限。这是 GitHub 权限系统的要求:不存在仅提交哈希的读取权限。
- 企业 ZK 模式仅需要对目标仓库的读写权限。源仓库无需向 Timestamp GIT 授予读取权限。
- 完成。从此刻起,新提交会被自动拾取。
安装后,你可以从 Timestamp GIT 仪表板管理受监控的仓库。无需编译、无需运行守护进程、无需配置 cron 任务。
自动化流水线:从提交到比特币锚定
GitHub App 安装完成后,整个过程会在你无需思考的情况下运行。
每次提交后发生了什么
当你向受监控的仓库推送提交时,GitHub App 通过 webhook 检测到新提交。该应用不会读取你的源文件。它只提取提交哈希——这是该时刻仓库状态的加密安全指纹。
该提交哈希被放入队列,等待下一个每晚批次。
每晚锚定运行
每晚,一个工作进程运行以下流水线:
- 收集每个受监控仓库中所有排队的提交哈希。
- 为当天创建清单文件。
- 从收集的哈希构建 Merkle 树。
- 使用 OpenTimestamps 协议将 Merkle 根锚定到比特币区块链中。
- 生成证明回执并推送回专用的时间戳分支或影子仓库。
比特币确认本身通常需要几个小时。这意味着证明文件通常在每晚运行后的几个小时内出现在你的仓库中,而不是在提交后立即出现。
证明交付
交付物是一个 .ots 回执文件和每日清单。这些文件被写入专用分支或影子仓库,与你的正常源历史记录分开。
你可以使用普通的 Git 命令检查结果:
# 每晚锚定完成后
git fetch origin
# 查找专用的时间戳分支或影子仓库
git branch -r
# 检出包含 .ots 回执的分支
git checkout <timestamps-branch>
# 列出每日证明文件
ls -1 *.ots
确切的分支名称取决于你的仓库配置。
企业 ZK 模式
对于无法向第三方授予任何源代码访问权限的团队,企业 ZK 模式改变了数据流。
GitHub App 不再读取源仓库元数据,而是在你的基础设施内部运行一个小型 GitHub Action。该 action 仅将提交哈希推送到 Timestamp GIT API。Timestamp GIT 永远不会收到代码,永远不会读取源仓库,除了哈希之外什么都看不到。
从那时起,每晚锚定流水线是相同的:哈希队列、清单、Merkle 树、OpenTimestamps 证明、比特币锚定,以及将证明交付回你的目标仓库。
监控与故障处理
自动化并不意味着盲目信任。你应该能够看到系统正在工作,并且在出现问题时应该有清晰的解决路径。
仓库状态仪表板
每个受监控的仓库都有一个状态页面,显示:
- 证明持久性,包括最早的锚定日期。
- 每日锚定规律性。
- 与每个时间戳关联的比特币区块和交易数据。
- 已锚定天数的日历热力图。
- 可下载的审计 CSV 和 PDF 证书报告。
你还可以通过公共 API 查询状态:
curl -s https://timestampgit.dev/api/statusLast/$GITHUB_USER/$GITHUB_REPO | jq .
私有仓库会在状态 URL 中附加加密的 HMAC。只有授权用户才能查看私有仓库的时间戳,且 HMAC 特定于服务器实例。
README 徽章
Timestamp GIT 为你的 README 提供可嵌入的徽章。徽章显示当前的验证状态,任何点击的人都可以从链接页面验证时间戳。这对于开源项目以及希望在不暴露私有代码的情况下公开展示工作证明的机构非常有用。
审计与合规导出
为了合规或法律审查,你可以下载:
- 完整的审计账本(CSV 格式)。
- 特定日期的 PDF 证书。
这些文件为你提供了链下记录,与仓库中的加密回执互为补充。
如果提交被遗漏了怎么办?
如果某个提交未在预期的每晚批次中处理,排队的哈希会保留在时间戳队列中,并在下一次运行中被拾取。仓库状态仪表板是检查缺口或不规律性的首选位置。如果某个仓库持续显示缺失天数,请在依赖受影响范围进行法律主张之前联系支持。
自托管 Docker 选项
对于气隙环境或需要最大运营控制的情况,Timestamp GIT 以 Docker 镜像形式提供。自托管实例使用相同的 GitHub App 工作流,但运行在你拥有的基础设施上。
一个最小的 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 访问。首次启动时,设置向导会引导你连接 GitHub App 并配置实例。提供限时演示许可证用于评估。
自动时间戳的最佳实践
自动化消除了重复性工作,但一些好习惯会让你的时间戳历史更加可靠。
频繁提交。 流水线每天锚定批次。如果你每月只提交一次,就会产生更少的证明点和更大的锚定间隔。定期提交会创建密集、连续的现有技术记录。
使用有意义的提交信息。 被加时间戳的是提交哈希,但面向人类的审计轨迹仍然很重要。在争议中,Implement cache warming for API responses 这样的信息比 fix stuff 有用得多。
将 .ots 回执与源代码分开。 将时间戳分支或影子仓库视为仅追加的证据存储。避免编辑、压缩或删除它。
定期验证样本。 至少每季度一次,打开一个代表性时间戳的公开验证页面,确认 Merkle 证明正确解析。这可以在你需要证据之前发现配置漂移。
对敏感项目使用企业 ZK 模式。 如果仓库包含商业机密、内部工具或未发布的产品逻辑,企业 ZK 模式是最强的默认选择。Timestamp GIT 只能看到提交哈希,你的代码永远不会离开你的环境。
对受监管环境考虑 Docker 自托管。 如果你需要气隙操作或对 GitHub App 连接的完全控制,请使用 Docker 镜像自托管。
常见问题
自动时间戳如何与 GitHub App 配合工作?
安装 Timestamp GIT GitHub App 并选择仓库后,该应用通过 webhook 自动检测新提交。每晚,它会批量处理所有提交哈希,创建 Merkle 树,并使用 OpenTimestamps 将根锚定到比特币区块链中。证明回执(.ots 文件)随后被推送回你仓库中的专用分支——无需手动步骤。
我的源代码是否曾暴露给 Timestamp GIT?
不会。Timestamp GIT 只处理 Git 提交哈希,而不是实际的源代码。在标准模式下,GitHub App 需要仓库的读取权限来获取提交哈希,但它从不读取文件内容。在企业 ZK 模式下,GitHub Action 在你的基础设施上运行,仅将提交哈希推送到 API,因此 Timestamp GIT 对你的代码的访问权限为零。
如果 Timestamp GIT 倒闭了怎么办?
你的时间戳永远有效。证明锚定在比特币区块链中,仅基于 SHA-256 和比特币区块数据。即使 Timestamp GIT 不复存在,你也可以使用标准的 OpenTimestamps 工具独立验证它们。.ots 回执文件存储在你的仓库中,因此你始终拥有它们。
我可以在私有仓库中使用 Timestamp GIT 吗?
可以。Pro 和 Enterprise 计划支持私有仓库。对于私有仓库,状态徽章和验证链接包含加密的 HMAC,因此只有授权用户才能查看时间戳状态。推荐使用企业 ZK 模式以获得最大隐私,因为它不需要对源仓库的读取权限。
设置后即可高枕无忧
手动时间戳之所以失败,是因为它依赖于有人记得去做。加密现有技术的价值来自于数月乃至数年的持续性,而不是一次性的英雄式努力。
Timestamp GIT 将这种持续性转化为基础设施。安装一次 GitHub App,连接你的仓库,每晚的工作进程就会处理指纹提取、批量处理、比特币锚定和证明交付。你获得不可篡改的现有技术证明,而无需持续的运营负担。
免费套餐覆盖公共仓库。Pro 以每月 49 美元的价格添加私有仓库,企业 ZK 模式以每月 199 美元的价格提供 GitHub Action 工作流。对于气隙或受监管环境,还提供 Docker 自托管许可证。
从今天开始构建你的加密现有技术组合:安装 Timestamp GIT GitHub App 并连接你的第一个仓库。