Bitcoin Cash: как работает автоподстройка сложности
При запуске Bitcoin Cash начальная сложность майнинга новой криптовалюты равнялась сложности последнего блока с оригинального блокчейна Bitcoin и первый блок под номером 478559 унаследовал очень высокую вычислительную сложность, что привело к тому, что майнерам Bitcoin Cash стало невыгодно майнить новую криптовалюту: фактически, требовалось находить блоки по той же сложности, но при мощности сети более чем в 10 раз меньше, чем у Bitcoin. При стоимости Bitcoin Cash в первые дни в 6-7 раз меньше, чем Bitcoin, сети в 10 раз меньше по мощности необходимо было тратить в те же вычислительные затраты, чтобы получить в 6-7 раз меньший доход.
В течение первой недели после запуска Bitcoin Cash произошла автоматическая подстройка сложности: этот механизм в Bitcoin Cash работает совершенно по-другому, нежели в оригинальном Bitcoin, где сложность меняется каждые 2016 блоков и может как увеличиваться, так уменьшаться. В Bitcoin блок должен находиться в среднем каждые 10 минут, майнинг 2016 блоков должно занимать ровно 2 недели. Если 2016 блоков находятся за менее, чем две недели, сложность увеличивается, если же, наоборот, время нахождения 2016 блоков превышает две недели, то сложность уменьшается.
В Bitcoin Cash поиск 2016 блоков по этому же алгоритму и оригинальной сложности занял бы очень длительное время (месяцы), поэтому разработчики полностью поменяли правила изменения сложности.
Теперь чтобы произошло изменение сложности принимаются во внимание всего лишь последние 18 блоков:
- для всех найденных блоков расчитывается значение Median Time Past (MTP)
- Median Time Past (MTP) для каждого блока это среднее время последних 11 блоков
- Если для 7 подряд блоков их MTP не укладываются в 12-часовой период, сложность понижается.
На скриншоте ниже можно показать, как просходит подсчёт MTP для одного блока:
Разберём на примере, как произошло изменение сложности в Bitcoin Cash в первый раз. Как можно видеть, создание первых блоков занимало очень много времени:
Это происходило потому, что предыдущие блоки (с номерами до 478599), унаследованные от оригинального блокчейна Bitcoin, добывались каждые 10 минут и при подсчёте MTP для 7 последних блоков уже цепочки Bitcoin Cash, при использовании 11 предыдущих блоков, они укладывались в 12-часовой период:
(между 21:05 от 7-го блока до 03:15 последнего на тот момент блока прошло около 6 часов, сложность остаётся преждней)
Но для блока под номером 478577 всё получилось иначе: время МTP 7 подряд блоков превысил 12 часов:
(между 21:35 от 7-го блока до 16:20 последнего на тот момент блока прошло аж 19 часов)
Поэтому, начиная с блока 478577, сложность поменялась:
В итоге на момент написания этого поста, сложность снизилась уже семь раз (на примерно 25% каждый раз) и от начальной сложности сейчас уже осталось примерно 13%.
Изменение Difficulty - только первая сторона монеты, очень многое зависит от текущих цен на Bitcoin / Bitcoin Cash, и, например, в этой статье автор рассуждает о том, что со снижением сложности, Bitcoin Cash становится более интересным для майнеров, и, в результате подобной балансировки сложности, новая криптовалюта может привлечь сообщество:
Finding Bitcoin blocks would be 14.5x as hard as bitcoin cash and assuming the price ratio stayed at around 10:1, it would be more rational to mine bitcoin cash blocks instead.
Anyway, будет интересно смотреть за тем, станет ли такая возможность заработать поводом к более серьёзному расколу Bitcoin, начать мониторить общие хешрейты сетей Bitcoin и Bitcoin Cash - хорошая идея, особенно на фоне текущего роста BTC и ожидании активации SegWit.