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 and its 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 so 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:
“As I write, highly civilized human beings are flying overhead, trying to kill me.”George Orwell
The second context clue also hinted at something flying overhead:
“I was only in second grade when the Russian Cosmonaut Yuri Gagarin became the first man in space. The night of his launch – April 12, 1961 – I went out onto the front porch and stared up at the stars, trying to see his capsule passing overhead. Like millions of others, I was enthralled by the idea of space exploration and have been ever since.”Paul Allen
The third context clue hinted at satellites, and more specifically, commercial satellite photos:
“There are certainly some secrets the government needs to protect, but many of the most important clues about revolutions, nuclear transfers, and new military sites can be found online, in open chat rooms and commercial satellite photos.”David E. Sanger
At this point, I thought it would be good to add a little cryptic meat to the puzzle, and posted this cipher:
♁X = ♀♃.⛢♇♆☿☉♇♁☉♁♃♄♂♇♇♀ -♆☉.♀☉☿♄♀♄♃♄☉♇♆♄♆☿
A fairly simple cipher, the encoded plaintext 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||Astrological Sign|
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 (or, “the spot”) 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:
The sky’s the limit if you have a roof over your head.”Sol Hurok
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:
“Scientists use satellites to track weather, map ice sheet melting, detect diseases, show ecosystem change… the list goes on and on. I think nearly every scientific field benefits or could benefit from satellite imagery analysis.”Sarah Parcak
Then a bit later, the seventh clue:
“A picture is worth a thousand words. A satellite image is worth a million dollars.”Sarah Parcak
(Adjusted for inflation)
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 poem in particular is 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, as 256 bits is the bit length of a Bitcoin private key:
[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 in Linux adds a newline (“\n”) character to the end of the string by default, which was behavior that I had forgotten about. 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 a consolation prize who messaged me about the seed phrase hashing to a key that didn’t have any value. 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 this public prize address:
I then funded 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. The first Player to find the solution was entitled to sweep the prize address to their own wallet. Winner takes all this time!
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 (: