Книга: Биткоин для всех. Популярно о первой распределенной одноранговой денежной системе
Назад: Криптожаргон и сленг криптобирж
Дальше: Используемая литература

Основные параметры майнинга

В ходе майнинга в заголовок блока записывается ряд параметров:



Nonce – числовой параметр, искомый в ходе майнинга (алгоритме PoW) и записываемый в заголовок блока. Собственно, целью майнинга, как соревновательного процесса за право добавить блок транзакций в блокчейн, и есть подбор такого Nonce, чтобы искомый хэш блока (Block Hash) был меньше некоторого заданного числа Target, что равнозначно получению хэша блока, начинающегося с определенного числа нулевых битов.



Difficulty Target, также называемая difficulty bits или bits – целевая сложность – максимальное число, которое не должен превышать искомый при майнинге хэш блока (Block Hash). Фактически определяет количество нулевых битов в начале искомого хэша. Часто сокращенно называется Target.



Собственно Target – это само число, а bits – особый формат записи Target в заголовок блока. В bits записывается сразу два числа: первый байт – экспонента (exponent), оставшиеся три байта – мантисса (mantissa). Для того, чтобы получить Target из bits, нужно воспользоваться следующей формулой:



Target = mantissa * 2 (8 * (exponent – 3))



Bitcoin Difficulty, или Difficulty bits, или просто Difficulty – параметр, характеризующий сложность майнинга, т.е. сложность решения криптографической задачи.



Этот параметр представляет из себя отношение



Max_Target / Current_Target,

 

где Max_Target – максимально возможный Target, а именно 0x00000000FFFF0000000000000000000000000000000

000000000000000000000 (0x1d00ffff в формате bits). Это значение Target использовалось при запуске Биткоина в январе 2009 года;

 

 

а Current_Target – это текущее значение Target. Например, для блока №475468, добавленного в момент написания этой главы книги (12 июля 2017), значение Target было равно 0x18018d30 в формате bits, а значение Difficulty равно 708659466230,332.

 

Именно bits, как правило, указывается во всех Block explorer.



Между Difficulty и Target существует обратная связь – чем выше сложность (Difficulty), тем меньше Target (больше количество нулевых битов в искомом хэше).



На самом деле, сначала вычисляется Bitcoin Difficulty (сложность майнинга), а затем из неё выводится текущий Target.



Первоначальная сложность (Difficulty) при запуске Биткоина в январе 2009 года была равна 1 (единице). Но в связи с увеличением суммарной компьютерной мощности майнинга, необходимо увеличивать и сложность, чтобы нахождение Nonce и запись нового блока происходило примерно каждые 10 минут.



Пересчет (коррекция) сложности происходит через каждые 2 016 блоков. Это по времени соответствует примерно 20 160 минут или две недели.

На самом деле, поскольку вычислительная мощность возрастает, время, затраченное на майнинг последних 2 016 блоков (Actual Time of Last 2016 Blocks), получается несколько меньше, чем 20 160 минут.

Отношение необходимого времени (20 160 минут) к реально затраченному на майнинг – это и есть поправочный коэффициент, который изменяет сложность майнинга. Таким образом, новое значение сложности (New Difficulty) рассчитывается по формуле:



New Difficulty = Old Difficulty * (20 160 minutes / Actual Time of Last 2016 Blocks)



Далее из New Difficulty рассчитывается новое значение Difficulty Target по формуле:



Difficulty Target = Max_Target / New Difficulty

где Max_Target = 0x1d00ffff (в формате bits)

Изменение сложности майнинга биткоина





Merkle Root – хэш-код транзакций текущего блока, рассчитанный с использованием алгоритма, известного, как дерево Мёркла (Merkle tree) или бинарное дерево хэшей. Подробнее об этом читайте в главе «Блок».





Height – номер блока в блокчейне.





Timestamp – временная метка записи блока (дата и время). Записывается в формате UNIX-время (секунды от эпохи UNIX).





Number Of Transactions – число транзакций, записанных в блок.





Previous Block – предыдущий блок.





Подведем краткие итоги…





В процессе майнинга решается криптографическая задача по подбору некоторого параметра Nonce, который, будучи записанным в заголовок блока, приводит к тому, что получившийся хэш-код блока (Block Hash) удовлетворяет заданному условию, а именно – меньше или равен числу Target, которое записывается в формате bits.

В свою очередь, число Target связано со сложностью майнинга (Bitcoin Difficulty или попросту Difficulty), которая пересчитывается через каждые 2 016 блоков (примерно 2 недели) и зависит от суммарного времени майнинга этих блоков – чем быстрее происходит майнинг (за счет увеличения вычислительной мощности), тем более высокая сложность (Difficulty) устанавливается и тем меньше число Target.





Следующие понятия используются в расчетах эффективности майнинга:





Hashrate (хэшрейт или вычислительная мощность) – вычислительная производительность компьютерного оборудования для майнинга криптовалют. Измеряется в хэшах (hash) в секунду.





Основные используемые единицы:

 

kH/s (килохэш/сек) – 1 тысяча хэш/сек или 1 000 хэш/сек.

MH/s (мегахэш/сек) – 1 миллион хэш/сек или 1 000 000 хэш/сек.

GH/s (гигахэш/сек) – 1 миллиард хэш/сек или 1 000 000 000 хэш/сек.

TH/s (терахэш/сек) – 1 триллион хэш/сек или 1 000 000 000 000 хэш/сек.

PH/s (петахэш/сек) – 1 квадриллион хэш/сек или 1 000 000 000 000 000 хэш/сек.

EH/s (эксахэш/сек) – 1 квинтиллион хэш/с или 1 000 000 000 000 000 000 хэш/сек.

 

По состоянию на конец октября 2018 хэшрейт Биткойна установился на уровне в 55 EH/s, это на 550% больше, чем в 2017 году.





Изменение суммарного хэшрейта майнинга биткоина





Electricity Rate (стоимость электроэнергии) – обычно измеряется в стоимости 1 kW/h ($ за кВт/час).





Power consumption (энергопотребление) – Электрическая мощность, потребляемая оборудованием майнинга. Обычно измеряется в ваттах.





Pool fees (комиссия пула) – прибыль пула майнеров распределяется между всеми участниками с учетом того, какой объем вычислений произвел каждый майнер (то есть, исходя из хэшрейтов участников).





Time Frame (временные рамки) – количество времени, потраченного на майнинг. При расчете эффективности (доходности) добычи, необходимо определить временные рамки майнинга. От этого зависит не только количество потенциально добытых биткоинов, но и энергозатраты.





Profitability decline per year (снижение рентабельности в течение года) – на снижение рентабельности, а значит и доходности, влияет увеличение сложности майнинга (см. график выше), а также курсовые колебания криптовалют.

Назад: Криптожаргон и сленг криптобирж
Дальше: Используемая литература