Эпоха криптовалют. Как биткоин и блокчейн меняют мировой экономический порядок - Кейси Майкл
Шрифт:
Интервал:
f72680b97551fc5eda1b3a33dda55796ba9619b371fdd03f66409f2c4958c2cb
Процедура подтверждения достоверности транзакций для включения в блокчейн Публикуется с разрешения Майкла Кейси и Пола Виньи
А вот так выглядит хеш, полученный в результате введения в то же текстовое поле всех 168 слов предыдущего абзаца этой главы:
e52a16c11d5c45b768b1bc87f0c1494799e92c019101562bfb435950b36de17b
Независимо от того, будет ли это одна отдельно взятая буква или полный текст романа «Война и мира», хеш все равно состоит из 64 знаков. Но при малейшем изменении в исходной информации – одной десятичной точке в числе или, например, пробеле – весь хеш полностью изменится. Эта способность упаковывать большой объем информации в массивы данных одинаковой структуры, но каждый раз совершенно разного вида делает хеширование очень мощным инструментом шифрования. Большой объем информации можно представить в сжатом виде и зашифровать. Такой хеш практически невозможно расшифровать и узнать, какую именно информацию он содержит; однако если ваш компьютер имеет доступ к источнику данных, из которых был сформирован этот хеш, то не так уж сложно проверить правильность заключенной в нем информации.
Алгоритм хеширования позволяет построить своего рода иерархию хешей, что весьма полезно, поскольку создается структура, в которой майнеры могут группировать одновременно выполняемые транзакции. Это происходит следующим образом. Программное обеспечение на компьютере майнера объединяет хеш первой транзакции – вместе со всей содержащейся в нем информацией – с необработанной информацией следующей не хешированной транзакции, чтобы создать новый хеш. Теперь информация об обеих транзакциях полностью хеширована. Эта процедура повторяется со следующей по очереди транзакцией, которую принимает в обработку компьютер майнера. Хеш, созданный на основе информации о двух транзакциях, объединяется с информацией о третьей транзакции, и создается еще один, третий, хеш. Эта процедура повторяется каждый раз по мере поступления в обработку все новых транзакций. Информацию, содержащуюся в этом объединенном хеше, впоследствии легко проверить, пройдя назад по неразрывной цепочке хешей. Именно таким образом транзакции объединяются в строительные блоки для блокчейна, которые соответственно называются блоками.
Пока происходят эти события, компьютеры майнеров принимают участие в своеобразном соревновании, или в лотерее за право быть первым, кто «упакует» очередной блок, то есть подготовит его к включению в главный журнал блокчейна и получит за это приз – блок вновь выпущенных биткоинов. Пока этого не произойдет, сеть не сможет подтвердить достоверность последней серии транзакций. Каждый майнер в отдельности постоянно кодирует и декодирует содержащуюся в хешах информацию описанным выше способом, но ее содержимое пока еще не готово к проверке сетью. По-прежнему нет единого мнения о ее достоверности. Оплата Джеймсом кофе из кафе Coupa все еще не подтверждена. Таким образом, решение математических задач представляет собой составляющую часть важнейшей процедуры подтверждения достоверности транзакций.
Компьютеры вступают в соревнование, одновременно и быстро предлагая хеши для кодирования и объединения максимального объема данных в новый, полностью укомплектованный блок с последующим присоединением к блокчейну вслед за предыдущим блоком. Победителем в этом состязании станет тот хеш-блок, который окажется обладателем специального номера, признанного базовым алгоритмом биткоина выигрышным. Получить этот номер очень сложно, поэтому компьютеры продолжают создавать блоки из хешей до тех пор, пока не сгенерируют выигрышный номер, – снова, и снова, и снова. Каждый из генерируемых компьютером новых хеш-блоков создается путем добавления уникального, сгенерированного случайным образом номера (который называется одноразовым кодом) к остальным содержащимся в нем данным. Как уже упоминалось, к ним относятся хешированные данные о последней транзакции, а также предыдущий хеш-блок. Добавляя новый одноразовый код, мы полностью меняем конечный хеш-блок. Стоит отметить, что термин одноразовый код позаимствован у Льюиса Кэрролла, который употребил слово frabjous (замечательный) и охарактеризовал его как «одноразовое слово», применимое только к одному случаю и вряд ли пригодное для дальнейшего употребления[169]. Такова судьба миллиардов «одноразовых кодов», сгенерированных и отброшенных в процессе поиска выигрышного кода мощными компьютерными узлами, задействованными в майнинге. Это напоминает охоту на виртуальный пароль в джунглях виртуальных цифр.
В итоге эта тяжелая работа методом проб и ошибок приводит к тому, что один из узлов отправляет в сеть хеш-блок с кодом, соответствующим требованиям биткоинового алгоритма, – кодом, включающим необходимое количество нулей и удовлетворяющим ряду других условий. Чтобы его получить, требуется задействовать огромные вычислительные ресурсы, поэтому более производительные компьютеры имеют больше шансов сгенерировать выигрышный код по сравнению с менее производительными. Однако не следует забывать, что процедура хеширования основана на абсолютно случайном переборе кодов. А это значит, что хотя более производительные узлы будут генерировать выигрышные номера чаще, чем остальные, они тем не менее не могут выигрывать каждый раз. (Здесь можно привести аналогию: это все равно что купить больше лотерейных билетов перед розыгрышем. Никто не даст гарантии, что вы выиграете, но шансы растут с каждым добавочным билетом.)
По сути дела, если вычислительный ресурс системы остается постоянным, то математические закономерности случайного подбора цифр таковы, что за продолжительный период времени отдельно взятый узел должен зарабатывать количество биткоинов, пропорциональное вычислительному ресурсу, задействованному им в системе. Проблема в том, что при работающем в системе количестве мощных вычислительных узлов и при том количестве биткоиновых блоков, которые выпускаются в качестве оплаты их усилий, пройдет очень много времени, прежде чем маломощный компьютер сможет генерировать выигрышный код и получить блок из 25 биткоиновых монет в награду. Именно поэтому все, кроме крупнейших майнеров, в наше время присоединяются к майнинговым пулам, которые распределяют совместно заработанные биткоины между всеми узлами-участниками пропорционально их вычислительному ресурсу. При этом менее мощные узлы, как правило, зарабатывают лишь доли биткоина каждый месяц.
Эти математические расчеты поручаются майнерам по двум причинам. Во-первых, они формируют затраты на майнинг, поскольку требуемый для них вычислительный ресурс достаточно дорог: его себестоимость состоит из стоимости электроэнергии и амортизации техники. Это помогает регулировать процесс майнинга и устанавливать взаимосвязь между свободной эмиссией биткоинов и работой, необходимой для их получения. Во-вторых, это создает конкуренцию с выплатой победителю вознаграждения, которое стимулирует его выполнять работу, необходимую для подтверждения транзакции.
Поделиться книгой в соц сетях:
Обратите внимание, что комментарий должен быть не короче 20 символов. Покажите уважение к себе и другим пользователям!