Статьи

О сложности майнинга в сети Ethereum

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

Рассмотрим подробнее, как работает алгоритм изменения сложности майнинга в сети Ethereum и схожих блокчейнах.

Изменение сложности майнинга в сети Эфириум

Сложность майнинга на алгоритме PoW Ethash в сетях Ethereum и Ethereum Classic после осуществления обновления EIP 2 (реализовано в Homestead Difficulty Adjustment начиная с блока 1,150,000) подсчитывается по следующей формуле:

block_diff = parent_diff + parent_diff // 2048 * max(1 - (block_timestamp - parent_timestamp) // 10, -99) + int(2**((block.number // 100000) - 2))

где // — это оператор целочисленного деления (integer division operator), например:

6 // 2 = 3, 7 // 2 = 3, 8 // 2 = 4

Формулу можно представить в таком виде:

где:

dc — текущее значение сложности;

dp — предыдущее значение сложности;

tsc — время нахождения текущего блока;

tsp — время нахождения предыдущего блока;

np — номер блока, от которого ведется отсчет для дополнительного экспоненциального нарастания сложности майнинга каждые 100 тысяч блоков.

Первая выделенная часть формулы (Sub-formula A) касается постоянного изменения сложности майнинга в зависимости от текущего времени нахождения блоков. Она задает значение, согласно которого производится корректировка сложности вычислений в зависимости от времени нахождения блоков.

Вторая часть формулы (Sub-formula B) отвечает за экспоненциальное увеличение сложности майнинга каждые 100 тысяч блоков. Эта часть формулы определяет начальную точку экспоненциального (взрывного) увеличения сложности майнинга, то есть определяет время взрывного увеличения difficulty (срабатывания бомбы сложности или начала ледникового периода).

Для справки:

До обновления Homestead сложность в сети Ethereum считалась по схожей формуле. После активации хардфорка Homestead (14.03.2016, Pi day) время нахождения блоков (начиная с номера 1,150,001) уменьшилось с десятков до 9-14 секунд (в 5-6 раз!).

Затем, после Homestead в формулу изменения сложности (в часть Sub-formula B) вносились изменения путем хардфорков:

  1. Хардфорк Byzantium, осуществлен 16.10.2017 на блоке 4,370,000 (145-я эпоха майнинга). Точка актвиации бомбы сложности сдвинута назад на 3 млн. блоков;
  2. Хардфорк Constantinople, реализован 30.01.2019, блок 7,280,000, отсчет сдвинут еще на 2 млн. блоков;
  3. Хардфорк Muir Glacier, проведен 02.01.2020, блок 9,200,000, точка отсчета смещена дополнительно на 4 млн. блоков. Целевое время между блоками установлено на 13 секунд.

В общей сложности в результате трех хардфорков (Византия, Константинополь и «Ледник Мюир») отсчет графика нарастания дополнительной сложности был сдвинут назад на 9 млн. блоков.

Рассмотрим подробнее, как работают обе части формулы изменения сложности майнинга в сети Ethereum (и других, схожих блокчейнах на Ethash).

Постоянная корректировка сложности майнинга в сети Ethereum

Постоянная корректировка сложности майнинга в сети Ethereum производится на основе сравнения времени нахождения соседних блоков с усреднением, кратным 2048 по формуле (Sub-formula A):

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

В зависимости от заданного максимального времени между блоками, выражаемого переменной timestamp difference (block_timestamp — parent_timestamp), существует три возможных состояния, влияющих на изменение сложности:

  • если время между блоками < 14, значение difficulty растет на величину, равную parent_diff // 2048 * 1;
  • при времени между блоками, равном 14 секунд, сложность не меняется;
  • при времени между блоками >= 14 секунд, сложность падает пропорционально значению timestamp difference, от parent_diff // 2048 * -1 до максимально возможного значения, равного parent_diff // 2048 * -99.

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

Плавность регулировки сложности майнинга даже после сильного внешнего влияния на сеть обеспечивается усреднением, кратным 2048. Значительное влияние может быть связано с одномоментным включением больших мощностей или влиянием хардфорков, изменяющих дату начала отсчета экспоненциального нарастания сложности (Difficulty Bomb).

Еще одним фактором, значительно влияющим на сложность майнинга в долгосрочной перспективе является Sub-formula B — вторая часть формулы, определяющая какое дополнительное значение сложности будет добавлено при вычислениях на алгоритме Ethash в зависимости от номера текущего блока.

Увеличение сложности майнинга Ethereum каждые 100 тысяч блоков и бомба сложности

Увеличение сложности майнинга каждые 100 тысяч блоков заложено разработчиками в алгоритм майнинга Ethereum для стимулирования перехода сети с малоэффективного с точки зрения потребления энергии алгоритма консенсуса proof-of-work (POW) на proof-of-stake (POS). В блокчейне биткоина такая функция отсутствует.

Это требование становится все более актуальным с увеличением количества находящихся в обращении монет ETH. Для уменьшения инфляции нужно, чтобы часть владельцев аккумулировала большие суммы для содержания мастернод.

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

Это возможно благодаря тому, что в «Sub-formula B» предусмотрена ступенчатое (экспоненциальное) увеличение difficulty каждые 100,000 блоков (15 дней).

Sub-formula B, ответственная за время наступления ледникового периода:

где np+1 — это номер блока, с которого активирована работа счетчика бомбы сложности. Сначала ее влияние на сложность минимально, так как слишком мал показатель степени у двойки. На двухсоттысячном блоке, взятом для начала отсчета, показатель степени равен единице, влияние на текущее значение difficulty незаметно, но экспоненциальный рост уже начат. Через 1 млн. блоков показатель степени становится равным 8, следовательно сложность вырастает на 28 = 256. Еще через 1 млн блоков сложность вырастает на 218 = 262144 и т.д.

Экспоненциальный график функции y = 2x:

Экспоненциальное изменение сложности майнинга Ethereum на практике:

Учитывая, что одна эпоха майнинга занимает 30,000 блоков (4-5 дней), увеличение сложности под влиянием «Sub-formula B» происходит раз в 3,33 эпохи (1 раз в полмесяца). Не стоит забывать, что с каждой эпохой на 8 Мб растет размер DAG, что дополнительно усложняет вычисления и уменьшает количество шар, найденных майнерами.

Как на практике производится перенос даты взрывного увеличения сложности майнинга?

При существенном увеличении сложности майнинга из-за влияния второй части формулы подсчета сложности майнинга (Sub-formula B) значительно возрастает время между найденными блоками, что существенно уменьшает быстродействие сети и время прохождения транзакций.

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

Например, во время хардфорка Byzantium, который был проведен на блоке 4,370,000 (145-я эпоха майнинга, сложность более 2,994 квадриллионов) формула была изменена следующим образом (коричневым цветом выделены новые части, зеленым — подвергшиеся изменению):

В качестве точки отсчета после Byzantium стал использоваться fake block номер 1,370,000.

В результате внесенных в раздел Б формулы изменений, отсчет увеличения значения показателя степени, определяющего экспоненциальный рост сложности, был сдвинут назад на 3 млн.блоков. На практике был осуществлен прыжок во времени в прошлое на 529 дней — к вычислениям на уровне сложности 20.04.2016 года (блок 1,370,001) — дополнительная сложность в секции Б формулы стала равна примерно 213.

Аналогичные события произошли и во время форка Constantinople (введен фейковый блок номер 2,280,000, дополнительная сложность по второй части формулы стала равной 222), и во время форка Muir Glacier (fake number 200,000, дополнительная сложность упала до единиц).

После хардфорка Muir Glacier 02.01.2020 начало отсчета сдвинулось на 200-тысячный блок:

9,200,000 («Muir Glacier» fork_block) — 9,000,000 = 200,000

Заключение

Пересчет сложности майнинга в сети Эфириум производится на каждом блоке. Сложность вычислений у Ethereum и подобных криптовалют растет из-за двух факторов:

  1. Вход в сеть новых дополнительных мощностей, который приводит к увеличению сложности вычислений для нахождения нужных хешей за определнное разработчиками время;
  2. Периодическое (раз в полмесяца) увеличение сложности майнинга в связи с воздействием так называемой «бомбы сложности».

Рост сложности в сети Ethereum, обусловленный возрастанием difficulty каждые 100 тысяч блоков приведет к тому, что к началу лета 2021 года значительно упадет доход от майнинга. Это связано с уменьшением количества найденных шар из-за возросшей сложности вычислений. В более выгодном положении будут находится майнеры с мощными GPU, для которых такое усложнение пройдет практически незамеченным.

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

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Chinese (Traditional) ZH-TW English EN French FR German DE Russian RU Spanish ES