使用 GitHub App 为每次 Git 提交自动添加时间戳
每次提交时,Git 已经生成了一个唯一哈希,用于标识仓库的确切状态。该哈希是你当时工作成果的加密安全指纹。但它本身并不能证明这些工作存在于何时。将这个哈希转化为不可篡改的、可提交法庭的证据,过去意味着一个手动流程:运行额外命令、盯着输出、存储回执文件,并且每次提交都要重复一遍。
自动化替代方案更简单:安装一次 GitHub App,选择你的仓库,之后每一次提交都会在你睡觉时被锚定到比特币区块链上。
Timestamp GIT 是一个围绕这一理念构建的托管服务。它完全自动化了 OpenTimestamps 协议,因此你永远不需要接触 CLI、构造比特币交易或手动管理证明文件。本文涵盖一次性设置、夜间自动化流水线、监控、最佳实践和常见问题。
一次性设置:安装 Timestamp GIT GitHub App
整个产品围绕单一设置流程设计。之后,提交代码就是你唯一需要做的操作。
标准模式:GitHub App
- 从 GitHub Marketplace 安装 Timestamp GIT GitHub App。
- 授予安装过程中请求的权限。在标准模式下,该 App 需要对源仓库的只读访问权限,因为 GitHub 权限不提供仅限提交哈希的范围。Timestamp GIT 永远不会读取、复制或存储你的源代码。
- 选择你要监控的仓库。公共仓库在免费的 Open Source 计划中受支持;私有仓库需要付费计划。
- 选择证明文件的存放位置。你可以将它们存储在同一仓库中专门的
timestamps分支中,也可以存储在单独的目标仓库中。使用单独的影子仓库可以保持主源代码历史记录干净。
安装完成后,GitHub App 会自动监控所选仓库。无需安装 CLI 工具,无需学习 OpenTimestamps 命令,设置后也无需执行任何手动步骤。
企业 ZK 模式:GitHub Action
对于希望获得最大隔离性的组织,Timestamp GIT 提供企业 ZK 模式。GitHub App 不再对你的源仓库拥有读取权限,而是由 GitHub Action 在你自己的基础设施上运行,仅将提交哈希推送到 Timestamp GIT API。
工作流结构如下:
name: timestamp-git-zk
on:
push:
jobs:
timestamp:
runs-on: ubuntu-latest
steps:
- name: Push commit hash to Timestamp GIT
env:
COMMIT_SHA: ${{ github.sha }}
REPO: ${{ github.repository }}
run: |
curl -fsS -X POST \
-H "Authorization: Bearer ${{ secrets.TIMESTAMP_GIT_HMAC }}" \
-H "Content-Type: application/json" \
-d "{\"repo\":\"$REPO\",\"hash\":\"$COMMIT_SHA\"}" \
"${{ vars.TIMESTAMP_GIT_API_URL }}"
确切的 API URL、仓库标识符和 HMAC 密钥在企业设置向导中提供。重要的是这个工作流不做什么:它从不发送源代码、文件或仓库内容。它只发送一个提交哈希,仅此而已。
在这种模式下,Timestamp GIT 完全不需要对你的源仓库拥有读取权限。
自动化流水线:从提交到比特币锚定
一旦 GitHub App 或 GitHub Action 就位,时间戳就变成了一个后台任务。
1. 提交检测
在标准模式下,GitHub App 会在新提交进入你监控的仓库时接收 webhook。在企业 ZK 模式下,你的 GitHub Action 直接将提交哈希推送到 API。
2. 哈希队列
检测到的提交哈希进入一个内存键值存储,等待批处理。Timestamp GIT 不会扫描你的代码、克隆你的完整仓库或检查文件内容。
3. 夜间 Cron Worker
每晚,一个 worker 会按仓库对所有待处理哈希进行分组。对于每个仓库,它创建一个清单文件,原生构建 Merkle 树,并使用公共 OTS 日历创建 OpenTimestamps 证明。
4. 比特币锚定
每日批次的 Merkle 根通过 OpenTimestamps 协议嵌入到一笔比特币交易中。一旦该交易在比特币区块中得到确认,锚定就变得不可篡改。任何实体——包括 Timestamp GIT——都无法更改或伪造它。
比特币确认通常需要大约三个小时。这意味着工作日期间做出的提交通常会在第二天早上之前完成锚定。
5. 证明交付
确认后,清单和 .ots 回执文件会被推送回你配置的证明位置:要么是专门的时间戳分支,要么是影子仓库。证明文件是小型文本和二进制文件,用于证明你的提交哈希在比特币区块被挖出之前就已存在。
你可以通过一个简单的 API 调用查询公共仓库最后锚定的区块:
curl -s https://timestampgit.dev/api/statusLast/your-org/your-repo
响应包含最后锚定的比特币区块信息。其他端点返回已盖戳提交总数、综合状态摘要以及特定日期的完整 Merkle 链数据。
监控与故障处理
自动化只有在你能看到它在正常工作时才有用。
仓库状态仪表板
每个已连接的仓库都有一个公开或经过认证的状态页面。仪表板显示:
- 证明持久性:你最早的锚定日期可以追溯到多久以前
- 每日规律性:提交是否被持续地批量处理
- 每次锚定的比特币区块和交易数据
- 用于可视化活动情况的日历热力图
状态页面让你快速回答一个问题:“昨天的提交被锚定了吗?”
审计与合规导出
Timestamp GIT 提供可下载的审计记录:
# 下载完整审计账本为 CSV
curl -o audit.csv https://timestampgit.dev/api/audit/your-org/your-repo
你还可以下载特定日期的 PDF 证书。这些导出文件可用于合规归档、法律审查或董事会级别的知识产权文档。
处理遗漏的提交
在正常操作中,错过夜间批次的提交——例如因为 webhook 投递延迟——会在下一次夜间运行时被拾取。面向批处理的设计意味着临时故障不需要你手动重新运行任何操作。
私有仓库隐私
对于私有仓库,状态端点使用加密 HMAC 进行保护。只有拥有正确 URL 签名的授权用户才能查看仓库状态。HMAC 特定于服务器实例,因此状态数据不会暴露给公众。
自动时间戳的最佳实践
GitHub App 可以自动化机制,但一些配置选择能让证据更强、更易于管理。
监控所有活跃仓库
不要只监控发布分支。现有技术争议往往取决于一个早期的实验性提交、一个进行中的分支或一个快速原型。在每个有实际代码编写的仓库上启用监控。
使用专用的影子仓库
如果你不想让证明文件弄乱主仓库,可以将 Timestamp GIT 配置为将证明推送到单独的仓库。这样可以保持源代码历史记录干净,同时让律师、审计员和合规团队有一个统一的地方来查找证明回执。
选择企业 ZK 模式以获得最大隔离性
如果你的代码高度敏感,或者你的安全策略禁止第三方对源仓库的读取访问,请使用企业 ZK 模式。GitHub Action 方式意味着你的源代码永远不会离开你的环境。Timestamp GIT 只会收到提交哈希。
定期归档审计 CSV
.ots 文件是加密证明,但审计 CSV 是人类可读的记录。按计划下载它们,并与其他合规文档一起存储。在争议中,拥有一份清晰的按时间顺序排列的账本可以节省时间。
在 README 中添加验证徽章
公共仓库可以显示一个验证徽章,链接到 Timestamp GIT 状态页面。仓库连接页面提供徽章 URL 和 Markdown 片段。一个典型的徽章如下:
[](https://timestampgit.dev/status/your-org/your-repo)
任何查看仓库的人都可以点击并验证当前的时间戳状态,无需安装任何东西。
常见问题
GitHub App 如何自动为我的提交添加时间戳?
安装后,GitHub App 会监控你选择的仓库。每晚,它会收集所有新的提交哈希,创建 Merkle 树,通过 OpenTimestamps 将根锚定到比特币区块链,并将 .ots 证明文件推送回你的仓库。无需手动步骤。
GitHub App 需要访问我的源代码吗?
在标准模式下,GitHub App 需要对源仓库的只读访问权限来读取提交哈希,因为 GitHub 权限要求该范围。但是,Timestamp GIT 永远不会读取、复制或存储你的源代码——它只处理提交哈希。在企业 ZK 模式下,GitHub Action 在你的基础设施上运行,仅将提交哈希推送到 API,因此该 App 对你的源仓库完全没有访问权限。
一个提交在比特币上完成时间戳需要多长时间?
提交每晚批量处理。批次处理完成后,比特币交易被广播。比特币区块链上的确认通常需要大约三个小时,之后证明文件会被写入你的仓库。白天做出的提交通常会在第二天早上获得时间戳证明。
我可以在不依赖 Timestamp GIT 的情况下验证时间戳吗?
可以。证明是标准的 OpenTimestamps .ots 文件。你可以下载它,并使用任何 OpenTimestamps 验证工具在本地对照比特币区块链进行验证。Timestamp GIT 还提供基于网页的验证页面和 PDF 证书以方便使用。
结论:设置后即可高枕无忧
Timestamp GIT 将加密现有技术保护从一项手动琐事变成了自动后台流程。安装一次 GitHub App,选择你的仓库,之后每一次提交都会流经同一条流水线:哈希检测、夜间批处理、Merkle 树构建、比特币锚定和证明交付。
安全模型有意设计为零知识。你的源代码永远不会被读取或存储。标准模式只处理提交哈希,而企业 ZK 模式甚至在你将哈希推送到 API 之前都将其保留在你的控制之下。
定价覆盖常见场景:Open Source 对公共仓库免费,Pro Agency 对私有仓库收费 49 美元/月,Enterprise ZK 收费 199 美元/月并支持 GitHub Actions。对于气隙隔离或自托管环境,还提供 Docker 自托管许可证。
如果你仍在为单个提交手动创建时间戳,更快的路径是安装 Timestamp GIT GitHub App 或申请 Docker 自托管许可证以获得最大控制权。