Чем занимаются майнеры?
Допустим, с биткоинами как валютой все более менее понятно. Биткоины растут в цене, потому что растет доверие и спрос миллионов людей, ведь эта новая валюта имеет уникальные свойства и идеальное обеспечение.
Однако, осталась одна абсолютно непонятная составляющая сети Биткоин - майнеры. Чем же занимаются майнеры, и почему Биткоин без них невозможен?
Вспомним, что сеть Биткоин хранит таблицу - номера счетов и соответствующие суммы.
Майнеры занимаются редактированием этой таблицы по запросу владельцев счетов, а этот процесс называется майнинг.
Если владельцу биткоинов требуется сделать перевод, он создает транзакцию - запрос на перевод с одного счета на другой. Программа-кошелек использует ключ от кошелька чтобы создать цифровую подпись транзакции, тем самым подтверждая что транзакция одобрена владельцем счета. Ключи от кошелька и цифровые подписи основаны на криптографии, отсюда и крипто-валюты.
Далее, программа-кошелек отправляет подписанную транзакцию в сеть.
Транзакции это запросы на внесение изменений в таблицу Биткоина. Программа-кошелек может отправить новую транзакцию любым участникам сети (узлам), поэтому централизованная фильтрация и цензура транзакций невозможна. Участники сети ретранслируют новые транзакции другим узлам, тем самым обеспечивая их быстрое распространение. Далее в дело вступают майнеры.
Майнеры хранят всю историю изменений таблицы Биткоина. Поскольку каждое изменение в таблице подписано цифровой подписью владельца счета, майнеры могут быть уверены что их копия таблицы содержит верные балансы всех счетов. Майнер проверяет цифровую подпись каждой новой транзакции, а также проверяет наличие на счету нужной суммы биткоинов. После всех проверок майнер может быть уверен, что запрос на редактирование таблицы можно обрабатывать.
Если бы в сети работал только один майнер, дальнейшие действия были бы очевидны. Нужно просто уменьшить сумму на счету отправителя, и увеличить сумму на счету получателя, и все - транзакция обработана. Именно так работает банк, когда вы делаете перевод со счета на счет.
Однако, все уникальные свойства Биткоина возможны только благодаря его децентрализации. Обработкой транзакций занимаются десятки тысяч майнеров, конкурируя между собой на открытом рынке и получая вознаграждение. Наличие десятков тысяч независимых друг от друга "редакторов" таблицы означает, что неизбежны конфликты.
Например, что делать если один майнер получил новую транзакцию, а другой - еще нет? Что делать если владелец счета отправил одному майнеру транзакцию с переводом на счет А, а другому - с переводом тех же биткоинов на счет Б? Что делать если один из майнеров не хочет обрабатывать какую-то транзакцию? Как тысячи редакторов могут прийти к одному мнению о состоянии таблицы, не имея центрального узла, разрешающего конфликты?
Это известная проблема в научной среде. До 2008 года миру не было известно ни одного решения. Криптографии, математики и программирования недостаточно, чтобы несколько независимых участников добровольно пришли к единому мнению. Однако, создатель Биткоина Сатоши Накамото показал миру, что недостающим элементом была экономика.
Сеть Биткоина требует от майнеров выполнить физическую работу, то есть потратить энергию, и за это вознаграждает их биткоинами. Хитрый набор взаимосвязанных правил и открытая конкуренция формируют у майнеров экономическую мотивацию. Майнерам выгодно обрабатывать все известные им новые транзакции, а не игнорировать их. Им также выгодно сходиться на общей версии таблицы, на которую вся сеть потратила больше всего энергии. Если майнер действует не по правилам, он тратит энергию впустую и несет экономические убытки, а его доля вознаграждения уходит другим майнерам.
Чтобы отредактировать таблицу Биткоина, нужно потратить энергию. Майнеры, которые редактируют по правилам, получают вознаграждение, оплачивают затраты на электричество и получают прибыль. Майнеры, нарушающие правила, тратят энергию, но не получают награду, поэтому несут убытки.
Вот как это работает.
Майнер собирает пачку (блок) новых проверенных транзакций. Далее, майнеру нужно добавить к новому блоку доказательство проделанной работы (англ. proof of work) [1]. Без этого сеть просто проигнорирует новый блок. Единственной энергозатратной деятельностью, которую может выполнять любой компьютер, являются сложные вычисления, поэтому именно такой метод был выбран в Биткоине.
Майнер выбирает случайное число, соединяет его с данными нового блока и выполняет сложные математические преобразования, чтобы получить другое число - хэш. Хэш должен быть меньше заданного сетью порога. Если это не так, майнер выбирает следующее случайное число и пробует снова. Особенности вычисления хэша таковы, что нельзя угадать или рассчитать число, которое даст нужный результат. Задачу невозможно решить никак кроме перебора всех вариантов, майнер просто пробует случайные числа одно за другим, пока не наткнется на правильное решение.
Правильный хэш, значение которого ниже заданного сетью порога, и есть доказательство проделанной работы. Особенность вышеописанного алгоритма такова, что создание хэша требует в среднем заданного количества вычислений, а проверить что хэш верный можно мгновенно. Создать верный блок сложно, а проверить его правильность - легко.
Отметим, что речь про поистине огромные числа. Хэш, используемый в Биткоине, это число, состоящее из 78 цифр - примерно столько атомов в нашей вселенной. Когда специалисты говорят, что хэш невозможно угадать, они не шутят - это серьезная математика, а не трюки программистов.
Все майнеры одновременно пытаются найти решение для очередного блока транзакций, конкурируя между собой и тратя энергию.
Майнер, нашедший подходящий хэш раньше всех, добавляет его в новый блок и отправляет блок в сеть. Другие участники сети получают новый блок, проверяют что хэш и все транзакции соответствуют правилам, и добавляют блок в "цепочку блоков" - блокчейн, а также обновляют балансы счетов. С этого момента, все транзакции, содержащиеся в новом блоке, считаются обработанными, а все майнеры приступают к обработке новых транзакций.
Майнер, создавший новый блок, получает вознаграждение в виде новых биткоинов. Технически, майнер добавляет в свой блок новую транзакцию, которой начисляет на свой счет установленное правилами вознаграждение, плюс сумму всех комиссий за транзакции в этом блоке. Майнер, создавший блок не по правилам, потратит энергию, но не получит вознаграждения, поскольку остальные участники такой блок отбросят. Только верный блок будет принят всеми участниками сети, а остальные майнеры начнут присоединять к этому блоку цепочку последующих блоков.
Любой майнер может попытаться изготовить цепочку блоков ("ветвь") с альтернативным списком транзакций по сравнению с теми, что уже были добавлены в блокчейн, чтобы например, отредактировать таблицу и повторно потратить свои биткоины. Чтобы заставить остальных участников сети принять альтернативную версию таблицы, такому майнеру нужно "обогнать" всех остальных майнеров - то есть создавать блоки быстрее, чем вся остальная сеть вместе взятая. Фактически, майнеру придется потратить электричества больше, чем вся остальная сеть - это назвается атака 51%.
Именно высокая стоимость подобной атаки защищает таблицу Биткоина от манипуляций. На 2021 год затраты атакующего майнера на энергию составят порядка миллиона долларов в час, плюс миллиарды долларов на покупку оборудования.
Сеть Биткоин открыта, кто-угодно может стать майнером. Чем больше майнеров, тем быстрее они, в среднем, находят нужный хэш и создают новые блоки. Чем меньше майнеров - тем медленнее создаются блоки. Чтобы стабилизировать этот процесс, правила Биткоина регулируют сложность задачи. Каждые 2016 блоков (примерно раз в 2 недели) участники сети оценивают, сколько времени в среднем ушло на 1 блок. Цель - один блок за 10 минут. Если блоки создавались быстрее, правила сети увеличивают сложность, если медленнее - уменьшают. Таким образом сеть адаптируется к изменениям мощности, а создание блоков в среднем занимает 10 минут.
Получается, что чем больше майнеров присоединяется к сети, тем выше становится сложность задачи, и тем меньшую долю вознаграждения получают остальные майнеры, хотя тратят столько же энергии сколько и раньше. Новые майнеры будут прибывать в сеть пока их доля вознаграждения за каждый последующий блок будет превышать затраты на электричество.
Из-за конкуренции, майнеры получают биткоины лишь немногим дешевле, чем их затраты на электричество и оборудование. Не стоит им завидовать, они получают биткоины чуть дешевле, чем вы покупаете на бирже, но несут соответствующие риски.
Майнеры могут повышать свою доходность если снизят затраты энергии на расчет одного хэша. При запуске сети, сложность была низкой, и обычный компьютер мог работать майнером и создавать новые блоки. Со временем для майнинга начали использовать графические процессоры, выполняющие данную работу в сотни и тысячи раз эффективнее. Затем было изобретено специализированное оборудование (англ. ASIC, Application-specific integrated circuit - специализированная интегральная схема). Сегодня ASIC-и расчитывают хэши в миллионы раз быстрее при тех же затратах электричества, поэтому майнинг в основном происходит именно на них.
Вознаграждение майнеров за каждый блок состоит из фиксированной части - выпускаемых в оборот биткоинов, и переменной части - комиссий с обработанных транзакций. При запуске сети фиксированная часть вознаграждения составляла 50 биткоинов за блок. Каждые 210000 блоков оно снижается в 2 раза (примерно каждые 4 года), в 2021 году это 6.25 биткоина. Всего таким образом в оборот поступит 21 миллион биткоинов. Пока оставшиеся биткоины все еще входят в оборот, майнинг является механизмом справедливого распределения новых биткоинов - тот кто купил более эффективное оборудование и потратил больше энергии, получает большую долю вознаграждения.
После того как все биткоины будут выпущены в оборот, дальнейшее вознаграждение майнеров будет формироваться только из комиссий за транзакции. Поскольку фиксированная часть вознаграждения майнеров резко снижается каждые 4 года, майнеры мотивированы повышать эффективность оборудования и искать дешевые возобновляемые источники энергии, либо использовать энергетические отходы.
Заметим, что сегодня майнеры платят за электричество не биткоинами, а государственными валютами. Чем выше цена биткоина, чем больше электричества майнер может купить за то же вознаграждение. Поэтому количество майнеров сильно связано с ценой на один биткоин - когда биткоин растет в цене, увеличивается и количество майнеров. Когда цена падает, неприбыльные майнеры отключают свое оборудование, конкуренция падает и вознаграждение остальных майнеров растет.
Таким образом, часть майнеров всегда остается прибыльной при любых ценах на биткоин и продолжает защищать сеть, а рост цены привлекает новых майнеров и повышает мощность и защиту сети.
Есть мнение, что майнинг Биткоина потребляет слишком много энергии и негативно влияет на экологию. Однако, не существует ни одного серьезного исследования, подтверждающего такие заявления. Корень проблемы - неверная оценка пользы Биткоина: если считать, что Биткоин это бесполезные спекуляции, то его потребление энергии будет казаться расточительным.
Посмотрим на цифры. На 2021 год биткоинами владеют более 100 миллионов человек, лишь 15 государственных валют имеют больше пользователей в мире, чем сеть Биткоин. Биткоин хранит более 1 триллиона долларов денежной ценности, и каждый день обрабатывает транзакции на общую сумму в 10-20 миллиардов долларов. Очевидно, что Биткоин имеет ценность для всех этих людей, и они имеют полное право тратить ресурсы в виде энергии на поддержку ценной для них сети. Майнеры ведь не "крадут" энергию, они её покупают на общих основаниях, и количество покупаемой энергии пропорционально количеству пользователей, готовых покупать биткоины у майнеров по рыночной цене.
Рассмотрим энергозатраты - в 2021 году затраты на майнинг оцениваются в 140 тераватт-часов, что составляет примерно 0.1% от мирового потребления энергии. Майнинг потребляет в 7 раз меньше энергии, чем холодильники, в 17 раз меньше кондиционеров воздуха, в 15 раз меньше, чем рассеивается электричества при его транспортировке по проводам [2]. Очевидно, что сегодня Биткоин не потребляет "слишком много" энергии, во всяком случае по сравнению с другими удобствами, к которым мы привыкли.
По прогнозам экспертов, когда Биткоин превратится в основу финансовой индустрии и станет общемировой валютой, его потребление энергии будет составлять порядка 1% от мирового объема производства [2]. То есть даже когда Биткоин достигнет пика энергопотребления, он все равно останется где-то между холодильниками и кондиционерами воздуха.
Что касается влияния Биткоина на экологию - майнинг это наиболее экологичная индустрия. На 2021 год 56% потребляемой Биткоином энергии является возобновляемой [3], и этот процент неуклонно растет. Выбросы CO2 от майнинга на порядок ниже, чем от производства алюминия, или банкоматов, или армии США.
Другой интересный момент - влияние майнинга на индустрию производства энергии. Энергию крайне сложно хранить и транспортировать, а потребление энергии сильно варьируется от сезона и времени суток. Теперь производители могут продавать ненужную энергию майнерам, которые готовы покупать ее в любых количествах в любое время суток, и готовы размещать свое оборудование максимально близко к источнику энергии. Майнинг глубоко трансформирует всю энергетическую индустрию, о чем мы поговорим в отдельной главе.
Судя по всему, Биткоин не угрожает энергетике и экологии. И все же, возникает вопрос - неужели такие существенные затраты энергии необходимы для защиты таблицы счетов Биткоина?
Нельзя ли как-нибудь "поэффективнее"?
Давайте остановимся на одном из ключевых свойств защиты Биткоина через майнинг:
При атаке таблицы Биткоина, чем более старые записи ты хочешь изменить, тем больше энергии, времени и оборудования нужно потратить.
Последние блоки транзакций "переделать" относительно недорого, если ты захватил 51% оборудования - порядка миллиона долларов на электричество в час. Но если хочешь переделать то, что случилось сутки, или неделю, или месяц назад, нужно майнить еще быстрее! Нужно успеть переделать все блоки, от "атакуемого" до текущего, быстрее, чем оставшаяся часть майнеров делает новые блоки. Это значит, что даже чудом получив контроль над основной частью майнеров, переделать всю таблицу до основания на практике невозможно.
Для сравнения, подумайте о том, что может произойти с вашим банковским счетом в кризис. Правительство может просто обнулить все счета, вне зависимости от того, как давно вы эти деньги внесли.
То же самое возможно с новомодной "альтернативной" системой защиты (англ. proof of stake - доказательство владения долей), которую продвигают создатели многих криптовалют. Получив большинство "голосов" в такой системе, атакующие могут просто отменить абсолютно все предыдущие транзакции, в том числе все зачисления на ваши счета.
Алгоритм майнинга - "доказательство проделанной работы" - защищает таблицу Биткоина через законы физики, ведь для изменения таблицы нужно проделать огромную физическую "работу" и потратить энергию.
В общем, защита Биткоина надежней альтернатив, хоть и стоит недешево. Но в этом мире ничего не дается бесплатно.
Нам представляется, что финансовая система, построенная вокруг банков и государственных валют, не требует огромных затрат энергии для редактирования таблиц счетов. Однако, это лишь иллюзия.
Государственные деньги требуют наличия банков, юристов, полиции, армии и бюрократии. Весь этот комплекс занимается "защитой" ваших прав собственности по отношению к вашим счетам в банках и наличным у вас в кошельках. Затраты энергии этой многослойной структуры крайне сложно посчитать, однако по самым грубым оценкам они в десятки раз превышают энергозатраты Биткоина.
Биткоину для защиты не нужны полиция и армия, ему не требуется монополия на насилие. Биткоин защищается энергией, которую перерабатывают майнеры. Атакам на Биткоин сопротивляется физика, а не юристы, политики и солдаты. Защита Биткоина надежна, но потребляет много энергии. Величина этих затрат определяется на конкурентном рынке, и соответствует тому, сколько наша цивилизация готова тратить на защиту прав собственности всех без исключения жителей Земли.