Сложность
Сложность (англ. difficulty) – это величина, которая показывает насколько сложно найти хэш, который будет следующей предложенной целью сети.
Содержание
Сложность сети Bitcoin [ править ]
В сети Bitcoin для всех блоков существует глобальная сложность. Блок для того, что бы считаться правильным, должен иметь хэш ниже заявленной цели.
Сложность в сети Bitcoin меняется каждые 2016 блоков. Сложность добычи криптовалюты рассчитывается по следующей формуле:
где difficulty – сложность, а target – 256-битное число.
Difficulty_1_target может принимать различные значения. Традиционно это хэш, 32 первых бита которого являются 0, остальную часть составляют единицы (это также называется pdiff или pool difficulty). Bitcoin-протокол представляет цель (target), как тип с плавающей точкой и ограниченной точностью. Зачастую, именно основываясь на этих данных, Bitcoin клиенты определяют сложность.
Хранение сложности добычи в блоках [ править ]
Каждый блок хранит в себе запакованную версию (называемую “Bits” или «Биты») шестнадцатеричной цели.
Используя следующую формулу, из каждого блока можно получить его цель. Так можно узнать, на что влияет сложность майнинга. Например, если запакованная цель в блоке имеет вид 0x1b0404cb, то ее шестнадцатеричная версия будет выглядеть следующим образом:
Максимальное значение для этого поля – 0x7fffff, минимальное же составляет 0x008000.
Максимально возможная цель (при сложности 1) определена как 0x1d00ffff, что в шестнадцатеричном варианте имеет вид:
Ниже представлен быстрый способ вычисления сложности сети Bitcoin. Для логарифмирования он использует измененную версию ряда Тейлора и основывается на логах для преобразования вычисления сложности.
Максимальная, текущая и минимальная сложности сети [ править ]
Текущую сложность можно узнать воспользовавшись Bitcoin-командой getDifficulty.
Ввиду того, что не существует минимальной цели (target), примерно рассчитать максимальную сложность можно следующим образом: maximum_target / 1 (т.к. 0 приведет уравнение к бесконечности), что является невообразимым числом (~ 2 в 224 степени).
Минимальная же сложность добычи равняется 1.
Изменение сложности добычи криптовалюты [ править ]
Сложность меняется каждые 2016 блоков и зависит от времени, которое потребовалось для нахождения предыдущих 2016 блоков. Если блок будет находиться каждые 10 минут (как это задумывалось изначально для равномерной эмиссии), нахождение 2016 блоков займет ровно 2 недели. Если предыдущие 2016 блоков были найдены за срок более 2х недель – сложность будет http://newsaboutcrypto.fun/how-to-short-crypto-on-coinbase/ уменьшена, если меньше – сложность будет увеличена. Чем больше (или меньше) времени было затрачено на нахождение предыдущих 2016 блоков, тем больше уменьшится (или увеличится) сложность.
Для нахождения блока хеш должен быть меньше цели (принцип работы proof-of-work). Хеш является случайным числом от 0 до 2*256-1. Сложность хеш таблицы.
Сложность заявлена таким образом, как будто мы находили предыдущие 2016 блоков с периодичностью раз в 10 минут.
Среднее время нахождения блока в одиночку рассчитывается по формуле: time = difficulty * 2**32 / hashrate, где difficulty это текущая сложность сети Bitcoin, hashrate это количество хешей, которое ваш майнер находит в секунду и time это среднее время (в секундах) между нахождением вами блока. Таким образом, можно сказать, что рост сложности майнинга ялвяется величиной прогнозируемой, высокий уровень сложности постоянно обновляется. Изменение скорости блоков возможно, после того как договорятся майнеры. И с идеологической точки зрения майнеры должны решить вопрос о решении масштабирования, так как они те, чье оборудование поддерживает сеть.