Сложность майнинга Bitcoin

Сложность майнинга Bitcoin

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

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

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

Но все эти понятия могут быть немного сложными для понимания, если мы не знаем основ майнинга.

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

Как работает технология майнинга

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

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

Процесс происходит следующим образом:

  1. Майнер выбирает из мемпула серию транзакций, ожидающих одобрения, и хеширует их.
  2. Затем он заполняет заголовок блока, который также содержит хеш всех транзакций, и пропускает его через хеш-функцию.
  3. Он сравнивает его с целевым хешем, который определяет, насколько сложным должен быть весь процесс. Если найденный хеш меньше целевого, то блок успешно подтвержден, в противном случае переходят к следующему шагу.
  4. Внутри заголовка есть параметр, известный как nonce, который имеет только одну функцию: быть измененным таким образом, чтобы каждый раз хеш заголовка был другим.

Теперь вернитесь к шагу 3 и повторяйте, пока не найдете правильный nonce.

Что определяет сложность майнинга и почему она увеличивается?

Для поддержания целостности сети необходимо изменить уровень сложности таким образом, чтобы майнеры могли найти блок примерно за 10 минут. Это важно, поскольку позволяет держать под контролем скорость эмиссии новых BTC.

Чтобы гарантировать, что новые Биткойны, генерируемые в качестве вознаграждения майнерам, будут генерироваться каждые 10 минут, протокол Bitcoin имеет два инструмента:

  1. Повышение сложности сети, когда майнерам становится легче добывать.
  2. Снижение сложности сети, когда майнерам становится труднее добывать.

В сети существует универсальная сложность в определенный момент времени, которой должны соответствовать все майнеры, если они хотят, чтобы их блоки были действительными.

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

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

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

Но обратный эффект также имеет место, когда хешрейт падает по какой-либо причине. Некоторые из них:

  • Сложность добычи слишком высока, и майнерам трудно к ней приспособиться.
  • Цена BTC падает, в результате чего многие майнеры прекращают работу.

График сложности сети Bitcoin. Источник: CoinWarz

Мы можем видеть это на графике выше, который измеряет сложность сети Биткойн. В середине 2021 года, когда цена BTC упала с более чем 60 000 долларов до 30 000 долларов, сложность резко снизилась.

Как рассчитывается сложность

Цель сложности сети Bitcoin используется для того, чтобы новые блоки транзакций Биткойна добывались (т.е. добавлялись в блокчейн) со средней скоростью 1 блок каждые 10 минут.

Цель сложности автоматически пересчитывается и корректируется (при необходимости) для каждого полного узла в сети, каждые 2 016 блоков.

Корректировка цели сложности осуществляется путем сравнения, с одной стороны, количества времени, которое потребовалось для добычи 2 016 блоков, и, с другой стороны, времени, которое должно потребоваться для добычи 2 016 блоков на основе желаемого интервала в 10 минут, т.е. 20 160 минут (10 минут x 2 016 блоков).

Время, затраченное на добычу указанных 2 016 блоков, определяется на основе временных меток, включенных майнерами в заголовок каждого блока транзакций.

Временная метка имеет формат Unix и представляет собой приблизительное время создания добытого блока, выраженное в количестве секунд, прошедших с даты 01 января 1970 года в полночь (UTC).

Если количество времени, затраченное на добычу 2 016 блоков, превышает желаемые 20 160 минут, сложность добычи снижается, что означает повышение целевой сложности. Если время, затраченное на добычу 2 016 блоков, меньше желаемых 20 160 минут, сложность добычи увеличивается, а значит, цель сложности будет снижена.

Также подразумевается, что корректировка целевого уровня сложности не зависит от объема или стоимости транзакций, обрабатываемых сетью Bitcoin.

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

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

В связи с этим стоит упомянуть, что в первоначальную реализацию основного клиента Bitcoin была включена очевидная ошибка, из-за которой расчет сложности через каждые 2 016 блоков основывался не на времени, затраченном на добычу предыдущих 2 016 блоков, а на предыдущих 2 015 блоках. 

Преимущества

Многие задаются вопросом: почему участники сети стремятся усложнить задачу, когда речь идет о поиске нового блока? Это действие, которое повторяется снова и снова только для того, чтобы получить BTC, что можно было бы сделать проще, если бы сложность была постоянной.

Но есть два очень важных преимущества изменения сложности:

  • Постоянная скорость появления новых блоков

В документе по Биткойну, написанном Сатоши Накамото, он объясняет, как сложность доказательства работы помогает генерировать постоянное производство новых блоков, которые добавляются в цепочку:

“Чтобы компенсировать увеличение скорости аппаратного обеспечения и меняющуюся со временем заинтересованность работающих узлов, сложность доказательства работы определяется скользящим средним значением, которое нацелено на среднее количество блоков в час. Если они генерируются слишком быстро, сложность возрастает.”

Биткойн был разработан таким образом, что новые блоки появляются в среднем каждые 10 минут. Хотя другие криптовалюты выбрали другие значения, как в случае с Litecoin, которое составляет 2,5 минуты.

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

Когда Сатоши Накамото добывал первый блок, в сети был только один компьютер, или ноутбук.

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

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

Если вам интересно, какой была сложность, когда Сатоши добывал блок генезиса, то она равнялась 1.

  1. Улучшение безопасности

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

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

Этот тип атаки известен как «Атака 51%», и в случае с ВТС сегодня это практически невозможно. Однако то же самое нельзя сказать о других более мелких криптовалютах.

Почему сложность модифицирована для достижения 10 минут?

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

  1. Сетевая скорость

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

  1. Стабильность сети

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

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

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

В этом случае две различные версии блокчейна BTC будут временно существовать между узлами сети (это часто называют «форкингом»), пока узлы в конечном итоге не объединятся в одну цепь, которая считается основной цепью биткоина, содержащей наибольшее количество блоков и, таким образом, демонстрирующей наибольшее количество доказательств работы.

Благодаря тому, что между новыми добытыми блоками проходит в среднем достаточно времени (10 минут), риск форка снижается, но не исключается полностью.

Заключение

Теперь вы знаете, что сложность майнинга зависит от целевой сложности, то есть, при которой вычислительная мощность сети Bitcoin способна решить алгоритм Proof-of-Work в среднем за 10 минут.

Он автоматически корректируется каждые 2 016 блоков, исходя из времени, затраченного на добычу предыдущих 2 016 блоков. Считается, что 10-минутный средний интервал между блоками был выбран намеренно, как компромисс между скоростью работы сети и стабильностью сети Bitcoin.