Утром 1 февраля биткоин-кошелёк с адресом 1FLAMEN6 внезапно «похудел» на пять биткоинов, стоимость которых на тот момент составляла примерно $50 000. Этот кошелёк принадлежит художнице от мира криптовалют, известной в Твиттере под ником @coin_artist. Она не расстроилась — наоборот, она была в восторге.
Кошелёк 1FLAMEN6 прикреплён к головоломке, созданной @coin_artist и криптографом Робом Майерсом в 2015 году. Загадка представляет собой картину под названием TORCHED H34R7S, написанную @coin_artist.
The painting is a #puzzle, there is 4.87 #bitcoin concealed by this image. Happy #EasterEgg http://t.co/2KASaawd3u pic.twitter.com/90kuCshXj1
— YT▷ (@coin_artist) April 3, 2015
Это был последний фрагмент серии головоломок, решение которого открывало доступ к закрытому ключу кошелька 1FLAMEN6 (предыдущие давали доступ к самой картине). Таким образом, когда @coin_artist увидела, что кто-то забрал биткоины из кошелька, она поняла, что головоломка наконец-то была решена — через три года после её создания.
Художница не ожидала, что решение займёт так много времени. Вскоре после появления головоломки на популярном форуме Bitcointalk образовалось целое сообщество, посвященное её решению. Загадку даже стали называть «легендой Сатоши Накамото». Однако, по словам @coin_artist, после нескольких месяцев неудачных попыток решить её интерес к проекту начал ослабевать:
Большинство людей потеряли интерес. Я думаю, что рост цены биткоина в 2017 году вновь привлёк к ней внимание.
По словам Айзека (имя изменено, поскольку, по его словам, иметь биткоины в его стране небезопасно), 30-летнего программиста, который решил головоломку, он услышал о загадке чуть больше месяца назад. Он и его жена любят загадки и специально искали головоломки, связанные с криптовалютами.
Айзек подробно рассказал о процессе решения в чате, и его метод был подтверждён @coin_artist. Молодой человек поделился скриншотами своих разговоров с другими участниками, которые решали головоломку, и доказал, что фактически контролирует биткоины, подписав сообщение на адрес кошелька фразой, которая была зашифрована на картине и сигнализировала о том, что ключ найден:
B34u7y [красота], правда и редкость.
Как и почти всё на картине TORCHED H34R7S, фраза имеет скрытый смысл. Согласно @coin_artist, это отсылка к знаменитому стихотворению Уильяма Шекспира «Феникс и голубка». Данное произведение само по себе весьма загадочно и вызывает бесконечные обсуждения. Кроме того, горлица и Феникс занимают видное место в живописи @coin_artist и являются значимыми для неё образами. Художница объясняет:
Для меня было важно включить отсылку к Шекспиру, потому что определённые события перевернули мою жизнь вверх ногами, и я писала эту картину, находясь на самом дне. Кроме того, картина была создана во времена жёсткого «медвежьего» рынка, и я перевела половину всех своих биткоинов на тот адрес. По сути, это была молитва о том, чтобы всё стало лучше.
Как устроена головоломка
Для извлечения приватного ключа нужно было использовать два массива данных с картины: данные, скрытые в пламени, горящем по краям полотна, и данные в лентах, привязанных к ключу в нижнем правом углу.
Шесть лент, связанных вокруг ключа на картине, соответствуют шестибитному шифру, то есть нарисованный ключ буквально указывает на ключ ко всей головоломке. Существует два типа лент, короткие и длинные, каждая из которых представляет 0 и 1 соответственно. Таким образом, с их помощью зашифрована последовательность 011010. Соавтор загадки Роб Майерс говорит:
Я помню, как @coin_artist показывала мне часть обсуждений головоломки — людей больше всего интересовала шахматная доска. Они искали в ней двоичный код. Казалось, что они интересовались всем, кроме этого очевидного ключа.
Затем @coin_artist и Майерс «спрятали» в пламени закрытый ключ биткоин-кошелька — 52-символьную строку, состоящую из цифр и букв, закодированную в Base-58. Base-58 — это способ визуализации двоичного кода в виде текста, который включает числа от 1 до 9 и весь алфавит в верхнем и нижнем регистре, за исключением двусмысленно выглядящих букв типа «I» или «O», которые могут быть неверно истолкованы как a 1 или 0.
После того как каждый символ в закрытом ключе был переведён в двоичный эквивалент, @coin_artist и Майерс добавили в двоичный код другие данные, включая фразу «b34u7y, правда и редкость», чтобы сообщить решающему головоломку о том, что он справился и в его руках скрытый ключ. В целом строка состояла из 76 полных символов, отображаемых как 608 бит. Затем эту двоичную строку разделили на шестибитные куски.
Каждый из этих шестибитных кусков был подвергнут сложению по модулю 2. Эта операция принимает два входа в двоичном формате и сравнивает значения бит в строке, а затем создаёт новую строку на основе сравнения бит. Если входные биты совпадают (скажем, каждая из строк начинается с 1), тогда выход равен 0. Если входные биты не совпадают (скажем, если одна строка начиналась с 1, а другая с 0), тогда выход равен 1. Например, если есть два входа, 0110 и 0101, то на выходе будет 0011.
В случае с головоломкой входные биты состояли из шестибитного шифра, полученного из лент на ключе, соединённых с каждым из шестибитных фрагментов 608-битной строки, закодированной в пламени. После того как сложение по модулю 2 применили ко всей строке, новая строка была разделена на четырёхбитные куски, каждый из которых представлял собой один язык пламени.
Каждый бит в четырёхбитных фрагментах представлял характеристику пламени, и каждая группа характеристик могла быть представлена в виде бита в таком порядке:
- снаружи: низкий (0) или высокий (1) / красный (0) или жёлтый (1);
- внутри: узкий (0) или широкий (1) / фиолетовый (0) или зелёный (1).
Так, например, четырёхбитный кусок со значением 0110 был бы красным (0), жёлтым (1), широким (1), фиолетовым (0) языком пламени. После определения битового значения каждого языка пламени эти значения выстраиваются в одну большую строку. Пламя нужно «читать», начиная слева внутри границы картины и двигаясь по часовой стрелке. Затем внешнее пламя считывается против часовой стрелки.
После того как шаблон пламени был закодирован, всё, что осталось @coin_artist, — это визуально отобразить двоичный код в языках пламени, что представляло собой достаточно кропотливую задачу:
Я была уверена, что сделала ошибку, даже после того, как проверила пламя миллион раз.
По словам Айзека, его первый подход к решению головоломки представлял собой поиск символов из «Алисы в Стране Чудес», потому что некоторые аспекты головоломки напомнили ему известную историю Льюиса Кэрролла. Загадки, которые предшествовали картине, часто включали отсылки к «Алисе», к примеру, к погоне за белым кроликом. Сначала Айзек напечатал рисунок начал и искать символы, рассматривая картину у зеркала, и зашёл так далеко, что даже написал код, который позволил ему манипулировать зеркальными изображениями:
Это было забавно, но не помогло, поэтому я сосредоточился на пламени, которое напоминало код.
После нескольких неудачных попыток интерпретации пламени Айзек нашёл оригинальный пост @coin_artist на Bitcointalk и начал изучать возможные подсказки и решения, которые нашли другие участники. Ему попался загадочный пост от пользователя с ником Trin, который участвовал в той же Telegram-группе, посвящённой решению головоломки, что и Айзек. Они начали общаться, и Trin в итоге поделился некоторыми догадками:
Трин (сокращённо от Тринитас) сказал, что его догадки подтвердились после того, как @coin_artist выпустила в декабре головоломку в большом разрешении. В этот момент он понял, что пламя представляет собой четырёхбитную строку. Вопрос был в том, что делать с этой информацией. Тринитас догадывался о сложении по модулю 2 с использованием шестибитного шифра, но он застрял в расшифровке пламени.
Используя подсказки Тринитаса, Айзек написал небольшую программу на Java, чтобы разобраться с шестибитным шифром. По словам Тринитаса, после того, как он предложил свою подсказку Айзеку, тот решил загадку в течение 20 минут.
Вознаграждение Айзека на самом деле составляет больше, чем $50 000, поскольку биткоины в кошельке 1FLAMEN6 были приобретены ещё в 2014 году, а значит, он может претендовать на монеты всех пяти форков биткоина, которые произошли с того времени. В качестве благодарности за участие, которое привело к решению головоломки, Айзек послал Трину 0,5 биткоина. Остальные он планирует «ходлить».
Что касается @coin_artist, то она говорит, что все ещё занимается криптоартом, но отходит от головоломок. Её последний проект — сотрудничество с создателями видеоигры Neon District. Тот, кто найдёт в игре «пасхалку», получит 15 эфиров.
По материалам Motherboard