Как известно, каждая биткойн-транзакция хранится в распределенной базе данных, известной как blockchain (блокчейн). Однако пользователи нашли способы взлома биткойн-протокола, для того чтобы хранить там информацию не только о сделках. Путешествуя по блокчейну, можно найти много странных и любопытных вещей, от картинок до программных кодов на JavaScript, Python и Basic. И если вы используете биткойн-клиент, вероятно, все эти данные прямо сейчас хранятся на вашем компьютере!
Посвящение Нельсону Манделе
Блокчейн содержит изображение Нельсона Манделы и текст в его память. Кто-то закодировал данные в виде несуществующих биткойн-адресов, благодаря чему эта информация теперь хранится в биткойн-системе.
Нельсон Мандела (1918-2013)
“Я глубокий оптимист. Не могу сказать, пришло это от природы или с воспитанием. Одна часть оптимизма помогала держать голову навстречу солнцу, а другая – двигала мной вперед. Было много темных моментов, когда моя вера в человечество подвергалась тяжелым испытаниям, но я не хотел и не мог предаваться отчаянию”.
“Я узнал, что мужество – это не отсутствие страха, а победа над ним. Храбрый человек – не тот, кто не боится, а тот, кто преодолел свой страх”.
“Трудности ломали некоторых людей, но создавали других. Не существует достаточно острого топора, способного лишить души грешника, который продолжает бороться, один, вооруженный надеждой на вознесение, пусть и в самом конце”.
“Многие вещи кажутся невыполнимыми до тех пор, пока их не сделаешь”.
“Образование – это самое мощное оружие, с помощью которого можно изменить мир”.
Ниже приведена выдержка одной из транзакций, хранящих информацию о Нельсоне Манделе. Можно увидеть, что небольшое количество биткойнов было отправлено на несуществующие адреса, такие как 15gHNr4TCKmhHDEG31L2XFNvpnEcnPSQvd. Данный адрес хранится в блокчейне в шестнадцатеричной форме: 334E656C736F6E2D4D616E64656C612E6A70673F. Если перевести шестнадцатеричные байты в Юникод, вы получите строку 3Nelson-Mandela.jpg, являющуюся названием файла с изображением Манделы. Остальные адреса, в свою очередь, содержат данные для построения этого изображения. Таким образом, блокчейн позволяет хранить текст, изображения и другую информацию в виде несуществующих биткойн-адресов.
Секретное сообщение в первом биткойн-блоке
Известный факт, что генезис-блок — первый блок данных в биткойн-сети — содержал секретное сообщение. Параметр блока под названием coinbase содержал следующую строку:
“The Times 03 / Янв / 2009 Канцлер готов оказать повторную помощь банкам”.
Нетрудно догадаться, что сообщение является отсылкой к номеру газеты The Times от 3 января 2009 года, выпущенной в разгар финансового кризиса. Вероятно, Сатоши Накамото, поместивший данную запись в самый первый блок, хотел поиронизировать на тему неплатежеспособности банковского сектора.
Логотип Bitcoin
Пользователи быстро обнаружили возможность кодировать практически любую информацию в блокчейне, используя шестнадцатеричные коды вместо биткойн-адресов. Один из первых случаев использования данного приема – размещение логотипа биткойна.
Молитва майнера
Однажды один из майнеров пула Eligius под ником luke-jr начал размещать католические молитвы на английском языке и латыни в параметре блока coinbase. Вот несколько примеров:
“Benedictus Sanguis eius pretiosissimus.
Benedictus Iesus in sanctissimo altaris Sacramento.
Ave Maria, gratia plena, Dominus tecum. Benedicta tu in mulieribus, …
…и жизнь вечная, благодаря деяниям Иисуса Христа, Господа моего и Спасителя.
О, сердце Иисуса воспылало любовью к нам, разжигая наши сердца любовью к Тебе.
Иисус, твое сердце, кроткое и смиренное, делает мое сердце подобным твоему!
Такая идея далеко не всем пришлась по душе, что привело к череде оскорблений, которыми пользователи обменивались через блокчейн:
“Бога не существует, придурок, хватит засорять блокчейн своей ерундой”.
“Ради всех чертей, оставь блокчейн в покое!”
Ответ был следующим:
“Воинствующие атеисты, ССЫЛКА, теперь вы счастливы?”
С тех пор техника шифрования использовалась многими майнерами для рекламы. Нередкими стали сообщения подобного рода:
“Привет от 50BTC.com”; “Пирсу и Полу, которые майнят на GIVE-ME-COINS.com”; “С новым годом! Ваш GHash.IO”; “Добыто с помощью ASICMiner”; “BTC Guild”; “Made in China”; “BitMinter”; “привет от poolserverj”; “ozcoin/stratum”
XSS Demo
В блокчейне можно найти даже JavaScript-код, который демонстрирует потенциальную XSS-атаку (межсайтовый скриптинг). Она заключается во внедрении в выдаваемую веб-страницу вредоносного кода (он выполняется на компьютере пользователя при открытии им этой страницы). Выходной сценарий транзакции содержал следующую строку:
“<script>window.alert(«Если бы это было взаправду, ваш кошелек был бы уже пуст .»)</script>”
И хотя этот скрипт абсолютно безвреден и вызывает лишь диалоговое окно, иные транзакции вполне могут умыкнуть пользовательские средства, хранящиеся на веб-сайте.
Посвящение Лену Сэссэмэну
Посвящение криптографу Лену Сэссэмэну было добавлено в блокчейн известным хакером Дэном Камински спустя несколько недель после смерти Лена.
---НАЧАЛО ТРИБЬЮТА--- #./BitLen ::::::::::::::::::: :::::::.::.::.:.::: :.: :.' ' ' ' ' : : :.:'' ,,xiW,"4x, '' : ,dWWWXXXXi,4WX, ' dWWWXXX7" `X, lWWWXX7 __ _ X :WWWXX7 ,xXX7' "^^X lWWWX7, _.+,, _.+., :WWW7,. `^"-" ,^-' WW",X: X, "7^^Xl. _(_x7' l ( :X: __ _ `. " XX ,xxWWWWX7 )X- "" 4X" .___. ,W X :Xi _,,_ WW X 4XiyXWWXd "" ,, 4XWWWWXX , R7X, "^447^ R, "4RXk, _, , TWk "4RXXi, X',x lTWk, "4RRR7' 4 XH :lWWWk, ^" `4 ::TTXWWi,_ Xll :.. =-=-=-=-=-=-=-=-=-= LEN "rabbi" SASSAMA 1980-2011 Лен был нашим другом. Хитрый интриган с блестящим умом и доброй душой. Муж Мередит, брат Кальвина, сын Джима и Даны Хартшорн. Соавтор, соучредитель и "Шму".Мы посвящаем эту глупую проделку Лену, который наверняка нашел бы ее очень забавной. --Дэн Камински, Трэвис Гудспид. P.S. Мои извенения биткойн-сообществу, но Лен всегда смеялся на счет зависимости биткойна от этого человека ASCII BERNANKE :'::.:::::.:::.::.: : :.: ' ' ' ' : :': :.: _.__ '.: : _,^" "^x, : ' x7' `4, XX7 4XX XX XX Xl ,xxx, ,xxx,XX ( ' _,+o, | ,o+," 4 "-^' X "^-'" 7 l, ( )) ,X :Xx,_ ,xXXXxx,_,XX 4XXiX'-___-`XXXX' 4XXi,_ _iXX7' , `4XXXXXXXXX^ _, Xx, ""^^^XX7,xX W,"4WWx,_ _,XxWWX7' Xwi, "4WW7""4WW7',W TXXWw, ^7 Xk 47 ,WH :TXXXWw,_ "), ,wWT: ::TTXXWWW lXl WWT: ---КОНЕЦ ТРИБЬЮТА---
Симулятор жизни
Небольшой симулятор, написанный на языке Basic. Смысл в том, что 5 существ бродят по экрану, поедая пищу, размножаясь и умирая. К сожалению, в коде допущено много ошибок и он не работает.
Биткойн-инструкция
В этой транзакции спрятан PDF-файл с оригинальной биткойн-инструкцией, аналогичной той, что хранится на bitcoin.org.
Рикроллинг
Рикроллинг (Rickrolling) является популярной интернет-шуткой, заключающейся в выдаче ссылки на клип Рика Эстли Never Gonna Give You Up вместо искомого видео или вообще чего угодно. Один Рикролл вы уже могли встретить выше (в молитве майнера). А вот второй, содержащий слова к песне (используется операция OP_RETURN). Третий Рикролл содержит метаданные песни и слова к ней, закодированные в Base-64:
Catagory: Poetry
Title: Never Gonna Give You Up
Performer: Rick Astley
Writer: Mike Stock, Matt Aitken, Pete Waterman
Label: RCA Records
Released: 27, July, 1987We’re no strangers to love
You know the rules and so do I
A full commitment’s what I’m thinking of
You wouldn’t get this from any other guy
I just wanna tell you how I’m feeling
Gotta make you understandNever gonna give you up,
Never gonna let you down
Never gonna run around and desert you
…
Фото
Недавно кто-то сумел построить настоящую систему хранения сообщений поверх биткойн-транзакций, которая позволяет создавать последовательность текста и изображений.
В этой системе можно найти текст из Бхагавад-Гиты, число Пи с тысячей знаков после запятой, множество JPG и PNG-изображений, стихотворения Шела Силверстайна и Руми, различные цитаты. Ниже примеры некоторых изображений, которые вы можете найти в системе.
Хранилище Wikileaks
Кто бы мог подумать, но оказывается, блокчейн содержит архив на 2,5 Мб с секретными документами Wikileaks и инструкцию для доступа к нему:
“Wikileaks Cablegate Резервное копирование
cablegate-201012041811.7z
Загрузите следующие транзакции с помощью инструмента Сатоши Накамото [имеется в виду инструмент для добавления/извлечения данных в блокчейн, впрочем, вряд ли его автором является сам Накомото]:
6c53cd987119ef797d5adccd76241247988a0a5ef783572a9972e7371c5fb0cc
Свобода слова и свобода предпринимательства! Спасибо Сатоши!” [далее следуют адреса 130 транзакций, которые мы по понятным причинам приводить не будем].
Программный ключ и незаконные простые числа
Данная транзакция содержит ссылку на новость об утечке исходного кода и секретного ключа для “прошивки” ПО от производителя American Megatrends Inc и сопровождается одним килобайтом шестнадцатеричных чисел. Вероятно, данный текст и является украденным секретным ключом.
Кроме того, эта транзакция связана с другой, отсылающей к странице Википедии о «незаконных простых числах», используемых для хранения и распространения охраняемой законом информации. В ней также зашифрованы 2 простых числа, которые, предположительно, являются незаконными.
И, наконец, самое любопытное: на основе последней транзакции была создана еще одна, содержащая архив Wikileaks, который мы рассмотрели ранее. Так что, вполне вероятно, все выше перечисленное – дело рук одного человека. Похоже, кто-то использовал блокчейн для хранения не совсем легальной информации разного рода. Возможно, это даже сам Джулиан Ассанж, который, как известно, является одним из самых давних биткойн-пользователей. Впрочем, в реальности о личности и мотивах этого человека остается лишь догадываться.
Email от Сатоши Накамото
Письмо следующего содержания, якобы написанное создателем биткойна Сатоши Накамото, можно обнаружить в блокчейне:
От: a3a61fef43309b9fb23225df7910b03afc5465b9
Пн 17 сентября 00:00:00 2001
От: Сатоши Накамото satoshin@gmx.com
Дата: Пн, 12 августа 2013 2:28:02 -0200
Тема: [ПАТЧ]
Я удалил это из f1e1fb4bdef878c8fc1564fa418d44e7541a7e83 7 сентября 2010, почти три года назад. Учтите, что я не протестировал этот патч.
—
backends/bitcoind/deserialize.py | 8 +——-
1 file changed, 1 insertion(+), 7 deletions(-)diff —git a/backends/bitcoind/deserialize.py b/backends/bitcoind/deserialize.py
index 6620583..89b9b1b 100644
— a/backends/bitcoind/deserialize.py
+++ b/backends/bitcoind/deserialize.py
@@ -280,10 +280,8 @@ opcodes = Enumeration(«Opcodes», [
«OP_WITHIN», «OP_RIPEMD160», «OP_SHA1», «OP_SHA256», «OP_HASH160»,
«OP_HASH256», «OP_CODESEPARATOR», «OP_CHECKSIG», «OP_CHECKSIGVERIFY», «OP_CHECKMULTISIG»,
«OP_CHECKMULTISIGVERIFY»,
— («OP_SINGLEBYTE_END», 0xF0),
— («OP_DOUBLEBYTE_BEGIN», 0xF000),
«OP_PUBKEY», «OP_PUBKEYHASH»,
— («OP_INVALIDOPCODE», 0xFFFF),
+ («OP_INVALIDOPCODE», 0xFF),
])
@@ -293,10 +291,6 @@ def script_GetOp(bytes):
vch = None
opcode = ord(bytes[i])
i += 1
— if opcode >= opcodes.OP_SINGLEBYTE_END and i < len(bytes):
— opcode <<= 8
— opcode |= ord(bytes[i])
— i += 1if opcode <= opcodes.OP_PUSHDATA4:
nSize = opcode
—
1.7.9.4
Вероятно, речь идет об удалении некоторых опкодов с биткойн-сервера и изменениях на сервере Electrum. Вряд ли автором этого сообщения является Сатоши. Скорее всего, кто-то просто в шутливой форме предложил багфикс для Electrum.
Текст в биткойн-адресах
Биткойн-адрес в текстовой форме представляет собой строку длиной до 34 символов, состоящую из букв латинского алфавита и цифр. Есть где развернуться для размещения сообщений в адресе своего кошелька, однако существует ряд ограничений.
Размещение сообщений в текстовом адресе заключается в переборе миллионов или миллиардов закрытых ключей (private keys) в надежде получить искомую комбинацию букв или цифр. Примером адресов, сгенерированных подобным образом, является 1ArmoryXcfq7TnCSuZa9fQjRYwJ4bkRKfv, принадлежащий Bitcoin Armory. Обратите внимание, что удалось получить только последовательность из 6 символов, остальные являются случайными. Стать владельцем адреса вроде этого может каждый желающий. Для этого можно воспользоваться программой Vanitygen или веб-сайтами вроде bitcoinvanity.
Вы, конечно же, можете создать любой ASCII-адрес по своему желанию (он должен начинаться с 1 и заканчиваться контрольной суммой из шести символов). Но поскольку закрытые ключи для таких адресов неизвестны, любые отправленные на них средства будут утеряны навсегда. Удивительно, но некоторые из таких адресов получили значительное количество биткойнов. Например, на 1BitcoinEaterAddressDontSendf59kuE было оправлено более 1,6 BTC, а на 1111111111111111111114oLvT2 – почти 3 BTC.
К слову, на этом принципе основывается киптовалюта Counterparty. При ее запуске пользователи отправили на адрес 1CounterpartyXXXXXXXXXXXXXXXUWLpVr более 2130 биткойнов, фактически уничтожив их. Взамен потерянных биткойнов разработчики Counterparty выпускали собственную валюту – XCP. Такую концепцию назвали «proof-of-burn» – доказательство уничтожения (по аналогии с Proof-of-work, используемой в биткойне). По мнению создателей, такая модель распределения валюты является более справедливой, чем майнинг.
Таинственные зашифрованные данные
В блокчейне есть множество загадочных вещей, смысл которых неясен. Так, в период с июня по сентябрь 2011 было осуществлено более тысячи крошечных транзакций (от 1 до 45 Сатоши), отсортированных в порядке убывания, на сотни случайных адресов. С виду данные в транзакциях абсолютно случайны. Однако не исключено, что некое секретное сообщение содержится в адресах и суммах транзакций. Вот некоторые из подозрительных адресов: 18qr2srETSvQq4kP7yBYRqQ4LzmjhtRmcD, 1MaZAHzEFfinRJ2dwK6YtNDfvWMBkiAxDr, 1AgwESN7RKNZtaqzbqu6kPg3RS6C2qCgHi, 1AZUPm5PC5QguquNsBg7HhWUYz5dfm2nU9, и 1J1aR7ayNp9sma8QVyyWGF87PzDU1vp5BD.
Вспомним еще раз транзакцию с архивом Wikileaks. Дело в том, что измененный адрес транзакции использовался для отправки через блокчейн трех (1,2,3) закодированных CPG-файлов по 86 килобайт каждый. Из чисел в начале этих файлов можно понять, что они зашифрованы с помощью CAST5 [алгоритм симметричного шифрования]. Однако их содержимое остается загадкой, поскольку без ключевой фразы их расшифровка не представляется возможной.
Как отправить сообщение через блокчейн?
Очень просто! Запишите свое сообщение в строку из 20 символов.
Затем преобразуйте ее в шестнадцатеричный формат, например, на языке Python это делается следующим образом:
http://righto.com/bc’.encode(‘hex’)
Теперь необходимо преобразовать шестнадцатеричное число в биткойн-адрес. Это можно сделать онлайн по ссылке:
https://blockchain.info/q/hashtoaddress/ваше шестнадцатеричное число
Отправьте небольшое количество биткойнов по этому адресу. Как только блок с транзакцией будет добыт одним из майнеров, ваше сообщение отобразится в блокчейне. Пример текстового сообщения можно увидеть здесь.
Учтите, отправленные биткойны будут потеряны навсегда! Так что посылайте очень малые суммы.
Резюме
Пользователи нашли множество способов хранения в блокчейне самых разных вещей. Рассмотренные в этой статье – лишь малая часть из них. Вы можете продолжить изучение блокчейна самостоятельно. Кто знает, какие “сокровища” вам удастся откопать!
: Ken Shirriff’s blog