代码的存在性证明:它是什么以及为什么重要
大多数开发者相信 Git 历史能显示某个功能是何时落地的。但在法律纠纷中,Git 提交日期只是元数据。任何拥有仓库访问权限的人都可以重写历史、强制推送新的日期,或者修改服务器数据库。这就是为什么代码的存在性证明已经从一种密码学上的新奇事物,变成了一种实用的合规工具。
存在性证明给你的东西比提交信息或带时间戳的截图更强:一份数学性的、公开的、防篡改的记录,证明某个特定的仓库状态在某个特定时刻确实存在。本文将解释这意味着什么、它如何在不暴露源代码的情况下工作,以及像 Timestamp GIT 这样的托管 GitHub App 如何将它变成一个零配置的工作流。
什么是代码的存在性证明?
存在性证明是一种密码学证据,证明某段特定代码在某个特定时间点确实存在。它不会存储你的代码,不能证明代码是你写的,也不能替代版权登记。它证明的是一个狭窄但有力的事实:这个精确的指纹在这个时间戳之前就已经存在。
这个指纹就是 Git 提交哈希。当你提交时,Git 会根据仓库状态生成一个单向标识符:
git rev-parse HEAD
# 1a4f28c3e8f1d95b4e2a3cfe06cb0d5b9a4d1e7c
这个哈希非常敏感。在任何被跟踪的文件中修改一个字符,或者更改提交元数据,你都会得到一个完全不同的哈希。但哈希本身不会泄露任何关于名称、路径或源代码的信息。
为了让这个哈希在时间推移中具有意义,存在性证明将它锚定到一个公开的、不可变的账本中:比特币区块链。比特币区块充当一个通用时钟。一旦锚定得到确认,除非重写比特币历史,否则实际上没有任何办法篡改时间戳。
传统的替代方案都更弱:
- 内部 Git 日志可以被编辑、删除,或者托管在你无法控制的服务器上。
- 公证证明某人签署了一份文件,但速度更慢,而且通常需要第三方信任。
- 专利昂贵且缓慢;它们还要求公开披露。
区块链锚定的指纹便宜、自动化,并且可以通过数学方法验证。即使时间戳服务消失了,证明仍然可以直接对照比特币进行核验。
一个简单的类比:密封信封
想象你给自己寄一个密封信封,里面装着对一项发明的描述。当信封到达时,邮戳证明了这份描述在那个日期就已经存在。你保持信封密封,直到发生纠纷需要打开它。
存在性证明就是这个技巧的数字版本:
- 代码的哈希就是密封信封。它隐藏了内容。
- 比特币区块链就是邮戳。它记录了指纹被提交到公开记录的那一刻。
.ots回执就是信封本身——你保留的密码学证明。
但实体信封有一个弱点:理论上有人可以伪造邮戳或者倒填信件的日期。比特币时间戳没有这个弱点。区块链是公开的、只可追加的,并且由工作量证明保护。一旦锚定被足够多的区块覆盖,倒填日期在计算上就不可行。
它在底层是如何工作的(简述)
完整流程出奇地简单:
检测到提交
↓
提取 Git 提交哈希
↓
每晚批量处理哈希
↓
构建 Merkle 树
↓
Merkle 根锚定到比特币
↓
返回 .ots 回执
第一步:指纹。 Git 在提交时已经创建了唯一的提交哈希。Timestamp GIT 只提取这个哈希,而不是它背后的内容。
第二步:锚定。 每晚,服务将待处理的提交哈希分组到一个清单中。它从这些哈希构建一棵 Merkle 树,并使用 OpenTimestamps 协议将 Merkle 根锚定到一笔比特币交易中。这样就把许多提交打包到一个链上锚定中。比特币确认通常需要大约三小时,因此证明文件会在锚定确认后出现。
第三步:证明。 结果是一个 .ots 回执文件。该回执包含从你的提交哈希到比特币区块头的密码学路径。任何人都可以在之后对照区块链在本地验证这个证明。
有一种原始的方法可以自己使用 OpenTimestamps 工具和手动比特币交互来完成这件事。它确实可行,但这意味着要维护你自己的日历、回执和验证工作流。Timestamp GIT 的存在正是为了消除这种运维负担。这个 GitHub App 会监视你的仓库,每晚批量处理哈希,并将证明文件推回到一个 timestamps 分支或影子仓库。不需要 CLI 工具,不需要手动协议步骤,也不需要 OpenTimestamps 命令。
为什么存在性证明对开发者很重要
抵御专利流氓
专利流氓经常就常见技术申请宽泛的专利。如果你在几个月前就实现了相同的想法,一个不可变的时间戳就可以使该权利要求无效。你不需要公开解释你的实现——你只需要证明代码在申请日之前就已经存在。
解决署名争议
当一位首席开发者离开,或者一位承包商声称他们先构建了某个功能时,一个锚定在比特币中的 Git 提交哈希就能解决“公说公有理,婆说婆有理”的问题。你可以证明该状态在某个特定日期存在,而不需要依赖法院可能视为自利证据的内部访问日志。
抵御“净室”指控
竞争对手可能声称他们在你发布之后独立开发了类似的功能。如果你的代码在 18 个月前就已经存在,时间戳就创造了一堵数学之墙。指控在公开记录面前不攻自破。
强化法律证据
内部日志通常被视为可被操纵的。区块链锚定的证明是防篡改的。它们依赖 SHA-256 和比特币区块数据,这些标准可以由独立专家验证。这使得它们在审计、和解谈判或诉讼中要强有力得多。
常见误解
- 它不是版权登记。 版权保护表达形式并自动产生,但存在性证明不能替代登记。它支持你关于时间的主张。
- 它不是专利。 时间戳不授予排他性权利。它提供的是针对后来竞争性权利要求的现有技术证据。
- 它不证明所有权。 它证明的是在某个时间点的存在。所有权是一个独立的法律问题,通常需要额外的记录来支持。
理解这个范围很重要。存在性证明是拼图中强有力的一块,但不是一块神奇的法律盾牌。
Timestamp GIT 如何让它变得毫不费力
Timestamp GIT 是一个托管 SaaS 加 GitHub App,自动化了整个时间戳流水线。你只需安装一次,选择你想监视的仓库,每个新提交就会在下一个每晚批次中被锚定到比特币。
关键的架构细节是对源代码的零知识处理:
- 标准模式使用 GitHub App 只从被监视的仓库读取 HEAD 提交哈希。Timestamp GIT 永远不会看到、复制或存储你的实际源代码。它只接收提交哈希。
- 企业 ZK 模式使用一个在你自己的环境中运行的简短 GitHub Action。该 Action 只将提交哈希推送到 Timestamp GIT API,因此你的源代码永远不会离开你的基础设施。
锚定之后,验证被设计为对开发者友好:
- 可嵌入徽章用于你的 README,显示公开验证状态。
- 公开状态页面显示最早的锚定日期、比特币区块和交易数据,以及日历热力图。
- PDF 证书可针对特定日期下载。
- 基于浏览器的验证在你的浏览器中本地运行,因此无需信任任何第三方服务即可检查证明。
- 公开 API 端点,如
/api/statusLast/{user}/{repo}和/api/audit/{user}/{repo},支持集成和自定义报告。
Timestamp GIT 还支持 Docker 自托管许可证,适用于隔离或高度监管的环境。快速启动看起来像这样:
services:
timestampgit:
image: rue1401/timestampgit:prod
ports:
- "8080:8080"
volumes:
- ./data:/app/data
restart: unless-stopped
valkey:
image: valkey/valkey:8
restart: unless-stopped
定价从公共仓库的免费层开始。私有仓库和企业用例则转向付费计划。目标是让获取密码学时间戳变得像启用分支保护一样平常。
如果你想了解更多关于设置流程的细节,请参阅使用 GitHub App 自动化 Git 提交时间戳。
常见问题
代码的存在性证明到底是什么?
存在性证明是一种密码学证据,证明某段特定代码在某个特定时间点确实存在。它的工作原理是对代码或 Git 提交进行哈希,并将该哈希锚定到比特币区块链中。区块链的不可变性确保时间戳无法被更改或倒填,而且任何人都可以独立验证这个证明。
存在性证明与版权或专利有何不同?
版权保护思想的表达形式并自动产生,但证明创作日期可能很困难。专利保护发明,但昂贵、缓慢,并且需要公开披露。存在性证明提供了一个防篡改的时间戳,可以同时支持版权和专利主张,但它本身并不授予排他性权利。
我可以在不透露源代码的情况下证明存在吗?
可以。存在性证明使用的是代码的密码学哈希,而不是代码本身。哈希是一种单向函数:从哈希推导出原始代码在计算上是不可行的。Timestamp GIT 的零知识架构确保只有提交哈希被发送到服务,源代码永远不会被发送。在企业 ZK 模式下,连哈希都是从你自己的环境中推送的。
比特币时间戳在法律上被认可吗?
虽然法律因司法管辖区而异,但基于区块链的时间戳由于其密码学完整性和不可变性,正越来越多地被法院接受为证据。Timestamp GIT 使用的 OpenTimestamps 协议基于广泛接受的标准,如 SHA-256 和比特币区块链。证明可以被独立验证,使其成为某个时间点存在的有力证据。
我如何开始使用 Timestamp GIT?
通过在你的仓库上安装 Timestamp GIT GitHub App 来开始。该 App 会自动检测新提交,并每晚将它们锚定到比特币。你可以通过徽章或公开仪表板监视状态,并下载验证报告。对于私有仓库,你可以选择付费计划或使用 Docker 自托管。
结论
代码的存在性证明将问题从“你信任我的 Git 历史吗?”转变为“你能对照比特币验证这个哈希吗?”这是一个强得多的立场。
它不是版权登记或专利策略的替代品。它是缺失的那一层,以数学确定性告诉世界某个仓库状态是何时存在的。对于开发者、初创公司、代理机构和合规团队来说,这一层正在成为标准实践。
如果你想实现存在性证明,而不必手动管理密码学回执,Timestamp GIT 就是托管路线。安装一次 GitHub App,连接你的仓库,让每晚的比特币锚定自动发生。你可以在 https://timestampgit.dev/ 探索这项服务。