Collections

Satoshi-Maze

Phemex hid a Bitcoin key in a portrait of Satoshi and promised 2.1 BTC. Nobody made the March 2020 deadline. Then the designer published the key

January 2020. A crypto exchange posts a portrait of Satoshi Nakamoto, drawn as a maze of lines. "2.1 BTC are hidden in this picture, can you find the solution?" Two months, thousands of people, a GitHub repo, a Telegram group. Nobody gets it.

Then the designer explains it. A prime from e, two words, two Base58 alphabets, little endian. Honestly? Nobody was getting that one from the picture alone.

IDsatoshi-maze36 / 471 puzzle · 2020-01-16
Collection

Satoshi-Maze, Phemex 2.1 BTC puzzle

bitcoin

Satoshi drawn as a maze by an exchange. Nobody beat the deadline, so the designer published the key: a prime from e times two Base58 words read little endian.

Author
Phemex
Prize recorded
1.1 BTC
Still unsolved
none
closed 1 / 1

Census

expired
1100%
public keys
1100%
private keys
1100%

Access

LoadgetCollection("satoshi-maze")
Showsatoshi-maze in the playground

How the Phemex 2.1 BTC puzzle works

A portrait, an address and a split prize

The rules page gives you the picture and the address 1h8BNZkhsPiu6EKazP19WkGxDw3jHf9aT. The 2.1 BTC is two prizes. 1.1 BTC sits on the address. Take the key and move it. The other 1 BTC lands on your Phemex account, once you prove you hold the key.

So the record says 1.1 BTC. That's what the chain can show. The extra coin was a promise on an exchange account, not a UTXO.

Why would an exchange do this? The page says it's about key custody. It name drops its own HD cold wallet system and quotes the CEO, Jack Tao. A marketing stunt with a real key in it. Fair enough.

Max's letter and the hints

A week later came A Letter from Max. Max introduces himself as a Phemex co-founder and "the satoshi-maze puzzle designer". The letter has five hints:

  • The first 21-digit prime in consecutive digits of e is 957496696762772407663. He just gives it away.
  • The key is a big integer, not a WIF.
  • The file name doesn't matter.
  • Some words from the portrait, "without I/O", become a 27-digit number.
  • "Go back to step 4) again if you can't figure it out".

The letter also fixes the winner. Whoever moves the 1.1 BTC first wins.

"little is big", twice

On February 21 came the last hint. The Goddess Pheme repeated the words "little is big", twice within three days. Same page, a deadline. No solve by March 21 and they publish the full solution.

Little endian, read twice. Obvious after the fact, right?

The published solution

Three numbers, one product

The Puzzle Ending went up on March 21, 2020. Phemex doesn't serve it anymore, so the record cites the Wayback capture. Here's the recipe:

  1. The prime from e, 957496696762772407663.
  2. SatoshiNakamoto decoded with the Bitcoin Base58 alphabet. The bytes 672c5725fa8fc1aa52c3c4, read little endian, give 237871847045914904726285415. That's the 27-digit number.
  3. Phemex decoded with the XRP alphabet, rpshnaf39w…. The bytes 035f251581, little endian, give 554405551875.
  4. Multiply all three. The product is the private key, 0x141dc7bec50472bb381be8e18f6d6b397773d71fc5d91d41fb.

The 27-digit number starts with 23. The first hint came out on January 23. Max points that out himself. Cute.

Why "little is big"

Both Base58 numbers are bigger read little endian than big endian. That's the whole hint. Big endian gives 124728751148945267645137860 and 14481167745, and neither leads anywhere.

And the XRP alphabet? Decode Phemex with the Bitcoin one and you get 03781a18d1 instead. Same letters, other bytes. Look at the portrait again. "First 21-digit prime found in consecutive digits of e" runs along the hair. ETH, XRP, BTC and Phemex sit in the maze around the face. How the paths tie them together, the Ending doesn't say.

Check it yourself

Every step reruns. @agntn/encodings decodes both words, BigInt does the rest. puzzles verify satoshi-maze derives the compressed key and lands on the address. The key on the record is padded to 64 hex digits, nothing else changed.

What happened to the 1.1 BTC

Out 16 minutes before the ending

The address got a 10,000 sat test on January 16, 2020. It spent 7,900 of it two hours later. That spend put the public key on chain the same morning. At 06:53 UTC came the 1.1 BTC. The rules page went up at 08:24.

On March 21 at 02:31 UTC, 1.099 BTC left in one transaction. The Ending went up at 02:47. It says "with the release of this information, the prize money will no longer be available". The Ending doesn't name a txid. But nobody had won, and the money went 16 minutes before the key came out. So the record calls that spend a decrease, the author taking the prize back.

The dust, swept the same morning

In between, people sent the address 84 tiny payments. 53 of them are exactly 666 sat. Somebody also dropped 30,000 sat on January 22. With the 90,000 sat change from the withdrawal, 198,300 sat were left. At 05:17 UTC all of it went out in one transaction. The key had been public for two and a half hours. Anyone could have done it, so the record calls it a sweep.

Nothing is left on the address. status is expired, the same as the book quiz. The prize went home, then the answer came out.

What the satoshi-maze record carries

tssrc/collections/satoshi-maze.ts
export const satoshiMazePuzzle = puzzle({
  id: "satoshi-maze",
  chain: "bitcoin",
  address: "1h8BNZkhsPiu6EKazP19WkGxDw3jHf9aT",
  sourceUrl: RULES,
  startedAt: "2020-01-16 08:24:47",
  status: Status.Expired,
  pubkey: compressed("02b4a72e4aaa69ba04b80c6891df01f50d191a65eccc61e4e9862d1e421ce815b3"),
  key: hex("00000000000000141dc7bec50472bb381be8e18f6d6b397773d71fc5d91d41fb"),
  prize: 1.1,
  stages: [stage("prime", …), stage("27-digit number", …), stage("last number", …), stage("private key", …)],
  hints: [official("2.1 BTC are hidden in this picture, …", RULES, RULES_CAPTURE, …), …],
  transactions: [funding(/* the test */), pubkeyReveal(…), increase(/* 1.1 BTC */), …, decrease(…), sweep(…)],
});

Four stages, each with its answer

The stages follow the Ending, one line each. The prime, the 27-digit number, the last number, the product. Every stage carries its line from the Ending as its answer, dated March 21.

Hints from four pages

The record keeps 11 hints, all from Phemex. The rules, Max's letter, the last hint and the Ending. Each one quotes its page word for word. The old pages moved from /references/articles/ to /announcements/, so each confirmation points at the 2020 capture of the old address.

The picture

assets/satoshi-maze/puzzle.png is the portrait. Phemex still serves those bytes from its image CDN. The Wayback copy from April 2020 has the same SHA-256, so the file hasn't changed since the hunt.

The Satoshi-Maze record

IDsatoshi-maze2020-01-16
Puzzle / satoshi-maze

bitcoinp2pkh expired

Record

puzzle({
  chain: "bitcoin",
  address: "1h8BNZkhsPiu…w3jHf9aT",
  status: Status.Expired,
  key: hex("000000000000…d91d41fb"),
})
Prize
1.1 BTC
Key material
hex
Verification
verified
Solved
unknown
tx 90
Trail
Explorerblockstream.info
Sourcephemex.com/announcements/try-to-solve-our-2-btc-puzzle
Trysatoshi-maze in the playground
Address
1h8BNZkhsPiu6EKazP19WkGxDw3jHf9aT

hash160 0796a18ca3fe884626b4e9fbade3a0d94cbcdf62

Balance
asking the explorer

Key

public key · compressed
02b4a72e4aaa69ba04b80c6891df01f50d191a65eccc61e4e9862d1e421ce815b3
private key (hex)
00000000000000141dc7bec50472bb381be8e18f6d6b397773d71fc5d91d41fb

Transactions

  1. funding2020-01-160.0001 BTC5d5af5b6a5…e43e24
  2. pubkey reveal2020-01-160.000079 BTC367c0e15b2…63f703
  3. increase2020-01-161.1 BTCfe1db133f3…e2528c
  4. increase2020-01-220.0003 BTC2549310d41…f16ae5
  5. increase2020-01-270.00001157 BTC3d8cc6b107…071ab5
  6. increase2020-01-300.000006 BTC0fbb01328d…c8490e
  7. increase2020-01-300.00001 BTCade297faee…fadab3
  8. increase2020-01-300.000006 BTC93063f3f64…b3b448

Files

Fromimg.phemex.com/wp-content/uploads/2020/01/16082243/satoshipuzzle.png

Stages

  1. prime

    Find the first 21-digit prime in consecutive digits of e.

    Published answer

    The first 21-digit prime found in consecutive digits of e is: 957496696762772407663

    2020-03-21web.archive.org/web/20200529172409/https://phemex.com/references/articles/puzzle-ending

  2. pictureimg.phemex.com/wp-content/uploads/2020/01/16082243/satoshipuzzle.pngopen
  3. 27-digit number

    Turn some words from the portrait into a 27-digit number.

    Published answer

    27-digit number: 237871847045914904726285415 (first hint came out on Jan. 23, two times within three days, also refer to the first two digits:23), b58decode(‘SatoshiNakamoto’), convert the bytes to integer using little endian, which is bigger than that of big endian, charset(default):’123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz’ I do find some people try to convert ‘SatoshiNakamoto’ in telegram chat, so don’t blame me that they are not ‘some words from the portrait’

    2020-03-21web.archive.org/web/20200529172409/https://phemex.com/references/articles/puzzle-ending

  4. pictureimg.phemex.com/wp-content/uploads/2020/01/16082243/satoshipuzzle.pngopen
  5. last number

    Turn one more word into the last factor of the key.

    Published answer

    Last number:554405551875, b58decode(‘Phemex’) convert the bytes to integer using little endian,which is also bigger than that of big endian, charset(xrp):’rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz’

    2020-03-21web.archive.org/web/20200529172409/https://phemex.com/references/articles/puzzle-ending

  6. pictureimg.phemex.com/wp-content/uploads/2020/01/16082243/satoshipuzzle.pngopen
  7. private key

    Multiply the three numbers into the private key of the address.

    Published answer

    This is the final private key in decimal:126272244427365764086102017718794198001099243823071433146875 =957496696762772407663*237871847045914904726285415*554405551875, 0x141dc7bec50472bb381be8e18f6d6b397773d71fc5d91d41fb in hexadecimal

    2020-03-21web.archive.org/web/20200529172409/https://phemex.com/references/articles/puzzle-ending

  8. pictureimg.phemex.com/wp-content/uploads/2020/01/16082243/satoshipuzzle.pngopen

Hints

  1. 2020-01-16

    official2.1 BTC are hidden in this picture, can you find the solution? If you can’t, tag the smartest person you know on Twitter, and you will receive up to $100 if they solve it!

  2. 2020-01-16

    officialOnce a participant has found the correct private key in the image, they will be able to transfer 1.1 BTC to the public key address of their own wallet. A further 1 BTC will be deposited to their Phemex account once they prove they control the private key.

  3. 2020-01-23

    officialThe first 21-digit prime found in consecutive digits of e is: 957496696762772407663

  4. 2020-01-23

    officialThe private key you derive from Satoshi’s portrait is a big integer, not Wallet Import Format (WIF)

  5. 2020-01-23

    officialThe filename of the picture is irrelevant

  6. 2020-01-23

    officialThe next step involves converting some words from the portrait, without I/O, into a 27-digit number

  7. 2020-01-23

    officialGo back to step 4) again if you can’t figure it out

  8. 2020-01-23

    officialWhoever is the first to transfer out the 1.1 BTCs from this address: 1h8BNZkhsPiu6EKazP19WkGxDw3jHf9aT will be the winner.

  9. 2020-02-21

    officialAfter meeting the Phemex team, the Goddess Pheme repeated the words “little is big”, twice within three days.

  10. 2020-02-21

    officialIf the Puzzle is not solved by the 21st of March, we will reveal the complete solution, showing how to find the private key.

  11. 2020-03-21

    officialOf course, with the release of this information, the prize money will no longer be available.

local record / balance from the explorer