Collections

Hash collision bounties

Peter Todd's P2SH bounties from 2013. Five pay for a hash collision and one for an OP_ABS quirk. SHA-1 fell in 2017 and was spent in 2023. Four still stand.
load
getCollection("hash_collision")
puzzles
6 · 2 claimed · 4 unsolved
prize recorded
3.07465 BTC
still unsolved
0.59365 BTC
known material
0 public keys · 0 private keys

The puzzle

In September 2013 Peter Todd funded six P2SH addresses. Five pay out to anyone with a hash collision: two different preimages, same value under SHA-1, SHA-256, RIPEMD-160, HASH160 or HASH256. The sixth pays for an OP_ABS quirk, no collision needed. It's a bounty on the hash function itself. The prize sits on chain where anyone can top it up, and people did.

SHA-1 fell in 2017, when the SHAttered collision was published. The bounty was spent in 2023, and the record dates the claim to that transaction. The other four hash bounties are still funded. Nobody has a SHA-256 collision. And if you have one, there's a faster way to make money than 0.28 BTC.

What the records carry

These are the only p2sh records in the dataset, and the only ones with a redeem script:

src/collections/hash-collision/sha1.ts
export const hashCollisionPuzzleSha1 = bitcoinPuzzle({
  id: "hash_collision/sha1",
  address: p2sh(
    "37k7toV1Nv4DfmQbmZ8KuZDQCYK9x5KpzP",
    "4266fc6f2c2861d7fe229b279a79803afca7ba34",
    redeemScript("4266fc6f2c2861d7fe229b279a79803afca7ba34", "6e879169a77ca787"),
  ),
  sourceUrl: "https://bitcointalk.org/index.php?topic=293382.0",
  startedAt: "2013-09-13 04:48:29",
  status: Status.Claimed,
  prize: 2.48,
  solvedAt: "2023-02-22 23:00:49",
  transactions: [
    funding("09de…8a83", "2013-09-13 04:48:29", 0.01),
    claim("9ec2…14e0", "2023-02-22 23:00:49", 0.000096),
  ],
});

6e879169a77ca787 is OP_2DUP OP_EQUAL OP_NOT OP_VERIFY OP_SHA1 OP_SWAP OP_SHA1 OP_EQUAL. Two inputs, not equal to each other, equal after SHA-1. There's no private key to publish, so hasPrivateKey() is false on all six and verifyPuzzle answers unavailable. A public key isn't a thing here either. A P2SH address exposes a script, not a key, and the data gate exempts this collection from the rule that a claimed puzzle needs one.

Status

claimed, not solved, for SHA-1 and OP_ABS. A collision isn't a key anyone could post to the thread. peter_todd is an alias for this collection, from the days the dataset was keyed by author.

Every puzzle

One page each: the record, the transactions and the live balance.

hash_collision.all()6 puzzles

2 claimed 4 unsolved

  1. sha1 claimed
  2. sha256 unsolved
  3. ripemd160 unsolved
  4. hash160 unsolved
  5. hash256 unsolved
  6. op_abs claimed

every name is a page · the key icon marks a published private key

@agntn/puzzles·MIT license· Public data about public puzzles. Balances come from the chains' explorers through the worker, cached for five minutes. Every key here was public before it landed in a record.