What Is Proof of Existence for Software Code?
For developers and compliance teams, “proof of existence” is not about proving ownership or authorship. It answers one narrow question: did this exact code exist at this point in time? In a world where Git history can be rewritten, file timestamps can be changed, and internal logs are often dismissed as self-serving, proof of existence for software code means anchoring a cryptographic fingerprint of your work into an immutable public ledger.
This article explains what proof of existence means, how it works under the hood, and how Timestamp GIT turns it into a zero-setup GitHub workflow.
What Does “Proof of Existence” Mean for Code?
Proof of existence for software code is the ability to demonstrate that a specific piece of code — or, more precisely, a cryptographic hash of that code — existed at a specific point in time.
That last point matters. You do not need to publish your source code, and you do not need to upload it to a third party. Instead, you create a one-way fingerprint of the repository state and record that fingerprint somewhere public and tamper-resistant.
To understand the difference:
- Proof of existence shows that a given code state existed on a given date.
- Proof of authorship shows who created or committed that code.
- Proof of ownership is a legal conclusion based on authorship, employment agreements, assignments, or other evidence.
A blockchain-anchored timestamp does not prove you wrote the code. It proves the code existed at that moment. In many disputes, that distinction is enough — because if your implementation existed before someone else’s patent filing or claim, the timeline becomes mathematically anchored.
Here is what the fingerprint looks like in Git:
# Git creates a unique fingerprint for the exact repository state
git rev-parse HEAD
# 6f1ed002ab5595859012f3f9b6b4c2b1e1c9a2e5
That hash represents the full repository state at the time of the commit. Change one byte, and the hash changes completely. The hash itself cannot be reversed to reveal your source code.
A Simple Analogy: The Notary and the Safe
Imagine you walk into a notary public with a sealed envelope. The notary does not open it. Instead, they record the date, place a stamp on the outside, and sign a ledger entry. Years later, you can open the envelope in court and show that the contents existed on that date because the notary’s record is independent and tamper-evident.
Proof of existence for software works the same way, except the “envelope” is a cryptographic hash, and the “notary” is the Bitcoin blockchain.
- You keep the code private. The notary — in this case, the timestamping service and the public ledger — only sees the fingerprint.
- The record is independent. The Bitcoin blockchain is a public ledger that no single vendor controls. Once a transaction is confirmed in a block, altering that record is computationally impractical.
- The evidence survives the vendor. Because the proof is anchored in Bitcoin, you can verify it even if the timestamping service disappears.
This analogy helps non-technical stakeholders understand why a blockchain timestamp is different from an internal Git log. An internal log lives on infrastructure you control or rent. A Bitcoin-anchored proof is public, immutable, and independently verifiable.
How Proof of Existence Works Under the Hood
The process can be broken into three steps.
Step 1: Fingerprint
Git already does the first step for you. Every commit receives a unique hash — SHA-1 in older Git versions, with SHA-256 support in newer repositories — that covers the complete repository state at that point.
This hash is not your code. It is a fixed-size mathematical digest. You cannot reconstruct the source from it, and the same code state always produces the same hash.
Step 2: Anchor
The next step is to anchor the hash into a public ledger. Timestamp GIT collects commit hashes and groups them into daily manifest files. It builds a Merkle tree from those hashes and creates OpenTimestamps proofs. The Merkle root is then anchored into a Bitcoin transaction.
Once that transaction is confirmed in a Bitcoin block, the timestamp becomes immutable. There is no delete button, no administrative override, and no proprietary database that can be edited later.
The flow looks like this:
commit hash -> daily manifest -> Merkle tree -> Bitcoin transaction -> .ots receipt
Step 3: Proof
The output is a cryptographic receipt, typically a .ots file. That receipt lets anyone verify the timestamp against the Bitcoin blockchain using standard OpenTimestamps tooling.
This is important: the proof relies on SHA-256 and Bitcoin block data. There is no lock-in to a single vendor’s format or infrastructure. Even if the SaaS provider no longer exists, the proof remains verifiable.
Doing this manually with raw OpenTimestamps tooling is possible, but it means dealing with calendars, Merkle trees, and Bitcoin confirmation monitoring yourself. That manual complexity is exactly what Timestamp GIT removes by automating the pipeline behind a GitHub App.
Why Proof of Existence Matters for Developers and Compliance
Proof of existence matters because timing is often the central question in IP disputes.
- Patent trolls: A common defense against a broad software patent is prior art. If you can show your code existed before the filing date, the patent claim may be invalid. Proof of existence turns your private repository into a dated, verifiable prior-art record. For more detail, see How to Prove Your Code Existed Before a Patent Filing.
- Employee and client disputes: When a developer leaves, or a client questions when a milestone was completed, a timestamped commit hash is stronger than an exported chat log or an edited Git history.
- Compliance and governance: Teams that need audit trails for security reviews, due diligence, or internal governance can show a regular, verifiable record of when code states existed.
There are also common misconceptions to clear up.
- It is not copyright registration. A blockchain timestamp does not replace copyright registration, and it does not by itself prove authorship.
- It does not prove who wrote the code. It proves that a given hash existed at a given time. Authorship still needs employment records, commit metadata, or other evidence.
- It is not “just an internal log.” Git history can be rewritten, force-pushed, or lost. A Bitcoin-anchored proof is external, public, and mathematically verifiable.
How Timestamp GIT Makes Proof of Existence Effortless
Timestamp GIT is a managed SaaS and GitHub App that automates the entire proof-of-existence pipeline. You do not need to run OpenTimestamps commands, manage calendars, or interact with Bitcoin directly.
The primary workflow is:
- Install the GitHub App once.
- Select the repositories you want to monitor.
- Keep committing code as normal.
Each night, Timestamp GIT automatically groups the pending commit hashes, builds a Merkle tree, creates OpenTimestamps proofs, and anchors the Merkle root into the Bitcoin blockchain. After Bitcoin confirmation — normally around three hours — the manifest and .ots receipt files are pushed back to a dedicated timestamps branch or shadow repository.
Key characteristics:
- Zero-knowledge by design. Timestamp GIT never sees, copies, or stores your source code. It only processes commit hashes.
- No manual steps. There are no CLI tools to install on developer machines and no raw Bitcoin transactions to craft.
- Flexible deployment. Standard Mode uses the GitHub App and requires read access to the source repository and read-write access to the target repository. Enterprise ZK Mode uses a GitHub Action on your infrastructure to push only the commit hash to the Timestamp GIT API, so the service needs no read access to the source repository at all.
- Public verification. You can embed status badges in your README, inspect the public status page, download audit CSVs, or generate PDF certificates.
- Vendor independence. The
.otsreceipt can be verified offline with standard OpenTimestamps tools, even if Timestamp GIT ceases to operate.
For self-hosted or air-gapped environments, a Docker image is available:
services:
timestampgit:
image: rue1401/timestampgit:prod
ports:
- "8080:8080"
volumes:
- ./data:/app/data
restart: unless-stopped
valkey:
image: valkey/valkey:8
restart: unless-stopped
You can also query public status endpoints directly, for example:
curl https://timestampgit.dev/api/statusLast/your-org/your-repo
That endpoint returns information about the last anchored Bitcoin block for a monitored repository.
FAQ
Is proof of existence legally recognized?
Cryptographic timestamps are increasingly accepted in courts as evidence of prior art. They provide a strong, tamper-evident record that can be independently verified. However, legal recognition varies by jurisdiction, and it is advisable to consult a lawyer for specific cases.
Does proof of existence reveal my source code?
No. Proof of existence uses cryptographic hashes, which are one-way functions. The actual source code is never transmitted or stored. Only the hash is anchored to the blockchain, so your code remains private.
How much does it cost to timestamp my code?
Timestamp GIT offers a free tier for public repositories. Paid plans start at $49/month for private repositories, with an Enterprise ZK plan at $199/month. Self-hosted Docker licenses are also available.
Can I verify the timestamp without relying on Timestamp GIT?
Yes. The proofs are based on the OpenTimestamps protocol and the Bitcoin blockchain. You can download the .ots receipt and verify it using standard OpenTimestamps tools, even if Timestamp GIT ceases to exist.
Conclusion
Proof of existence for software code is one of the few developer tools that is simultaneously cheap, mathematically rigorous, and useful in both legal and compliance contexts. It does not prove authorship or ownership, but it creates a fixed point in time that is extremely difficult to dispute.
The hard way is to run the OpenTimestamps protocol manually. The practical way is to install the Timestamp GIT GitHub App, connect your repositories, and let the nightly anchoring pipeline do the rest. Start timestamping your commits at Timestamp GIT.
Related posts
- How to Prove Your Code Existed Before a Patent Filing
- Timestamp Git Commits to Defend Against Patent Trolls
- Automate Code Timestamping with a GitHub App