Как разгадать блок Биткоина

Запись опубликована polym0rph · 1 апр 2012, 19:27

12 108 просмотров

Данные в сети Bitcoin постоянно обновляются с помощью файлов называемых блоки. Блок — это запись последних Bitcoin сделок, информация о которых ещё не была зарегистрирована ни в одном предыдущем блоке. Для наглядности представьте что блок — это отдельная страница в книге биржевых операций. Каждый новый блок записывается в конце цепочки блоков (block chain), и никогда в будущем не подлежит изменению или удалению, тем самым сохраняя информацию о сделках которые произошли непосредственно перед его созданием.

Каждый блок содержит в себе ссылку на предыдущий блок и решение сложной математической задачи — уникальной для каждого блока. Новый блок не будет записан в цепочку блоков, если не содержит в себе решение поставленной математической задачи. По сути майнинг — это соревнование «кто первым решит поставленную задачу» и подтвердит этим самым корректность найденного блока. Несмотря на то, что задачу сложно решить, проверка правильности найденного решения очень проста для остальной сети. Каждая задача может иметь несколько решений, но для принятия блока сетью необходимо найти лишь одно из них.

Решение каждого блока вознаграждается новыми монетами, по этому каждый блок содержит запись о Bitcoin-адресе на который начисляется награда. Эта запись называется транзакцией генерации и всегда записывается первой в списке сделок каждого блока. Число монет получаемых за нахождение блока начинается с 50 и уменьшается вдвое каждые 210 000 блоков (в среднем 1 раз в 4 года).

Каждая совершённая сделка (перевод биткоинов) транслируется в сеть инициатором сделки, а работающие над созданием блока узлы собирают записи о сделках и добавляют их к блоку который пытаются решить.

Сложность математической задачи, которую нужно решить для нахождения блока, автоматически изменяется сетью для того, что бы 1 блок генерировался раз в 10 минут. Корректировка происходит через каждые 2016 блоков (примерно 1 раз в 2 недели), в этот момент все Bitcoin-клиенты сравнивают фактически затраченное на создание 1 блока время и изменяют сложность так, что бы время соответствовало целевому, увеличивая, либо уменьшая сложность задачи.

Каждый блок содержит ссылку на предыдущий, поэтому совокупность всех блоков образует цепочку. Однако существует возможность временного раздвоения цепочки, так происходит когда два майнера одновременно и независимо друг от друга находят решение текущего блока. Но сеть Bitcoin разработана таким образом, что в кратчайшие сроки избавляется от разветвлений, и лишь одна ветвь цепочки продолжает существовать.

Bitcoin считает действительной самую длинную цепочку блоков. «Длинной» признаётся цепочка блоков с наибольшей суммарной сложностью, а не та в которой больше блоков. Если злоумышленник решит воспользоваться разветвлением цепочки и наполнить его огромным количеством легко решаемых блоков, то Bitcoin-сеть не признает такую цепочку действительной.

Общие вопросы о Блоках:

Q: Сколько Блоков создано на данный момент?

Q: Каково максимальное количество Блоков?

A: Не существует «максимального количества Блоков», Блоки постоянно добавляются в конец цепи, в среднем 1 раз в 10 минут.

Q: Когда будут сгенерированны все 21 миллион BTC (биткоинов) Блоки будут продолжать создаваться?

A: Да. Блоки служат подтверждением проводимых операций по переводу BTC. Сделки будут происходить и после генерации всех монет, а значит и Блоки будут создаваться до тех пор, пока люди будут расплачиваться биткоинами.

Q: Сколько я потрачу времени на генерацию одного Блока?

A: Никто не сможет дать точного ответа на этот вопрос. Подобный калькулятор поможет понять, какое время может занять генерация Блока.

Q: Если я рассчитал Блок на 1%, то.

A: Не существует такого понятия как «рассчитать Блок на 1%». После 24 часов работы над поиском Блока, ваши шансы найти его будут ровно такими же как и в самом начале, или в любой другой момент. Шансы на нахождение Блока всегда одинаковы. Те кто считает иначе — заблуждаются.

Читайте также:  Биткоин broker в чем подвох

Нахождение Блока — это как подбросить монету 53 раза подряд и ждать, что все 53 раза выпадет «решка». При каждой попытке получить 53 «решки» подряд — ваши шансы на успех будут одинаковыми.

Q: Где я могу узнать побольше о технических деталях процесса генерации Блоков?

Действующие лица: Коля, Вася, таджики и Люда (в эпизодах).

С тех пор, как о биткоине заговорили по-настоящему массово, прошло три года. Технологией, на основе которой ведётся учёт всех транзакций — блокчейном — успели заинтересоваться почти все крупные финансовые институты, в том числе Сбербанк, что само по себе порождает мемы.

Однако объяснить то, как работает блокчейн (и сам биткоин), до сих пор непросто. На «Лепрозории» попытались в очередной раз показать на пальцах принцип работы блокчейна, и, кажется, у пользователя sleep получилось сделать это максимально наглядно — в виде истории о Коле, ведущем дневник, и Васе, который этот дневник пытается подделать.

Коля решил вести дневник. Для этого он завёл тетрадку и начал писать там строчки вроде таких:

1. Купил хлеба2. Позвонил Геннадию…132. Дал Васе в долг 100 рублей133. Трахал Люду134. Покакал

Он очень старался вести дневник честно, и если у него с кем-то возникал спор о чём-то, что произошло раньше, он доставал его и тыкал всем носом в свои записи. Однажды Коля сильно поспорил с Васей на тему того, давал ли он Васе в долг 100 рублей или нет. В момент спора у Коли не было с собой дневника, но он обещал завтра же принести и всё показать Васе.

Вася решил не искушать судьбу, пробрался к Коле в дом, нашёл дневник, долистал до строчки 132 и заменил её на «Трахал Олю». На следующий день Коля достал дневник, долго искал в нём запись про долг Васе, не нашёл и пришел извиняться.

Прошёл год, Васю замучила совесть, и он признался во всём Коле. Коля простил друга, но решил на будущее использовать какую-нибудь более надёжную систему записи, которую нельзя было бы так просто подделывать.

Придумал он следующее. У себя в операционной системе «Линупс» он нашёл программу md5sum, которая брала любой текст и превращала его в хеш — 32 непонятные цифры. Как именно она это делала, Коля не понимал, но в целом казалось, что она выдавала полную белиберду. Например, если в программу ввести слово «привет», она в ответ выдаёт «8b4609d7e974702ff1451220c7ededcf». А если ввести, казалось бы, почти то же самое, но с лишним пробелом, то уже «69ab827825fdb876e709abd3d783dbb6».

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

0000 (начальный хеш, ограничимся для простоты четырьмя знаками)1. Купил хлеба4178 (хеш от 0000 и «Купил хлеба»)2. Позвонил Геннадию4234 (хеш от 4178 и «Позвонил Геннадию»)…4492132. Дал Васе в долг 100 рублей1010133. Трахал Люду 8204 (хеш от 1010 и «Трахал Люду»)

Если теперь какой-нибудь Вася захочет изменить строчку 132, изменится и хеш этой строчки (он будет не 1010, а чем-то другим). Это, в свою очередь, повлияет на хеш строчки «133. Трахал Люду» (он будет не 8204, а чем-то другим), и так далее до конца дневника. Теперь ради одной записи Васе придётся подменить весь дневник после неё, что сложно.

Читайте также:  Как отправить Биткоины с blockchain

Прошло время, Коля открыл банк. Он всё так же писал в дневничок записи «дал в долг» и «взял в кредит», снабжая их хешами. Банк разросся, и однажды он дал в долг (уже новому) Васе миллион. Следующей ночью десять нанятых Васей за полмиллиона таджиков пробрались в комнату Коле, заменили запись «143313. Дал в долг Новому Васе 1000000» на «143313. Дал в долг Новому Васе 10» и по-быстрому пересчитали все хеши вплоть до конца дневника.

Чудом Коля обнаружил подмену и, раз такое дело, решил усложнить способ подделки дневника: «Теперь, — решил Коля, — я буду в конце каждой записи в скобочках добавлять какое–нибудь число („нонс“), а подбирать его буду так, чтобы каждый хеш заканчивался на два нуля». Единственный способ это сделать — тупо перебирать числа, пока не получится нужный хеш:

0000 (начальный хеш, ограничимся для простоты четырьмя знаками)1. Купил хлеба (22)4100 (хеш от 0000 и «Купил хлеба (22)», 22 было подобрано, чтобы хеш кончался на 00)2. Позвонил Геннадию (14)3100 (хеш от 4100 и «Позвонил Геннадию (14)»)…1300132. Дал Васе в долг 100 рублей (67)9900133. Трахал Люду (81)8200 (хеш от 9900 и «Трахал Люду (81)»)

Для создания каждой записи Коле теперь в среднем нужно будет перебрать порядка 50 чисел, что трудозатратно. Соответственно, если запись кто-то подменит, подделка её и всех последующих будет тоже в 50 раз сложнее, а это значит, что теперь Васе даже с таджиками не справиться.

Через какое–то время Коля взял себе партнёра и они стали оба вести дневничок. Для каждой новой записи оба одновременно начинали подбирать нонс и тот, кому первому удавалось найти подходящий, вносил запись. Так как вдвоём подбирать нонсы быстрее, Коля усложнил задачу и требовал, чтобы все хеши кончались уже на три нуля, а не на два.

Этот окончательный Колин дневничок по сути и есть настоящий блокчейн, только Колю с другом надо заменить на кучу соединённых по сети компьютеров, а вычисления хешей усложнить, чтобы даже компьютерам было тяжко.

Блокчейн — это не более чем дневничок записей, который можно записывать совместно, и в котором де-факто невозможно подделать старые записи.

Имея такой клёвый дневничок, можно строить разные интересные системы. Например, биткоин. Биткоин — это дневничок, где каждая запись имеет вид «Передать столько-то денег с кошелька Х на кошелёк У». Так как дневничок нельзя подделать и в нём хранится вся история переводов, в любой момент из него можно вычислить количество денег на каждом кошельке. Ну а чтобы в системе вообще были какие-то деньги, биткоин сделан так, что каждая запись в дневничке заканчивается словами «Произвести Z монет и перевести мне», где «мне» — это тот пользователь, кто первым «угадает» нонс, который обеспечит хеш с нужным количеством нулей в конце.

Поверх дневничка с некоторым количеством криптографии можно строить другие интересные системы. Например, можно делать записи в духе «Кто решит уравнение f(x) = 14, тот получает 10 монеток». Соответственно, первая запись в дневничке, где будет предоставлено решение, может автоматически считаться получателем монеток. Вокруг этой и схожих идей строятся так называемые «контракты».

Стоит помнить, что блокчейн — это не более чем надёжный распределённый дневничок. Никаких мировых проблем, помимо тех, которые можно решить дневничком, блокчейн нам не решит. А те проблемы, которые он решит, он решит ценой гигаватт энергии, которые сейчас тратятся на подбор «нонсов» — по-большому счёту, впустую.

Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Необходимо обновить браузер или попробовать использовать другой.

Майнинг биткоина – это интересная тема, в которой иногда трудно разобраться без дополнительной информации. Майнинг пустых блоков – довольно важный вопрос, и люди часто интересуются, зачем вообще майнинг-пулы производят их.

Возвращаемся к обсуждения пустых блоков

Читайте также:  Как подключить Биткоин кошелек к сайту

Майнинг-пулы – это группы биткоин-майнеров, которые работают вместе для поиска и подтверждения блоков примерно каждые 10 минут. Большинство этих блоков заполняются транзакциями, которые ожидают подтверждения, как только майнер находит определённый блок. Майнеры получают награду в 12,5 BTC и все сборы за транзакции, находящиеся в блоке, который они находят. В первое время блоки часто не были заполнены полностью, потому что биткоин не был так популярен. Сейчас блоки заполняются полностью, часто до максимума в 1 МБ.

Но майнеры выпускают не только заполненные блоки; встречаются и пустые. На самом деле пустые блоки содержат одну транзакцию, которая называется coinbase, и именно она включается в блок первой. Главная причина, по которой майнинг-пулы выпускают такие блоки – они работают без остановки. Но тогда возникает вопрос: Почему майнинг-пулы продолжают выпускать блоки, когда в мемпуле находится огромная очередь транзакций?

Однако, когда пул решает блок, он должен скачать его и выполнить определённые операции для верификации находящихся в нём транзакций. В то же время, пул получает следующий передаваемый заголовок (80 байт информации, привязанной к блоку) и начинает работать над следующим блоком. Но майнеры не только тратят время на майнинг, они также получают информацию о блоках, которые смайнили их конкуренты. Они не останавливаются и постоянно стремятся смайнить столько блоков, сколько могут. Как гонщик Nascar, который только выиграл Daytona 500, но через пару секунд уже думает о том, как занять поул-позицию на гонке в Талладеге.

Профессор информатики и широко известный биткоин-активист Джордж Столфи простым языком объясняет, зачем майнерам производить пустые блоки:

«Сборы за транзакции стимулируют майнеров включать все транзакции, которые они могут, в потенциально возможные блоки. Однако, майнер часто начинает подготавливать кандидата для блока N+1 ещё до того, как он узнает, что попало в блок N. Это происходит потому, что ему нужен только хеш от блока N, который он может получить очень быстро, используя определённую хитрость. В этом случае майнер должен начинать делать пустой блок N+1, даже если в очереди есть транзакции, потому что, не зная содержимого блока N, он не может проверить, правильные в нём транзакции или нет. Если ему повезёт, он сможет решить пустой блок N+1 ещё до того, как закончит скачивать тело блока N. Вот откуда берутся пустые блоки».

Свыше 87.000 пустых блоков

Пустые блоки появляются с самого начала существования биткоина. Например, с первого по 360189 блоки находится 85.295 пустых блоков. Это значит, что с января 2009 по июнь 2015 около 23,68% блоков были пустыми. Майнинг пустого блока требует столько же работы, сколько и заполненного. С 2015 число пустых блоков уменьшилось, а некоторые пулы говорят, что они воздерживаются от майнинга таких блоков. На сегодняшний день всего было смайнено 87.885 пустых блоков.

Судя по информации Bitfury Analytics Team, майнинг-пул Bitfury предпочитает не майнить пустые блоки

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

Читайте далее:

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Adblock detector