223 / 736SHARE

Mining Share

Как майнер подтверждает свою работу пулу

Пётр подключил майнер к пулу — сервису, объединяющему работу майнеров. На экране прибавляются принятые shares, а в кошельке пока ничего нового. Противоречия нет. Share сначала подтверждает работу; расчёт вознаграждения и его отправка — следующие шаги. Без таких текущих доказательств пулу было бы трудно оценивать вклад каждого, ведь поиск настоящего блока может занять много времени.

Mining Share — результат майнингового вычисления, удовлетворяющий требованию пула для конкретного задания. По таким проверяемым образцам пул оценивает выполненную работу. Требование обычно легче, чем для действительного блока сети Bitcoin, поэтому большинство shares не являются новыми блоками.

Устройство Петра делает огромное число попыток. Пулу не нужно сообщение о каждой: он получает отобранные результаты, выполнившие заранее заданное условие. Он проверяет их и статистически оценивает работу по частоте и сложности. Mining Share поэтому не часть недостроенного блока и не передаваемая доля биткоина. Это также не транзакция, записываемая в блокчейн — публичную историю транзакций Bitcoin, организованную в связанные блоки. Так майнер подтверждает пулу свой вычислительный вклад. [1]

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

Пётр не составляет эти сообщения вручную — это делает программа. Stratum V2 является протоколом, набором правил общения оборудования с пулом. Сообщение SubmitSharesStandard содержит job_id для определения задания, nonce как меняемое при поиске значение, ntime для временной метки в заголовке блока и version для версии заголовка — компактной части данных блока. Оно также указывает канал связи. Пулу нужен этот контекст для проверки: nonce без правильного задания не является самостоятельным доказательством работы. [2]

Представим, что Пётр сравнивает устройства с заданиями разной сложности. Сложность здесь служит весом: результат, отвечающий более строгому условию, засчитывается как больший объём работы. При пересчёте по одной шкале две принятые отправки со сложностью 1024 имеют тот же суммарный вес, что одна со сложностью 2048. Сообщений разное количество, учтённый вес работы одинаков. Даже эта сумма не является точной записью всех фактически сделанных вычислений: отдельные успехи случайны. Поэтому нужно выяснить, показывает ли счётчик shares принятые результаты или их пересчитанный вес. [3]

Иногда пул подтверждает несколько отправок сразу. В Stratum V2 для этого используется SubmitShares.Success. Поле new_submits_accepted_count считает вновь подтверждённые отправки, а new_shares_sum суммирует сложности соответствующих заданий. Первое считает результаты, второе — их вес. Оба относятся к подтверждаемой группе, а не автоматически к итогам за всю историю майнера. При чтении протокола поэтому не стоит ждать отдельного подтверждения каждого отправленного результата. [2]

Майнер Петра может сообщить об отправке результата, пока пул ещё его проверяет. Stratum V2 использует SubmitShares.Error для неверной отправки; sequence_number указывает, какой отправки касается ошибка. Если проверить сразу невозможно, сообщение об ошибке может прийти позже. Поэтому отделяй отправленные результаты от подтверждённо принятых и следи за отклонениями. Рост локального счётчика отправок сам по себе не доказывает, что пул всё учёл. [2]

Подтверждённая работа учитывается по правилам вознаграждения конкретного пула. Например, FPPS, Full Pay Per Share, у Braiins рассчитывает вознаграждение по переданной работе и данным сети, включая сложность и награды за блоки; также учитывает составляющую транзакционных комиссий. Пул удерживает свою комиссию, а перевод денег зависит от настроек выплат. Подтверждение share само по себе не отправляет BTC (биткоины) в кошелёк. Поэтому Пётр отдельно следит за принятой работой, начисленным вознаграждением и фактической выплатой. [4]

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

Для полной картины прочитайте эту статью вместе с Mining Pool, Share Difficulty, Proof of Work, Mining Target, Bitcoin. На эту статью также ссылаются ASIC Miner, Mining Pool, Braiins Pool, Stratum V1.

DOC · 001Bitcoin Developer Guide — Pool miningДокументация DOC · 002Stratum V2 — Mining ProtocolСпецификация DOC · 003Braiins Academy — Pool FAQДокументация DOC · 004Braiins Academy — Rewards and payoutsДокументация
Обновлено: Сначала источники · Не является инвестиционной рекомендацией