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

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

Компьютеры вступают в соревнование, одновременно и быстро предлагая хеши для кодирования и объединения максимального объема данных в новый, полностью укомплектованный блок с последующим присоединением к блокчейну вслед за предыдущим блоком. Победителем в этом состязании станет тот хеш-блок, который окажется обладателем специального номера, признанного базовым алгоритмом биткоина выигрышным. Получить этот номер очень сложно, поэтому компьютеры продолжают создавать блоки из хешей до тех пор, пока не сгенерируют выигрышный номер, – снова, и снова, и снова. Каждый из генерируемых компьютером новых хеш-блоков создается путем добавления уникального, сгенерированного случайным образом номера (который называется одноразовым кодом) к остальным содержащимся в нем данным. Как уже упоминалось, к ним относятся хешированные данные о последней транзакции, а также предыдущий хеш-блок. Добавляя новый одноразовый код, мы полностью меняем конечный хеш-блок. Стоит отметить, что термин одноразовый код позаимствован у Льюиса Кэрролла, который употребил слово frabjous (замечательный) и охарактеризовал его как «одноразовое слово», применимое только к одному случаю и вряд ли пригодное для дальнейшего употребления[169]. Такова судьба миллиардов «одноразовых кодов», сгенерированных и отброшенных в процессе поиска выигрышного кода мощными компьютерными узлами, задействованными в майнинге. Это напоминает охоту на виртуальный пароль в джунглях виртуальных цифр.

В итоге эта тяжелая работа методом проб и ошибок приводит к тому, что один из узлов отправляет в сеть хеш-блок с кодом, соответствующим требованиям биткоинового алгоритма, – кодом, включающим необходимое количество нулей и удовлетворяющим ряду других условий. Чтобы его получить, требуется задействовать огромные вычислительные ресурсы, поэтому более производительные компьютеры имеют больше шансов сгенерировать выигрышный код по сравнению с менее производительными. Однако не следует забывать, что процедура хеширования основана на абсолютно случайном переборе кодов. А это значит, что хотя более производительные узлы будут генерировать выигрышные номера чаще, чем остальные, они тем не менее не могут выигрывать каждый раз. (Здесь можно привести аналогию: это все равно что купить больше лотерейных билетов перед розыгрышем. Никто не даст гарантии, что вы выиграете, но шансы растут с каждым добавочным билетом.)

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

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

После того как задача решена, биткоиновая программа, работающая на компьютере-победителе, «опечатывает» новый блок транзакций хешем и присваивает ему номер блока, который следует непосредственно за номером последнего на тот момент блока в постоянно растущей цепи блокчейна. (В тот самый момент, когда мы пишем эти слова, блокчейн обрабатывает блок № 318 685 – именно столько блоков было включено в блокчейн с тех пор, как Накамото добыл исходный блок[170]. Если это количество умножить на 10 минут и отложить на оси времени назад, то получится, что их добыча началась примерно в январе 2009 года.) Все они связаны между собой математической зависимостью. Поразительная чувствительность хешей к малейшим изменениям в исходных данных означает, что теоретически никто не может произвольно менять данные, записанные в более ранних блоках блокчейна. Такая попытка немедленно приведет к хаосу в системе. Это делает ее устойчивой к внешним воздействиям.

После того как новый блок транзакций был создан и присоединен к блокчейну, остается завершить еще одно важное дело: другие майнеры должны подтвердить достоверность содержащихся в нем транзакций. Без такого подтверждения невозможно установить, какие операции реальны, а какие – нет. Таким образом, невозможно знать наверняка, не вставил ли какой-нибудь нечистоплотный майнер фальшивые транзакции в блок. Возможно, они касаются перечисления кому-нибудь биткоинов, которыми он не имел права распоряжаться, – иными словами, совершения мошеннической транзакции. Тогда система примет эту транзакцию как вполне легальную. Следовательно, другие майнеры должны еще подтвердить обстоятельство, которое известно под названием подтверждение работы выигравшего конкуренцию майнера. Они сопоставляют данные по закодированным в блоке транзакциям с хешированными данными из того же блока, чтобы проверить их достоверность на основе анализа всей цепочки операций в блокчейне. На первый взгляд эта задача кажется геркулесовой, но ее решением занимаются мощные компьютеры. А значит, этот процесс не столь трудоемкий, как генерирование одноразовых кодов, и может быть проделан относительно быстро и легко. Подтверждения других майнеров пересылаются в сеть и владельцам электронных кошельков. Кафе Coupa наконец-то может удостовериться в том, что платеж от Джеймса вполне правомочен. Не менее важна и удовлетворенность майнеров полученным подтверждением того, что последний блок в блокчейне легитимен. Ведь это значит, что они готовы продолжить работу и присоединить к блокчейну следующий блок – конечно, если окажутся победителями. С этого момента вся процедура повторяется с самого начала.

Сделаем важное замечание: процедура формирования блоков и подтверждения их легитимности занимает не менее 10 минут, поэтому на такое же время откладывается окончательное завершение транзакции. Однако торговцы, пользующиеся услугами таких биткоиновых процессинговых фирм, как Bitpay, Coinbase или GoCoin, обычно получают переводы от покупателей немедленно. Как правило, во всех случаях, кроме платежей на очень большие суммы, процессинговая фирма берет на себя риск неподтверждения легитимности транзакции. Они идут на это потому, что факты неподтверждения, или двойная трата средств как их основная причина, случаются очень редко. На рынке предлагаются сложные методы анализа «больших данных»: например, пакет от стартапа BlockCypher, позволяющий торговцам и процессинговым фирмам в течение считаных секунд и практически со стопроцентной точностью оценить вероятность того, что данная транзакция будет подтверждена[171].

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

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату