After ariving late in the evening the day before the Bitcoin 2021 conference, I was unable to sleep, so I decided to create and host a puzzle for the conference with a Bitcoin prize. I utilized my Twitter account to announce and post clues to the puzzle:
This is a walk-through of the puzzle solution. Spoilers below!!!
The first few clues to the puzzle were context clues. Context clues may seem ambigous at first, but as you collect more of them, their shared context becomes more apparent to the point that by the time you have the entire set, many of them seem obvious in hind-sight.
The first context clue hinted at something flying overhead:
The second context clue also hinted at something flying overhead:
The third context clue hinted at satellites, and more specifically, commercial satellite photos:
At this point, I thought it would be good to add a little cryptic meat to the puzzle, and posted this cipher:
A fairly simple cipher, the encoded data is a set of latitude and longitude map coordinates. To decode the number values in the cipher, you need to assign each astrological symbol to a number. Starting at the center of our Solar System, and the number 0, you get the following:
|Number||Celestial Body||Astrologial Symbol|
If you decode the cipher using this table, you get the following:
3X = 25.798109303564992, -80.20162656098681
The “3X” at the beginning is a bit of a red-herring, as you are not intended to decode the very first symbol but instead use it as the reference for Earth. X is literal and not encoded, as X marks the spot. What can I say, I’m a pirate (:
Therefore, X on Earth equals these coordinates. The coordinates point to the conference center building:
Next I went back to more context clues with the fifth clue, which hinted at the roof of the building:
With the addition of this clue, hopefully everyone was understanding that they needed to look at the roof of the conference building via satellite imagery.
At this point many people were getting hung up on whether or not the “3X” part of the coordinates quote meant anything significant, so I clarified a bit with the sixth clue:
When players began reaching this point of the puzzle, many were getting stuck on what to do with the coordinates, but a few figured out from the earlier context clues to look at the coordinates via satellite imagery. In Google Satellite view:
Here you can clearly see that there are words on the roof: “I AM FROM A PLACE WHERE IT DOES NOT SNOW”. They’re a bit faded today, but these words were put there as part of an art project called “Poems to the Sky”, this one in particular entitled “Oh, Miami“.
The prhase (sans quotes) “I AM FROM A PLACE WHERE IT DOES NOT SNOW” is the seed phrase for the prize address’s private key. To derive the key, the seed phrase was hashed using SHA-256:
[druid@ectoplasm:0]$ echo "I AM FROM A PLACE WHERE IT DOES NOT SNOW" | sha256sum - f6c7aa704a22a02e1d06f3ed0e6a9a42fd354d307aae7124a9b364ed369320ab -
This method for creating the hash unintentionally introduced a gotcha that most people unfortunatley got stuck on. Piping the seed phrase string to the command-line sha256sum utility adds a newline (“\n”) character to the end of the string, which I was unaware of. If you put the string in a file, it ALSO adds a newline character at the end of the file, so both of my methods to test my hash of the string resulted in an unexpected newline character. Because of this, I intend to give the first few people who messaged me about the seed phrase hashing to a key that didn’t have any value a concelation prize. I will contact each of you via Twitter DM to send you your concelation prize.
Next I wrote a little tool to convert the 256-bit hash into WIF format to be able to easily import it into a wallet and let the wallet derive the key’s public address for me:
[druid@ectoplasm:0][~/dev/bitcoin-tools]$ WIF/hex-to-wif.rb f6c7aa704a22a02e1d06f3ed0e6a9a42fd354d307aae7124a9b364ed369320ab Hex Format Key: f6c7aa704a22a02e1d06f3ed0e6a9a42fd354d307aae7124a9b364ed369320ab Extended Key: 80f6c7aa704a22a02e1d06f3ed0e6a9a42fd354d307aae7124a9b364ed369320ab Extended Hash: ffece267c05b8b131014a9d198a60ba8b65ac4ca5b4b5bd5c8f62b14001ea094 Checksum: b0adcc5c Prepped Key: 80f6c7aa704a22a02e1d06f3ed0e6a9a42fd354d307aae7124a9b364ed369320abb0adcc5c WIF Key: 5KgyF6zLSjKwKMf4iXZYiS7B6GgsCqBMzcFamwCFPMZh9TCv95V
Importing they WIF Key into a wallet, it gave me the public prize address “1937Qdj1KeR9pjBfSoXs84pcApcKYdFoeq” which I then used to fund the prize address, first with 0.1 BTC and then an additional 0.05 BTC later for a grand prize total of 0.15 BTC.
I hope you all enjoyed the puzzle, and apologies for the gotcha with the extra newline character there at the end. Most of you attempting the puzzle were either writing your own code to do the hash using a crypto library or were using online web-based tools rather than command-line tools, so most of you were getting a different hash than I did with the extra newline character introduced by doing it via the command-line. I had fun making the puzzle and I hope you had fun chasing down the prize. Perhaps next year I’ll put more thought into a more complicated puzzle (and more testing!) prior to the conference and have it ready to go rather than come up with it the night before (: