А вот так выглядит хеш, полученный в результате введения в то же текстовое поле всех 168 слов предыдущего абзаца этой главы:
e52a16c11d5c45b768b1bc87f0c1494799e92c019101562bfb435950b36de17b
Независимо от того, будет ли это одна отдельно взятая буква или полный текст романа «Война и мира», хеш все равно состоит из 64 знаков. Но при малейшем изменении в исходной информации – одной десятичной точке в числе или, например, пробеле – весь хеш полностью изменится. Эта способность упаковывать большой объем информации в массивы данных одинаковой структуры, но каждый раз совершенно разного вида делает хеширование очень мощным инструментом шифрования. Большой объем информации можно представить в сжатом виде и зашифровать. Такой хеш практически невозможно расшифровать и узнать, какую именно информацию он содержит; однако если ваш компьютер имеет доступ к источнику данных, из которых был сформирован этот хеш, то не так уж сложно проверить правильность заключенной в нем информации.
Алгоритм хеширования позволяет построить своего рода иерархию хешей, что весьма полезно, поскольку создается структура, в которой майнеры могут группировать одновременно выполняемые транзакции. Это происходит следующим образом. Программное обеспечение на компьютере майнера объединяет хеш первой транзакции – вместе со всей содержащейся в нем информацией – с необработанной информацией следующей не хешированной транзакции, чтобы создать новый хеш. Теперь информация об
Пока происходят эти события, компьютеры майнеров принимают участие в своеобразном соревновании, или в лотерее за право быть первым, кто «упакует» очередной блок, то есть подготовит его к включению в главный журнал блокчейна и получит за это приз – блок вновь выпущенных биткоинов. Пока этого не произойдет, сеть не сможет подтвердить достоверность последней серии транзакций. Каждый майнер в отдельности постоянно кодирует и декодирует содержащуюся в хешах информацию описанным выше способом, но ее содержимое пока еще не готово к проверке сетью. По-прежнему нет единого мнения о ее достоверности. Оплата Джеймсом кофе из кафе Coupa все еще не подтверждена. Таким образом, решение математических задач представляет собой составляющую часть важнейшей процедуры подтверждения достоверности транзакций.
Компьютеры вступают в соревнование, одновременно и быстро предлагая
В итоге эта тяжелая работа методом проб и ошибок приводит к тому, что один из узлов отправляет в сеть хеш-блок с кодом, соответствующим требованиям биткоинового алгоритма, – кодом, включающим необходимое количество нулей и удовлетворяющим ряду других условий. Чтобы его получить, требуется задействовать огромные вычислительные ресурсы, поэтому более производительные компьютеры имеют больше шансов сгенерировать выигрышный код по сравнению с менее производительными. Однако не следует забывать, что процедура хеширования основана на абсолютно случайном переборе кодов. А это значит, что хотя более производительные узлы будут генерировать выигрышные номера чаще, чем остальные, они тем не менее не могут выигрывать
По сути дела, если вычислительный ресурс системы остается постоянным, то математические закономерности случайного подбора цифр таковы, что за продолжительный период времени отдельно взятый узел должен зарабатывать количество биткоинов, пропорциональное вычислительному ресурсу, задействованному им в системе. Проблема в том, что при работающем в системе количестве мощных вычислительных узлов и при том количестве биткоиновых блоков, которые выпускаются в качестве оплаты их усилий, пройдет очень много времени, прежде чем маломощный компьютер сможет генерировать выигрышный код и получить блок из 25 биткоиновых монет в награду. Именно поэтому все, кроме крупнейших майнеров, в наше время присоединяются к майнинговым пулам, которые распределяют совместно заработанные биткоины между всеми узлами-участниками пропорционально их вычислительному ресурсу. При этом менее мощные узлы, как правило, зарабатывают лишь доли биткоина каждый месяц.
Эти математические расчеты поручаются майнерам по двум причинам. Во-первых, они формируют затраты на майнинг, поскольку требуемый для них вычислительный ресурс достаточно дорог: его себестоимость состоит из стоимости электроэнергии и амортизации техники. Это помогает регулировать процесс майнинга и устанавливать взаимосвязь между свободной эмиссией биткоинов и работой, необходимой для их получения. Во-вторых, это создает конкуренцию с выплатой победителю вознаграждения, которое стимулирует его выполнять работу, необходимую для подтверждения транзакции.
После того как задача решена, биткоиновая программа, работающая на компьютере-победителе, «опечатывает» новый блок транзакций хешем и присваивает ему
После того как новый блок транзакций был создан и присоединен к блокчейну, остается завершить еще одно важное дело: другие майнеры должны подтвердить достоверность содержащихся в нем транзакций. Без такого подтверждения невозможно установить, какие операции реальны, а какие – нет. Таким образом, невозможно знать наверняка, не вставил ли какой-нибудь нечистоплотный майнер фальшивые транзакции в блок. Возможно, они касаются перечисления кому-нибудь биткоинов, которыми он не имел права распоряжаться, – иными словами, совершения мошеннической транзакции. Тогда система примет эту транзакцию как вполне легальную. Следовательно, другие майнеры должны еще подтвердить обстоятельство, которое известно под названием
Сделаем важное замечание: процедура формирования блоков и подтверждения их легитимности занимает не менее 10 минут, поэтому на такое же время откладывается окончательное завершение транзакции. Однако торговцы, пользующиеся услугами таких биткоиновых процессинговых фирм, как Bitpay, Coinbase или GoCoin, обычно получают переводы от покупателей немедленно. Как правило, во всех случаях, кроме платежей на очень большие суммы, процессинговая фирма берет на себя риск неподтверждения легитимности транзакции. Они идут на это потому, что факты неподтверждения, или двойная трата средств как их основная причина, случаются очень редко. На рынке предлагаются сложные методы анализа «больших данных»: например, пакет от стартапа BlockCypher, позволяющий торговцам и процессинговым фирмам в течение считаных секунд и практически со стопроцентной точностью оценить вероятность того, что данная транзакция будет подтверждена[171].
Несмотря на эти ускоряющие процесс трюки, биткоиновый алгоритм устанавливает определенные правила, которые способствуют укреплению доверия к записям в книге учета и внедряют адекватные стимулы, поощряющие майнеров проводить только легитимные транзакции. Хотя после каждого успешного присоединения нового блока к блокчейну на счет майнера зачисляется порция монет, биткоиновый протокол не позволяет тратить эти деньги до тех пор, пока в блокчейн вслед за их блоком не будут включены еще 99 блоков. Это гарантирует, что с течением времени консенсус сети по поводу легитимности транзакций становится тверже скалы. Это также мотивирует всех остальных майнеров следить за тем, чтобы их коллеги поступали в соответствии с принципами этики.
Время от времени два выигравших блока поступают в сеть практически одновременно, и тогда один из них со временем исключается из блокчейна, поскольку сеть выбирает тот, за которым выстроилась более длинная цепочка блоков. Биткоины, перечисленные автору исключенного блока, теряют свою стоимость. Любые транзакции, записанные в оказавшемся «лишним» блоке и отсутствующие в том блоке, который будет признан легитимным, поступают в повторную обработку и будут включены во вновь формирующиеся блоки. Способность исключать «лишние» блоки очень важна, поскольку благодаря ей вся сеть уверена в том, что непрерывная хронологическая последовательность блоков только по причине своей непрерывности обеспечивает достоверную по всеобщему признанию запись транзакций. Но это также означает, что некоторым транзакциям приходится дольше ожидать полного подтверждения и включения в блокчейн, чем другим.
Любой может стать майнером и применять для майнинга любое компьютерное оборудование по своему выбору. Накамото знал, что чем больше майнеров включаются в охоту на биткоины, тем более солидными должны быть стимулы наращивать вычислительный ресурс и побеждать в конкурентной борьбе. Чтобы обеспечить равновесие системы, он запрограммировал в алгоритме биткоина расчет так называемого хешрейта всей сети – по сути, это общая вычислительная мощность сети в секунду – и автоматическую корректировку сложности решаемых математических задач так, чтобы выигрыш блоков становился то более трудным, то более легким делом. Таким образом, программа выплаты биткоинов в качестве вознаграждения поддерживает устоявшийся 10-минутный график формирования и подтверждения легитимности блока. Он сложился более или менее случайно, но, выбрав интервал и разработав для его поддержки программное обеспечение, можно добиться устойчивости графика выпуска новых монет на 130 лет вперед.
В терминологии теории денег биткоиновое вознаграждение – это пошлина на право чеканки монет. Иными словами, прибыль эмитента валюты независимо от того, кто им является в конкретном случае – король, центробанк или выигравший конкуренцию майнер, – проистекает из привилегии эмитировать деньги. Отсюда следует вывод, что затраты на это несет все остальное сообщество, поскольку новые вливания денежной массы размывают рыночную стоимость и покупательную способность ранее выпущенных денег. Пошлина на право их выпуска неизбежна, ведь должен же быть у новых денег первый собственник! Вопрос в том, как установить ее справедливый размер. Некоторые разработчики криптовалют учреждают неприбыльные организации и наделяют их правом распределения монет в соответствии с определенными критериями – это касается, например, установленного круга благотворительных организаций. Но для этого требуется привлечь узнаваемого и пользующегося доверием учредителя. Но даже в этом случае можно ли считать такое распределение справедливым? Конечно, оно субъективно. Некоторые разработчики распределяют определенное количество монет среди людей, формально зарегистрировавших свою принадлежность к конкретной группе, например, в соответствии с Государственным реестром. Но это создает возможности для мошенничества, поскольку люди могут открывать на свое имя более одного электронного кошелька, пользуясь предоставляемой системой анонимностью и получая б
Оставшийся неизвестным создатель биткоина разрешил проблему справедливости распределения, обратившись к принципу конкуренции на свободном рынке. Это и есть одна из целей безостановочной конкуренции хешей – процесса, который непосвященным кажется бесцельным. В какой-то степени это небольшой трюк. Майнеры решают математические задачи с единственной целью – выиграть гонку и получить биткоины в награду, а сопутствующий результат состоит в том, что они подтверждают транзакции и поддерживают блокчейн в актуальном состоянии. Исходя из этого биткоиновый протокол решает, кто достоин получить вознаграждение. Модель основана на идее, что в обмен на эту привилегию ее получатели инвестируют ресурсы – оборудование и электроэнергию, – а их компьютеры должны выполнить
Чтобы удостовериться в том, что его система материального поощрения достаточно эффективна, Накамото разработал гораздо более строгую монетарную политику, чем даже ФРС. Ее ключевое условие состоит в том, что после каждых 210 тысяч биткоинов (примерно раз в четыре года) объем их выпуска сокращается наполовину. По состоянию на 2014 год в одном блоке было 25 биткоинов по сравнению с пятьюдесятью в 2012-м. В 2016 году их количество сократится до 12,5. Такой график означает, что основная часть выпуска биткоинов приходится на первые годы – более половины из общего объема в 21 миллион выпущено в первые шесть лет функционирования системы. С течением времени редкость биткоинов будет только возрастать, что теоретически должно поддержать курс биткоина, если спрос также будет расти.
Новые биткоины – это не единственный способ компенсации усилий майнеров. Базовое программное обеспечение также содержит функцию взимания комиссионных за транзакции с отправителя. Сейчас небольшие обязательные комиссионные взимаются за проведение лишь нескольких видов транзакций. К ним относятся так называемые пылевые транзакции – переводы на очень маленькие суммы; комиссионные с них рассматриваются как средство против спама. Это необходимо для предотвращения сетевых атак со стороны нечистоплотных программистов, стремящихся обвалить сеть, рассылая огромное количество бессмысленных запросов или транзакций, а также транзакций, содержащих избыточный объем информации (таковыми считаются транзакции с объемом информации более 10 килобайт). Пользователи могут включать в сумму своей транзакции небольшие комиссионные, стремясь повысить вероятность того, что майнеры в первоочередном порядке обработают их и включат в блок, сократив тем самым время на ожидание окончательного подтверждения (не каждая операция получает подтверждение в течение 10 минут).
По мере того как темп выпуска новых биткоинов снижается, алгоритм почти наверняка потребуется откорректировать, увеличив долю комиссионных за транзакции в общей сумме вознаграждения майнеров. Тогда вознаграждение не утратит стимулирующего значения (после того как выпуск новых биткоинов упадет до нуля к 2140 году, комиссионные за транзакции станут