Сложность
Сложность — это числовая мера, определяющая, сколько вычислительной работы в среднем необходимо для нахождения валидного хеша блока. Чем выше сложность, тем меньше допустимых хешей существует и тем больше попыток потребуется майнеру.
Как работает сложность
Заголовок раздела «Как работает сложность»Сеть Bitcoin спроектирована так, чтобы новый блок появлялся примерно каждые 10 минут, независимо от того, сколько майнеров работает в сети. Для поддержания этого ритма протокол автоматически пересчитывает сложность каждые 2016 блоков, что занимает приблизительно две недели.
Механизм пересчёта прост: протокол замеряет, сколько времени ушло на добычу последних 2016 блоков, и сравнивает с эталонным показателем (20 160 минут). Если блоки находились быстрее, чем за 10 минут в среднем, значит, хешрейт сети вырос, и сложность увеличивается. Если медленнее — сложность снижается. Таким образом, система остаётся саморегулирующейся.
Представьте себе мишень для стрельбы из лука. Сложность — это размер яблочка. Когда стрелков мало и попадания редки, яблочко делают побольше, чтобы кто-то попадал примерно раз в 10 минут. Когда стрелков становится много и попадания учащаются, яблочко уменьшают. Никто не меняет навыки стрелков — меняется только размер цели.
Технически сложность выражается через таргет — 256-битное число, ниже которого должен оказаться хеш блока. Чем выше сложность, тем меньше таргет и тем труднее найти подходящий хеш. Сложность 1 соответствует максимально лёгкому таргету, заданному при запуске сети в 2009 году.
Практический пример
Заголовок раздела «Практический пример»Допустим, за последний цикл в 2016 блоков фактическое время составило 12 дней вместо ожидаемых 14. Это означает, что блоки добывались быстрее нормы — вероятно, в сеть пришли новые майнеры. Протокол увеличит сложность примерно на 16,7%, чтобы при новом хешрейте блоки снова добывались в среднем раз в 10 минут. Для майнеров это значит, что каждая шара будет приносить чуть меньше в пересчёте на блок, но стабильность сети сохранится.