Как стать автором
Обновить

Комментарии 46

Осталось только намайнить первую биткоин книгу :)

Эта задача как раз намного проще) в большом прозаическом тексте много степеней свободы, с которыми можно аккуратно поиграть, почти не испортив текст. Думаю, что я могу взять любой классический русский роман и сделать его биткоин-версию настолько тщательно, что даже литературовед не заметит разницу без diff-а.

Ха-ха, ну да, можно просто взять бумагу и ручку и начать "майнить" исследование книги, правда шансы на успех майнинга чрезвычайно малы. Намного проще и эффективнее просто купить книгу за обзоры, если у вас конечно есть достаточное количество монет в кошельке :)

Я одобрил комментарий, но всё же не очень понимаю, что именно вы хотели сказать)

можно проверить 100 000 миллиардов стихотворений, вдруг найдется биткойн старше вашего по количеству нулей в хэше.

Почти наверняка. По той же формуле вероятность того, что найдётся текст с 11 нулями хеша — приблизительно 99.66%

Вроде бы и замысел абсурден, и реализация тривиальна - а как приятно прочитать. Такими (в частности) статьями и ценен ресурс.

Писал, надеясь получить именно такой комментарий! Спасибо, очень приятно.

"Если человек талантлив, он талантлив во всем" (с) Автор, Вы большой молодец. Задумка - класс! Реализация тоже порадовала. Статья отличная, читать интересно и весело. Биткоин-стихотворение тоже хорошее получилось, зря вы излишне строги к себе. )

Ну, если я не буду строгим к себе, то кто? Вы вот похвалили, а поругать никто не поругал)

У меня есть ощущение, (но я не могу это доказать найти этому подтверждение), что если взять последовательность из 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 %, чтобы текст все еще оставался дольником.

Ну, положим, насчёт "никто" - это вы погорячились) в научных кругах - думаю, да, а вот в дикой природе всякое бывает. Всё же справочник Квятковского довольно популярен, и равноценных замен ему я не знаю (если подскажете - буду благодарен).

Дольник, ЕМНИП, Гаспаров рассматривал как промежуточную форму между силлабо- и чистой тоникой. Но опять же, я стиховед не настоящий, могу быть не в курсе современного положения дел.

Да, Вы правы, к сожалению, Квятковский попадается на глаза неоперившимся душам и добавляет путаницы в и без того непростых материях.
Да, от этой идеи Гаспарова современные стиховеды уже отказались. Есть силлабо-тоника, а есть тоника, соответственно, говорить о "чистой тонике" резона нет, потому что не бывает "нечистой".

А правда, не подскажете какой-нибудь современный стиховедческий кирпич, чтобы быть в курсе современного положения вещей, но не собирать картину по отдельным статьям?

Обобщающего труда нет, увы. В некоторой мере подготовкой к нему может быть справочник НКРЯ. Я его даже на ПостНауке рекомендовал в ряду книг.

Ооо, так вы — это вы! У меня плохая память на имена, но я много вас читал на Постнауке. Рад возможности лично поблагодарить. И, собственно, благодарю.

Спасибо, что читаете!
В общем, коллекция stihi.ru досчиталась (2000-2019). Там нашлось только два текста с шестью ведущими нулями:
Первый (000000e94dd6eda6b3bd730bfce0c2fce74b2f4c977ad0603cc65b05876384d6) и второй (000000435c8b33b7ef5175b13b51d24d2e331ffeb104fde2a9568337d91d7e8b).

Браво!!! Обычно не комментирую, но автор «вынудил»))

Вроде в биткоине используется не SHA256 а HASH256, что есть два раза по SHA256

Судя по всему, вы правы((( Мне очень стыдно за свою невнимательность. Сегодня же вечером запущу числодробилку заново, затем внесу дополнение в статью.

Буква «а» — это цифра 10, «b» — это цифра 11, и так далее

Таки 10 и 11 - числа, а не цифры.

В том-то и дело, что в шестнадцатеричной системе счисления это цифры)

тоже самое, ну почти

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации