FAQ
What Hashdate is and what it's for
What's this for?

It's for proving that some digital content is older than a certain date.

Why?

Because generative AI is now good enough to create plausible fakes, and it's only going to get better.

Hashdate gives us a (very limited) defence. If we hash enough important stuff now, then later on we'll be able to demonstrate that it dates back to before AI was good enough to fake it.

Isn't it already too late for that?

Better late than never :/

Let's put it this way: For now, generating an impeccable fake image of a particular scene is still a skilled act, and generating an impeccable fake video of a particular scene is usually impossible without the work of a world-class special effects studio. This may not remain the case for long.

How to use it
What do I do?

  1. Use the Add tab to register your files
  2. Archive your files somewhere safe.
    • In order to be able to prove anything, you'll need to hang onto the exact file which you registered, so I'd recommend keeping it in a zip file to avoid accidental changes.
  3. Now, if someone challenges the authenticity of your data, you can send the file to them — and to neutral observers.
  4. They can hash it themselves and see when the hash was registered.
So I've added a hash to Hashdate. Now what?

Archive your file! Without it, the hash is useless.

Otherwise, for now, nothing. If you check your hash in the Verify tab, you'll see this message: "Hash found, not yet bundled to chain."

That means your hash is sitting in a queue, waiting for us to generate the proof. (It's a little expensive, so we can't afford to do it instantly.)

Within a week, though, the message will change to "Hash found — provably existed at...". You'll then be able to follow a link which will show you how to prove your file's age.

Do you have an example?

Certainly. Here's a funny picture I took of a seagull:

Squinty gull

If you download that image and drop it into the Verify tab, it'll generate this link. Follow the instructions there to prove that the photo dates from 2024-04-26 or earlier.

How can that prove anything?

See Technical Details below.

I'm not a lawyer, but I guess probably? At least with a good enough expert witness, who knows.

I've deleted/altered my file, what can I do?

Nothing :(

Unless you can rediscover/recreate the exact original file, your proof is lost.

Does the file name matter?

No. Two files with different names but identical contents will hash to the same value. Changing a file's name makes no difference.

If for some reason you need to prove the existence of a particular file with a particular name, store your file in a zip file then hash & archive the zip file.

If I add a hash and then verify it, the site just says "Hash found, not yet bundled to chain". What gives?

Writing to Ethereum is expensive, so we don't do it immediately when someone adds a hash.

Instead we bundle up a bunch of hashes, currently around a week's worth, and add them together. If you verify again in a week or so, your proof should be available.

But I've just photographed a historic event, and I want to prove my photo is from right now! How do I do that?

You can't yet, sorry. Hopefully we'll add support for this later, either with a cheaper blockchain, or else a way for people to fund an extra Ethereum transaction.

Technical details
How does this work?

It's just hashing and blockchain logging. All newly-submitted hashes get stored in a conventional database. Then, every week or so:

  1. We make a text file (a "bundle") containing the new hashes
  2. We hash the bundle file
  3. We log the bundle hash in an Ethereum block
  4. We store the Ethereum transaction hash alongside the hashes in the database
How does that prove anything?

With the power of cryptographic hashes.

Thanks to the avalanche effect, it's totally infeasible to invent a file whose SHA3-256 hash is a particular target value. This means that, if you have such a hash and also a file which matches it, it's safe to conclude that the file existed first.

(See this video for a proper introduction to cryptographic hashing. If anyone knows a good prose introduction, please let me know.)

Hashdate relies on this trick three times: first with a data file hash, second with a bundle hash, and third by relying on the integrity of the Ethereum blockchain itself.

To put it another way:

  1. The presence of some arbitrary hash value in an Ethereum block proves that that hash was first generated before that block was minted
  2. So, the existence of a bundle file which hashes to that value proves that the bundle pre-dates that block
  3. So, the presence of some arbitrary hash value in that bundle file proves that that hash was first generated before that block was minted
  4. So, the existence of a data file which hashes to that value proves that that file pre-dates that block
  5. Finally: Ethereum blocks are immutably timestamped. So, the data file is provably older than that timestamp.

What hashing algorithm does this use?

SHA3-256. We use it on the server to hash the bundle files, and we use it in the browser to hash files.

We use SHA3-256 because it's the standardised version of the algorithm used by Ethereum. (Ethereum uses Keccak-256, the original version of SHA3-256 — they're cryptographically identical.)

N.B. If you supply hashes directly, then Hashdate doesn't know or care what algorithm produced them. All that matters is that the output is 256 bits.

How do I calculate a SHA3-256 hash myself?

On macOS, and on most Linuxes, you can just run:

openssl dgst -sha3-256 {YOUR-FILE}

On Windows, there's nothing pre-installed, but you can download OpenSSL here.

Will this be around indefinitely?

I hope so! At least, it's hard to see a non-apocalyptic scenario in which the problem goes away.

In principle you won't need this website to stick around — it's just a convenient frontend. There are only two things that really need to survive:

  • The bundle files (in any form, anywhere)
  • The Ethereum blockchain

For practical usage, there are more points of failure. We also need:

  • An index to the bundle files
  • Widely trusted Ethereum indexers such as Etherscan
  • ...which still provide access to very old blocks

I think it's a decent bet that these things will all stick around for a while.

Why a blockchain?

It's the best way we have to publish data immutably, and with a credible timestamp.

Why not just post the hashes on social media?
  1. Social networks can go out of business
  2. Social networks can (fairly arbitrarily) hide content
  3. Data on social network is vulnerable to tampering, by maintainers or hackers. It's obviously a pretty weird notion, that the owners of a social network might insert back-dated hashes to prove some kind of case, but just the possibility of the accusation has an impact. Plus a lot of weird stuff's been happening on well-established social networks recently, so who knows.
Why Ethereum?

Because I didn't want to use Bitcoin, and it's the next-best established blockchain.

That means it's likely to be around for some time to come, and, more subtly, it's likely to be well-indexed and easy to reference for some time to come.

Why not Bitcoin?

Bitcoin relies on proof-of-work, so it's fundamentally wasteful. Ethereum uses proof-of-stake, so it gives us almost the same guarantee of longevity at a minuscule fraction of the energy cost. Plus, expensive.

Why bother with the bundle files? Why not write all the hashes into a blockchain directly?

Hashdate is built to scale: it could conceivably store the hash of every video clip on the internet. Uploading even a few hundred thousand hashes directly to Ethereum would be prohibitively expensive for me.

Think of this as the world's simplest layer 2 blockchain if you like.

Why not IPFS or some equivalent for the bundle files?

Haven't looked into it yet.

Why not torrents?

As above.

Is there a public API?

Yup, here.

About the project
Who funds this?

For now, me, out of pocket. It's pretty cheap. If it really takes off and the costs become too much for a hobby project, I'll look at charity status and some kind of institutional sponsorship.

Who are you?

A random computer guy with no important skills or connections.

Happily you don't need to trust me for the proofs to work, but you do need to trust that I'll keep the bundles around. Hopefully this will catch on and I can hand it over to an institution. If you're the Internet Archive, do get in touch.

How can I contact you?

hullo@hashdate.org, or via Discord.