Комментарии 46
Осталось только намайнить первую биткоин книгу :)
Эта задача как раз намного проще) в большом прозаическом тексте много степеней свободы, с которыми можно аккуратно поиграть, почти не испортив текст. Думаю, что я могу взять любой классический русский роман и сделать его биткоин-версию настолько тщательно, что даже литературовед не заметит разницу без diff-а.
Ха-ха, ну да, можно просто взять бумагу и ручку и начать "майнить" исследование книги, правда шансы на успех майнинга чрезвычайно малы. Намного проще и эффективнее просто купить книгу за обзоры, если у вас конечно есть достаточное количество монет в кошельке :)
можно проверить 100 000 миллиардов стихотворений, вдруг найдется биткойн старше вашего по количеству нулей в хэше.
Вроде бы и замысел абсурден, и реализация тривиальна - а как приятно прочитать. Такими (в частности) статьями и ценен ресурс.
"Если человек талантлив, он талантлив во всем" (с) Автор, Вы большой молодец. Задумка - класс! Реализация тоже порадовала. Статья отличная, читать интересно и весело. Биткоин-стихотворение тоже хорошее получилось, зря вы излишне строги к себе. )
У меня есть ощущение, (но я не могу это доказать найти этому подтверждение), что если взять последовательность из 256 нулевых бит и "взять" от них sha256, а потом ещё раз sha256 и ещё.. ещё, ещё.., то каждый раз мы будем получать новую уникальную последовательность из 256 бит. И ровно через 2^256 таких операций мы вернёмся к первоначальному значению (из 256 нулей).
А это будет означать, что каждому вЫходному 256 битному значению соответствует одно (и только одно) 256 битное входное значение. А значит, теоретически может существовать "обратная" функция, которая может однозначно найти 256 битное исходное значение.
Ради интереса я прокрутил по полному кругу crc32 (это конечно, не полноценная хэш-функция, но зато короткая), и оказалось, что она так себя и ведёт. Т.е. Повторяется через 2^32 "оборота".
Такую же операцию я проводил с первыми 32 битами sha256.
Прокрутить полный цикл sha256 пока не представляется возможным.
Не удивлюсь, если в данном частном случае это можно доказать математически. Но у меня зачаточные познания в области современной криптографии, так что конкретнее сказать не могу. На досуге почитаю спеку, возможно, это не очень сложно вывести
Я бы посмотрел в области общей алгебры и теории полей. Там исследуются множества с заданной на нем операцией. В этой сфере математики есть понятие фактор-множества, элементами которого являются подмножества исходного множества, которые удовлетворяют условию, что для любых двух элементов А и Б при применении к ним операции получается элемент, также принадлежащий тому же подмножеству.
В контексте рассматриваемого вопроса, операция - это вычисление хэша, а исходное множество состоит из всех битовых последовательностей длиною 256 бит. С точки зрения общей алгебры можно попытаться доказать теорему, чио фактор-множество в этом случае состоит из единственного множества - исходного. Тогда действительно применение операции даст цикл длиной ровно 2^256, это уже общий результат.
Вероятно я где-то что-то напутал, т.к. общую алгебру давно не вспоминал, нов целом как-то так)
Только хеш обычно от данных сильно длиннее исходных берут.
Я это понимаю. Но мне как раз интересен вариант, когда битность входа не превышает битности выхода.
Т.к. например, в задаче поиска "красивого" хэша для любой длины первоначального сообщения, всё равно достаточно будет манипулировать, к примеру, первыми 256 битами сообщения, чтобы получить любой красивый хэш (хоть с 256 нулями).
P.s. Нет, я не биткоин ломаю)). Хотя..
Также, на правах предположения без доказательства.
В процессе таких вычислений может обнаружиться "петля/кольцо", которая "замкнет" вычисления в себе и оконечная хэш-сумма (она же изначальная) окажется недостижимой.
Доказательство моего предположения может быть построено на доказательстве наличия коллизий во всем наборе хэшей 2^256, когда одна сумма будет возможна для различных входных данных.
Пока писал ответ, понял, что эта "петля/кольцо" может быть доказательством, но уже не для предлагаемого набора нулей.
Я с этого начинал. Хотел понять, существуют ли такие локальные "кольца". Для этого даже научился считать sha256 на бумажке (есть статья на хабре). И вот как раз в процессе размышлений и появилась мысль, что локальных колец скорее всего нет. Глобально я это проверить не смог, но локальные урезанные по битности версии, пока это подтверждают.
с локальными кольцами возможны два варианта:
1) когда в это кольцо нельзя попасть извне. И тогда мы вернёмся к 0 не совершив полного круга (например 0,1,2,3,0,1,2,3..). Таких колец может существовать несколько. И они не пересекаются (по условию)
2) когда в это кольцо можно попасть извне. Т.е. Допустим последовательность может выглядеть так 0,1,2,3,4,2,3,4,2,3,4.. Т.е. Не дойдя до 9 мы зациклились на середине. Но это означает, что в узел "2" можно попасть двумя путями: из "1" или из "4" (коллизия). Но это автоматически означает, что какие-то результаты наша хеш-функция не умеет выдавать в принципе. К примеру если последовательность выглядит так 0123456789123..., т.е. В пункт 1 можно попасть из 0 или из 9, а значит результат 0 она не выдаёт в принципе. Т.е. Не существует таких входных данных, чтобы в результате получился 0. А если таких колец будет несколько, то, возможно будут и другие "запрещённые" результаты.
Кактотак
Некогда ковыряя одну игрушку, менял константу в ПЗУ. Но там была защита, CRC16, и она срабатывала, не давая запуститься. Я брал место с графическим элементом и менял содержимое пока CRC не сходилось. Впоследствии узнал, что настоящии хакеры делали битхак в процедуре проверки CRC.
Весьма изысканный способ доказать превосходство человеческого разума над ChatGPT :)
Шикарная статья!
Тысяча чертей! Вот именно ради такого я до сих пор читаю Хабр. Очень круто, спасибо!
Я когда-то делал то же самое — писал текст со степенями свободы. Только цель у меня была другая: сделать так, чтобы текст наилучшим образом выравнивался по обеим сторонам страницы с минимальным количеством переносов и с минимальным растяжением или сжатием пробелов.
Вероятности, это, конечно, хорошо. Но реальные данные гораздо слаще.
Я посмотрел в поэтическом подкорпусе Национального корпуса русского языка и нашел там только одно стихотворение с четырьмя ведущими нулями sha256:
Вы смущены... такой развязки
Для ежедневной старой сказки
Предугадать вы не могли,--
И, как укор, она пред вами
Лежит, увитая цветами...
Не плачьте ж -- поздними слезами
Не вырвать жертвы у земли!
Это Надсон. sha256:
0000bfdc1335b7b04add8eb12bff7034d42548d7ca028e0704f589285536f9a4
Как исследователь сайта stihi.ru c десятилетним стажем обследовал и все стихотворения, опубликованные там с 2000 по 2010 год (это мало, конечно, на обсчет полной коллекции до 2019 года уйдет где-то неделя). Нашлось 3 текста с пятью ведущими нулями sha256. Например, такой. sha256:
00000623f875e7bd5dd1c209c08d6cddd0b6ce672fb1469a47c48729eaa1d57f
Раймона Кено тоже начал считать. Здесь репозиторий с кодом. Выяснил, что на текущей скорости полный перебор займет 38 с половиной лет. Пока отложил. Варианты с 8 и более ведущими нулями в обсчитанных полутора миллиардах комбинаций не попались.
У меня прям на сердце теплеет от вашего комментария. Хотел сам посчитать Кено, но потом подумал — неужто никто из хабровчан не подхватит эстафету)
Да, с большим интересом прочитал вашу статью. Вывел для себя список слов, которые хорошо бы употреблять пореже
Спасибо! Но это уже довольно древний текст. Наука в означенном направлении продвинулась гораздо, гораздо дальше (например).
А Ваше понимание искусства как преодоленной трудности, вероятно, восходит (помимо прочего) к Вольтеру (см. Вольтер. Эстетика. Письма. Предисловия и рассуждения. М.: Искусство, 1974. С. 333)
Ну, я говорил не столько о преодолённой трудности, сколько об уходе от привычных траекторий. Преодоление трудности — лишь частный случай причины (точнее, способа) такого ухода, оно не является самоцелью. Скажем, стихотворение Бродского «То не Муза воды набирает в рот…» не становится хуже от того, что в восьмой строке два лишних безударных слога, нарушающих «правильный» паузированный анапест. «Трудность» правильной силлабо-тоники «не преодолена», однако именно в этом часть авторского своеобразия.
upd: прошу прощения, я подумал, вы говорите о концепции «поэзии как танца». А вы, судя по всему — про сравнение с PoW в конце. Интересно, обращусь к первоисточнику.
Да, я совсем не про танец (и Седакова мне мягко говоря не близка идеологически), я про преодоление трудностей как про важнейший психологический компонент создания художественного произведения. Ср. стереотип: «то, что слишком просто, не искусство».
Думаю, в этом мы не спорим (хотя с нами спорит современная поэтическая практика, полностью обратившаяся верлибром).
А вот с чем я не согласен, это с тем, что метр «То не Муза воды набирает в рот…» — это анапест (пусть даже «паузированный», что бы это ни значило). Это дольник на двусложной основе, хотя сначала и кажется, что логаэд, но отступления от логаэдической структуры там появляются гораздо раньше восьмой строки.
Да, вы абсолютно правы, память меня подвела. Текст тяготеет к логаэду, большая часть строк имеет форму четырёхстопного анапеста с укороченной последней стопой (паузированный анапест — это терминология Квятковского, ЕМНИП), но в целом — да, дольник. Однако восьмая строка даже от дольника отходит, и даже от тактовика — промежуток четыре безударных слога между иктами невозможен ни в каком «полусиллабическом» метре, только в чистой тонике.
Терминология Квятковского по нынешним временам очень экзотична, ее больше никто не применяет.
Ну правда же странно звучит — либо уж это анапест, либо нет. Наращения и усечения стоп в силлабо-тонике бывают, но только вокруг цезуры или как переменная анакруза. Все прочее уже не силлабо-тоника.
А дольник, кстати, и есть тоника, но с ограничениями, отступления от которых (конвенционально) возможны в рамках 20 %, чтобы текст все еще оставался дольником.
Ну, положим, насчёт "никто" - это вы погорячились) в научных кругах - думаю, да, а вот в дикой природе всякое бывает. Всё же справочник Квятковского довольно популярен, и равноценных замен ему я не знаю (если подскажете - буду благодарен).
Дольник, ЕМНИП, Гаспаров рассматривал как промежуточную форму между силлабо- и чистой тоникой. Но опять же, я стиховед не настоящий, могу быть не в курсе современного положения дел.
Да, Вы правы, к сожалению, Квятковский попадается на глаза неоперившимся душам и добавляет путаницы в и без того непростых материях.
Да, от этой идеи Гаспарова современные стиховеды уже отказались. Есть силлабо-тоника, а есть тоника, соответственно, говорить о "чистой тонике" резона нет, потому что не бывает "нечистой".
А правда, не подскажете какой-нибудь современный стиховедческий кирпич, чтобы быть в курсе современного положения вещей, но не собирать картину по отдельным статьям?
Обобщающего труда нет, увы. В некоторой мере подготовкой к нему может быть справочник НКРЯ. Я его даже на ПостНауке рекомендовал в ряду книг.
Браво!!! Обычно не комментирую, но автор «вынудил»))
Вроде в биткоине используется не SHA256 а HASH256, что есть два раза по SHA256
Буква «а» — это цифра 10, «b» — это цифра 11, и так далее
Таки 10 и 11 - числа, а не цифры.
тоже самое, ну почти
Интересно.
Как я намайнил первое* в мире биткоин**-стихотворение