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

Корректировка сложности – это великое, но, тем не менее, недооцененное нововведение, обеспечивающее бесперебойную работу Биткоина.

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

В течение первого года работы сети сложность не увеличивалась, первое значительное изменение произошло первого января 2010 года, на высоте блока 32,256.

Самые большие изменения сложности составили:
  • вверх — 302% на высоте блока 68,544
  • вниз — 27% на высоте блока 689,472
Сложность биткоин-майнинга показывает, насколько сложно найти хэш, который обеспечит попадание блока в цепочку. При текущей сложности 30,977,051,760,460 1 из каждых 13,315,579,227,696,403,823,071,581 хэшей SHA256 будет генерировать действительный блок. Действительный блок – это тот блок, хэш которого ниже определенной цели.

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

Корректировка сложности достигает следующих целей:
  1. Поддерживает постоянство эмиссии новых биткоинов.
  2. Обеспечивает дальнейшее согласование стимулов майнеров с пользователями и честность первых.
Давайте чуть подробнее остановимся на втором пункте:

Майнеры хэшируют все данные блока вместе с нонсом (случайным числом) до тех пор, пока не найдут хэш блока, который меньше определенной цели. Существует прямая зависимость между целью и сложностью: чем меньше цель, тем сложнее майнить. Значение целевого числа хранится в блоке в поле Bits в сжатом формате. Тот факт, что само значение целевого числа хэшируется с остальными данными блока, делает сложность защищенной от подделки. Сложность обычно представляется в десятичном формате.
Завьялов Илья Николаевич о корректировке сложности биткоин-майнинга.
Целевое число = Максимальная цель / Сложность

Максимальная цель – это цель при сложности равной 1 (минимально возможной сложности). Это значение было выбрано Сатоши. И Максимальная цель, и сложность = 1 были закодированы им в генезис-блоке:
Завьялов Илья Николаевич о корректировке сложности биткоин-майнинга.
Сложность, равная 420 означает, что потребуется на 420 попыток больше (в среднем), чтобы найти подходящий хэш, чем при самой простой сложности 1. Как уже упоминалось, генезис-блок был намайнен при сложности 1. С тех пор каждые 2016 блоков сложность пересчитывается.

Когда блок добывается, майнер также должен добавить к нему временнýю метку. Эта временнáя метка каждый раз используется для пересчета сложности. Мы стремимся к тому, чтобы новый блок находился каждые 10 минут, поэтому после 2016 блоков мы проверяем, сколько времени в среднем проходило между появлением блоков.
Завьялов Илья Николаевич о корректировке сложности биткоин-майнинга.
Ожидаемое время: 2016 блоков x 10 минут = 20,160 минут.

Если блоки генерировались быстрее, допустим, каждые 8 минут, то мы получим 2016 x 8 = 16,128, то 20,160 / 16,128 = 1.25.

Новая сложность = 1.25 × Старая сложность

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

Но и сами временные метки не являются точной наукой.