ProofLedger Blog

Proof of existence, explained

Articles on SHA-256 proofs, Polygon anchoring, checking a proof without ProofLedger, and where timestamps fit as evidence.

Latest

Does the poor man's copyright actually work?

6 min read

No. Mailing a song to yourself doesn't give you a copyright, and it doesn't replace registering one. The US Copyright Office says so in its own FAQ: "There is…

Read article

Does EXIF data prove when a photo was taken?

7 min read

No. EXIF data records when a device says a photo was taken, and that record is ordinary editable metadata that free tools can rewrite in seconds. It's evidence…

Read article

How does blockchain timestamping work for business records?

8 min read

Blockchain timestamping records a fingerprint of a file, its SHA-256 hash, on a public ledger. Later, anyone with the file can recompute the fingerprint and…

Read article

OpenTimestamps alternatives: what each option hands you, and what a third party has to do with it

7 min read

OpenTimestamps is a protocol you operate. A client sends your file's hash to calendar servers, the calendars aggregate hashes into a Merkle tree and anchor the…

Read article

Why Did the Metadata Disappear From My Photo?

5 min read

Your messaging app or social platform almost certainly stripped it. When you upload or send a photo through apps like WhatsApp, iMessage, Instagram, or…

Read article

How to Add Proof-of-Existence Timestamping to Your App Through an API

5 min read

Say your app needs to prove a file existed at a certain point, before anyone disputes it. The pattern is the same no matter which service you pick: hash the…

Read article

Is a Screenshot Admissible as Evidence?

4 min read

Usually, yes. A screenshot gets into evidence when someone who saw the original page or message testifies that this image accurately reflects what they saw…

Read article

C2PA vs ProofLedger: Where Content Credentials Live vs Where Proof Lives

5 min read

If you're researching provenance standards for files you'll need to vouch for later, you'll run into C2PA (Content Credentials) fast. It's backed by Adobe…

Read article

S3 Object Lock vs ProofLedger: What WORM Retention Actually Proves

5 min read

A claims team storing pre-loss photos in S3 with Object Lock enabled might assume they've solved the timing problem. They haven't. Object Lock and versioning…

Read article

Signed Git Commits vs ProofLedger: Who Signed It and When It Existed

4 min read

You sign your commits and tags. Someone asks you to show that a release existed on a given date, and you reach for git log --show-signature. The signature…

Read article

How Do You Prove a Document Existed Before a Certain Date?

5 min read

You have a file, and you need to show that this exact version existed no later than a given date. Your own file system's "created" and "modified" dates will…

Read article

RFC 3161 Timestamping Authorities vs ProofLedger: Two Ways to Prove When a File Existed

4 min read

If you need to show later that a file existed at a specific point in time, you need a record made at that time by something outside your own control. RFC 3161…

Read article

Webhook Security Patterns for Async Proof Workflows: HMAC, Idempotency, and Replay Protection

5 min read

A file gets hashed. The hash goes off to be anchored. Some time later a webhook arrives saying the anchor landed. The gap between "submitted" and "confirmed"…

webhookssecuritypython
Read article

The Merkle Proof Bug That Silently Returns the Wrong Root

3 min read

A Merkle proof check that comes back false doesn't always mean the file was tampered with. Half the time it means the hash-combination step is wrong: hex…

Read article

Verifying a Blockchain-Anchored Timestamp Without Trusting the Vendor

4 min read

You have a file, a proof bundle and a certificate from a timestamping service, and you are about to rely on them. The question worth asking first: if that…

Read article

Stacking C2PA Content Credentials with Blockchain Timestamps in Python

4 min read

A file arrives with C2PA content credentials: the device that captured it, the software that touched it, the edits, a signing time. Then it goes through an…

pythontutorialblockchain
Read article

Watch-Folder Anchoring in Node.js: chokidar, Queues, and Rate-Limit Backoff

3 min read

A file lands in an intake folder. You want a hash anchored to the blockchain the moment it arrives. Not batched overnight. Not manually triggered. Just: file…

nodejavascripttutorial
Read article

OpenTimestamps vs ProofLedger: How Each Anchors a File Hash

6 min read

You have a file and you want a record, made now, that someone else can check years from now: this exact file existed by this date and has not changed since…

Read article

How to Verify a Blockchain Timestamp: What You're Actually Trusting

5 min read

A timestamp proof is only as good as the check behind it. Anyone can say a file existed on a date. The question for a developer adding proof of existence to an…

Read article

Idempotent File Anchoring: SHA-256 Dedup Before You Call the API

4 min read

Building any intake pipeline, you'll hit the same problem eventually. Files arrive from multiple sources. Some you've already processed: re-uploads of the same…

pythontutorialblockchain
Read article

Using SHA-256 as an Idempotency Key in a File Anchoring Pipeline

4 min read

You run an ingestion job Monday. The same files get queued again Wednesday because a failed upload triggered a retry. Or two different teams independently drop…

pythontutorialblockchain
Read article

C2PA Content Credentials and the Chain-of-Custody Gap

2 min read

Content Credentials are having a moment. Samsung Galaxy S25 and Google Pixel 10 sign media natively at the camera level. Adobe, Google, Meta, Microsoft, and…

Read article

Proof of Existence: How Each Method Works and What a Third Party Has to Trust

6 min read

You have a file and you need to show it existed by a certain date. Every method for doing that comes down to two questions: what do you hold afterwards, and…

Read article

Blockchain Timestamping Tools: How the Main Options Actually Work

6 min read

You need to show, later, that a file existed by a certain date. Three families of tool do this: RFC 3161 timestamping authorities, the OpenTimestamps protocol…

Read article

Idempotent File Anchoring in Python: SHA-256 as a Deduplication Key

4 min read

You set up a file intake. Files arrive throughout the day: reports, photos, PDFs from several sources. Some are duplicates. The same photo emailed and then…

pythontutorialblockchain
Read article

Skip the Duplicate: Building an Idempotent File-Anchoring Worker in Python

5 min read

Your script anchored 46 files, crashed on the 47th, and now you have to run it again. Two workers are reading the same drop folder. A retry fired after a…

pythontutorialapi
Read article

OriginStamp vs ProofLedger: Architecture, Verification, and What You Hold

5 min read

Both are hosted services. You send a file's hash through an API, and a record of that hash ends up in a public blockchain transaction. If that were the whole…

Read article

Reliable Webhooks for Async Proof Pipelines: Signatures, Idempotency, and Replay Protection

4 min read

You're building a pipeline that anchors files to a blockchain. Files arrive, you hash them, you submit the hash for anchoring, and then you wait. Polygon…

pythontutorialsecurity
Read article

FRE 901(b)(9) Is the Default for Digital Evidence. FRE 902(13) and 902(14) Don't Require the Expert Witness.

3 min read

FRE 901(b)(9) Requires an Expert. FRE 902(13) and FRE 902(14) Don't.

Read article

Batch File Anchoring in Python: Concurrency, Rate Limits, and Resumable Progress

5 min read

You have a directory of files that need a timestamp proof: build artifacts, exports, scanned documents, a backlog that was never anchored. A for-loop that…

pythontutorialapi
Read article

Merkle Proof Validation in Python: Walking from Leaf to Root

2 min read

You get a file hash and a proof that claims it's anchored in some blockchain transaction. How do you verify that without trusting the service that created it?

pythonblockchaincryptography
Read article

File Monitor with Automatic Hashing: Python Watchdog in Production

2 min read

You set up a shared folder for evidence uploads. Files arrive throughout the day. By evening, you need SHA-256 hashes for everything that came in. Manual…

pythonmonitoringautomation
Read article

FRE 707 Implementation: How the Machine-Generated Evidence Rule Changes Authentication Practice

4 min read

The judge sustains the objection. Insufficient foundation for the sensor data. The plaintiff's attorney scrambles for a different approach to authenticate the…

Read article

Auto-Hash Files with Python's Watchdog: Building a File Monitor Pipeline

2 min read

You drop a file into a folder. Within seconds, you get its SHA-256 hash logged, stored, and ready for whatever comes next. No manual hashing, no missed files…

pythonwatchdogfilesystem
Read article

Spoliation of Evidence: The Duty to Preserve, Digital Files, and What a Blockchain Anchor Actually Fixes

4 min read

The court enters an adverse inference instruction. The plaintiff produced photographs of the property in discovery, but the ones taken before the storm are…

Read article

Walking Up a Merkle Tree: SHA-256 Proof Validation in Python

2 min read

You get a file hash and a Merkle proof that claims it's anchored in some blockchain transaction. How do you verify that claim without trusting the service that…

pythonblockchaincryptography
Read article

Notarization Proves Identity. Not Timing.

4 min read

"Get it notarized" is shorthand for making a document count. If what your application has to show is that a file existed in a given form by a given date, it…

Read article

Offline Verification of Blockchain-Anchored Files: A Forensic Workflow

2 min read

A claims adjuster uploads photos from a loss site. The blockchain anchor proves they existed before the storm hit. But how do you actually verify that proof…

pythontutorialblockchain
Read article

Verify Blockchain-Anchored Files Offline with Python

4 min read

You anchored a set of files months ago and kept their proof bundles. Now something needs to re-check them: a release job, an audit script, a colleague on a…

pythonblockchainverification
Read article

Building End-to-End File Timestamping with ProofLedger's REST API

4 min read

You need to show that a file existed by a certain time and has not changed since, from inside your own app or pipeline, without handing the file to anyone…

pythonapiblockchain
Read article

See the proof behind the claim.

Every proof can be checked against its public Polygon transaction, without ProofLedger. No account is needed to verify.