软件中的存在性证明:初学者指南
证明一款软件在某个特定时刻确实存在,究竟意味着什么?如果你曾经需要在不公开源代码的情况下证明“我先于你完成了这个”,答案就藏在一个叫做存在性证明的概念里。本指南将解释这一概念、澄清常见误解,并展示 Timestamp GIT 如何将它变成一个零配置的 GitHub 应用。
什么是软件中的存在性证明?
存在性证明是一种密码学证据,用于证明某段特定的数字数据在某个特定时间点确实存在。在软件领域,这段数据通常是一个 Git 提交哈希。其工作流程如下:
- 对数据生成单向哈希——一个密码学指纹。
- 将该指纹锚定到一个不可篡改的公共账本——比特币区块链中。
- 保存一份回执,让任何人都能独立验证这个锚定。
与内部日志、电子邮件或普通的版本控制时间戳不同,密码学证明不依赖于某个人或某台服务器的诚实。证据存在于比特币的公共区块链中,任何人都可以验证其中的数学运算。
存在性证明也是在知识产权纠纷中确立在先技术的关键工具。如果专利流氓声称你的技术侵犯了他们的专利,一个锚定在比特币上的时间戳可以证明你在数月甚至数年前就已经有了相应的实现。
一个简单的类比:你代码的公证人
想想传统的公证人。你签署一份文件,公证人在旁见证,然后用官方印章和日期盖章。之后,任何人都可以查看这个印章,知道这份文件在那个日期就已经存在。
存在性证明对数字数据做的事情完全一样:
- 指纹——你的 Git 提交哈希是你那一刻完整仓库状态的唯一指纹。
- 锚定——这个指纹被记录在比特币区块链中,就像公证人的官方登记簿。
- 证明——你会收到一个
.ots回执文件,就像一份任何人都可以验证的公证证书。
关键区别在于:没有人需要信任公证人的服务器或数据库。比特币的公共账本使记录不可篡改。
底层原理(简述)
在底层,软件的存在性证明遵循三个步骤:
- 指纹——Git 为完整的仓库状态生成一个单向哈希。这个哈希就是承诺。
- 锚定——Timestamp GIT 只提取提交哈希,每天批量处理,并构建一棵 Merkle 树。然后使用 OpenTimestamps 协议将 Merkle 根锚定到一笔比特币交易中。
- 证明——一旦比特币区块得到确认,你就会收到一个不可篡改的
.ots回执文件。任何人都可以使用标准的 OpenTimestamps 验证工具对照比特币区块链进行验证。
以下是提交哈希在本地看起来的样子:
# 你的 Git 提交哈希是整个仓库状态的单向指纹
git rev-parse HEAD
# 示例输出:7c2f0a9b3e8d4f1c6a5b9c0d1e2f3a4b5c6d7e8f
Timestamp GIT 将整个流程自动化。你只需安装一次 GitHub 应用,之后受监控仓库的每一次提交都会在每晚自动完成指纹提取和锚定。无需 CLI 工具,无需手动执行 OpenTimestamps 命令,也无需设置比特币钱包。该产品是一项托管服务,将协议隐藏在 GitHub 集成之后。
零知识是内置的:Timestamp GIT 永远不会看到、复制或存储你的源代码。它只处理提交哈希。在企业 ZK 模式下,甚至连提交哈希都是由 GitHub Action 从你自己的基础设施推送的,因此不需要对源代码仓库的读取权限。
验证是独立的。你可以下载 .ots 回执,并自行对照比特币区块链进行验证,即使 Timestamp GIT 消失了也没关系。
为什么存在性证明很重要:常见误解
误解一:“我的 Git 历史就足够了。”
Git 历史对开发很有用,但它存放在你无法完全控制的服务器上。Git 提交可以被重写,日期可以被更改,而内部日志在法律审计中常常被视为自利或可操纵的证据而不被采信。存在性证明将哈希锚定在公共区块链中,使时间线在数学上可验证。
误解二:“我需要公开代码才能证明在先技术。”
不需要。指纹是单向哈希。Timestamp GIT 永远不会看到你的源代码,证明也不会泄露它。你可以在不公开代码或提交公开文件的情况下确立在先技术。
误解三:“区块链时间戳只适用于加密货币。”
比特币对软件开发者的主要价值不是货币。它是一个不可篡改的公共账本。防止双重支付的特性同样使比特币成为对任何数字数据进行时间戳标记的理想工具。你的证明嵌入在比特币区块数据中,使其可全球验证且永久存在。
存在性证明发挥作用的现实场景:
- 通过证明你在专利申请之前就已经实现了某项技术来抵御专利流氓
- 在员工纠纷中证明某个功能是何时构思的
- 当竞争对手声称独立发明时,确立净室开发的时间线
- 在不公开的情况下保护商业秘密
如何使用 Timestamp GIT 为你的代码获取存在性证明
以下是主要工作流程:
- 在你的仓库上安装 Timestamp GIT GitHub 应用。 这是一次性设置。
- 像往常一样继续提交。 GitHub 应用通过 webhook 自动检测新提交。
- 每晚,Timestamp GIT 批量处理你的提交哈希,构建一棵 Merkle 树,并将 Merkle 根锚定到比特币区块链中。
- 证明会交付到一个专用分支或影子仓库。 你可以在 README 中展示验证徽章,以表明你的提交已被锚定。
# 安装 GitHub 应用后,你的日常工作流程不变
git add .
git commit -m "Add proof-of-existence example"
git push origin main
如果你需要最大程度的隔离,企业 ZK 模式会在你的基础设施上运行一个 GitHub Action,仅将提交哈希推送到 Timestamp GIT API。零代码访问意味着你的源代码永远不会离开你的环境。
对于隔离或受监管的环境,Timestamp GIT 还提供 Docker 自托管镜像。这让你可以在自己的基础设施内运行相同的自动化流程。
常见问题
存在性证明和作者身份证明有什么区别?
存在性证明确立的是某个特定的数字产物(如 Git 提交哈希)在某个时间点确实存在。作者身份证明则进一步将该产物与特定的人或实体关联起来。Timestamp GIT 提供的是存在性证明;作者身份可以从仓库和提交元数据中推断出来。
存在性证明可以在不信任 Timestamp GIT 的情况下验证吗?
可以。证明基于 OpenTimestamps 协议和比特币区块链。你可以下载 .ots 回执,并使用标准的 OpenTimestamps 验证工具对照比特币区块链独立验证。验证过程不需要 Timestamp GIT 的参与。
存在性证明需要公开我的源代码吗?
不需要。Timestamp GIT 只处理 Git 提交哈希,它们是单向指纹。你的源代码永远不会离开你的仓库。在企业 ZK 模式下,甚至连提交哈希都是从你的基础设施推送的,确保零代码访问。
提交后多久能获得证明?
Timestamp GIT 每天批量处理提交并将其锚定到比特币区块链中。确认通常在每日批量处理后的几个小时内完成。锚定确认后,你就会收到 .ots 回执。
Timestamp GIT 的费用是多少?
Timestamp GIT 提供面向公共仓库的 Open Source 计划、面向私有仓库的 Pro Agency 计划,以及基于 GitHub Actions 零知识模式的企业 ZK 计划。对于需要在自己基础设施上运行服务的团队,还提供 Docker 自托管许可证。
如果我想验证某个特定提交的时间戳怎么办?
Timestamp GIT 为每个受监控的仓库提供公开仪表板,包括存续时间、锚定日期、比特币区块数据,以及可下载的审计 CSV 和 PDF 证书。你还可以使用 API 端点查询状态、验证和报告。如需更深入的讲解,请参阅关于验证 Git 提交时间戳的相关文章。
结论
软件中的存在性证明并不是魔法。它是单向指纹、不可篡改的公共账本和可独立验证的回执三者的结合。传统的替代方案——Git 日志、服务器时间戳和邮件记录——在法律语境下都显得薄弱。锚定在比特币上的证明在数学上要强得多。
Timestamp GIT 将这一概念变成了一个可以安装一次就忘掉的产品。GitHub 应用监控你的仓库,在夜间批量处理提交哈希,并在从未读取你源代码的情况下返回 .ots 回执。如果你想证明你的代码是何时存在的,安装 Timestamp GIT 并连接你的仓库。