07 / 736HASH

Майнинг

Mining

Как ожидающие платежи попадают в подтверждённый блок, за что платят майнерам и почему остальные должны проверить результат.

Майнинг — соревнование за добавление следующего блока в историю Bitcoin. Майнеры собирают транзакции в блоки и выполняют вычислительную работу, ища результат, который остальные легко проверят. Принятый блок может принести майнеру новые биткоины и комиссии включённых платежей. Но правила устанавливает не майнер: другие компьютеры сети самостоятельно проверяют предложение и отклоняют недействительные блоки.

Mining: модель операционного результатаСравните ожидаемую долю субсидии блока с электричеством при заданных хешрейте, мощности и комиссии пула.

При майнинге не выкапывают монеты, спрятанные в компьютере. Задача — предложить следующий действительный блок: набор транзакций, продолжающий существующую историю. Для своего предложения майнер ищет результат вычисления, который трудно получить. Найдя его, он рассылает блок другим. Они проверяют и вычисление, и транзакции, а затем по одинаковым правилам определяют, могут ли принять блок. Новые биткоины — часть вознаграждения, но их выпуск не единственное назначение майнинга. Для пользователя важен прежде всего переход от ожидающего платежа к платежу, записанному в проверяемой истории. [1] [2]

Отправленный платёж сначала распространяется между узлами. Узел — компьютер, участвующий в сети Bitcoin, а его mempool — местное хранилище неподтверждённых транзакций. Единой очереди, которой кто-то управлял бы для всех, нет. Майнер собирает блок-кандидат из доступных транзакций с учётом комиссий и ограниченного места. Если транзакция тратит выход другой, ещё не подтверждённой транзакции, та предыдущая должна стоять в блоке раньше. Команда getblocktemplate предоставляет данные для сборки блока, включая такие зависимости. Выбор ограничивают также правила веса блока и затрат на проверку подписей. [1]

Первая транзакция блока называется Coinbase Transaction. Она не связана со счётом на одноимённой бирже: это особая транзакция, которой майнер назначает себе разрешённое вознаграждение. Оно состоит из субсидии блока, вновь созданных биткоинов, и комиссий остальных транзакций блока. Комиссия — разница между стоимостью входов и выходов, поэтому она лишь передаёт существующие биткоины. Если майнер потребует слишком много, узлы отклонят весь блок. Даже правильную награду нельзя сразу потратить: выход Coinbase Transaction можно использовать не раньше блока, высота которого на 100 больше. [2]

Представьте лотерею, где никто заранее не знает выигрышного результата, но после объявления каждый быстро его проверит. Майнеры вычисляют хеш — цифровой отпечаток данных, который можно прочитать и как большое число. Для блока Bitcoin оно должно быть меньше или равно границе под названием target. Это требование Proof of Work. Конкретно хеш-функция SHA-256 дважды применяется к 80-байтовому заголовку блока с основными сводными данными. Майнеры не ищут решение для каждого платежа. Они меняют данные для вычисления и проверяют, выполняет ли новый результат условие. [3]

ASIC — чип для определённой вычислительной задачи; устройство для майнинга Bitcoin многократно применяет двойной SHA-256 к вариантам 80-байтового заголовка. Одно из изменяемых полей — nonce, четырёхбайтовое число в заголовке. Диапазон его значений конечен. Исчерпав его, можно изменить extra nonce, дополнительные данные внутри Coinbase Transaction. Изменится Merkle Root, общий отпечаток транзакций, а затем и заголовок, что откроет новые варианты. Ни одна неудачная попытка не приближает устройство к гарантированной победе. И десять минут не обещаны отдельному майнеру: это целевое среднее всей сети. [3]

Майнеру выгодно собирать действительные блоки: отклонённое предложение не приносит пригодной к использованию награды. Однако его проверка не заменяет проверки остальных. Full Node — компьютер, который сам проверяет правила Bitcoin, включая транзакции, вознаграждение и Proof of Work. Например, он отклонит блок, создающий больше биткоинов, чем разрешено, даже если майнер вложил большую вычислительную мощность. Собственный узел позволяет пользователю не полагаться на утверждение майнера, что с блоком всё в порядке. [2] [4]

Одиночный майнер может очень долго ждать успеха. Mining Pool позволяет распределять работу и доходы между участниками. Чтобы оценить вклад устройств, оператор принимает также результаты, выполняющие более лёгкое внутреннее условие. Такой результат называется share. Большинство результатов share недостаточно для сети Bitcoin; лишь некоторые удовлетворяют и её более строгому требованию. Выплаты зависят от выбранной модели, согласованных условий и комиссий пула. Участие в пуле не даёт права менять правила Bitcoin. Оператор также не обязательно владеет подключёнными устройствами. Его доля найденных блоков сама по себе не доказывает владение оборудованием. [3]

После успешного вычисления полный блок ещё должен дойти до других узлов. Два майнера могут почти одновременно найти разные действительные блоки с одним предшественником. Часть сети тогда ненадолго знает одну ветвь, а другая часть — вторую. Узлы следуют действительной ветви с наибольшей накопленной работой, то есть суммой работы, приписанной её блокам. Следующий найденный блок может склонить выбор в пользу одной ветви. Блок в оставленной ветви может сам быть действительным, но его награда не войдёт в активную историю. Поэтому важно быстро распространять результат и не продолжать работу над устаревшим предложением после получения новой вершины цепочки. [4]

Hashrate показывает число попыток хеширования в секунду. Доля майнера в общей мощности сети помогает оценить частоту успехов, но не гарантирует регулярного дохода. Доход — не прибыль: нужно вычесть электричество, охлаждение, устройства, обслуживание и комиссии пула. Простои могут дополнительно ухудшить результат. Следите и за единицами: TH/s измеряет вычислительную производительность, а ватты — потребляемую электрическую мощность. Производительное устройство может быть убыточным при дорогом электричестве, а один удачный случай мало говорит о долгосрочной рентабельности. [3]

На своём узле можно сравнить предложение из getblocktemplate с заголовком, Coinbase Transaction и обычными транзакциями найденного блока. Команды вроде getblocktemplate относятся к техническому интерфейсу узла, а не к сервису, которому нужно доверять деньги. submitblock передаёт готовый блок узлу для проверки. Местное принятие не гарантирует, что блок навсегда останется в истории всей сети. В пуле различайте отправленные результаты share, принятые блоки Bitcoin и фактически выплаченные суммы. Вместе с эксплуатационными расходами они показывают экономический результат майнинга. [5]

Для полной картины прочитайте эту статью вместе с Proof of Work, Difficulty Adjustment, Block Subsidy, Transaction Fees, Mempool. На эту статью также ссылаются Proof of Work, Difficulty Adjustment, Block Subsidy, Halving.

DOC · 001Bitcoin Core v29.0: block assemblerПервичный источник DOC · 002Bitcoin Core v29.0: block validationПервичный источник DOC · 003Bitcoin Developer Guide: MiningПервичный источник DOC · 004Bitcoin whitepaperПервичный источник DOC · 005BIP 22: getblocktemplateПервичный источник
Обновлено: Сначала источники · Не является инвестиционной рекомендацией