Тимур Данилов 28.11.2020
«Тише едешь, дальше будешь», или: «Что такое Stale Shares?».
Дословный перевод звучит как «запоздалая шара», который является рабочим сленгом как для опытных, так и не для опытных майнеров.
Чтобы понять суть, укажем, что Stale Shares — это такая шара, которая пришла слишком поздно от участника системы, когда соответствующий блок был кем-то подписан.
Образно говоря, встроенная клиент-программа ищет подпись ранее подписанного блока. Программа может бесконечно искать потерянную подпись или будет ожидать команду «отбой».
Что такое шары?
Шара — это результат процесса майнинга. Этот результат отправляется от майнера на пул и способствует поиску нового блока на блокчейне (в процессе подтверждая транзакции).
Вы можете представить шару как математическую задачу, решаемую с помощью случайного числа. Майнер пробует много разных случайных чисел, пока решение не будет правильным. Чем больше случайных чисел может попробовать майнер за выделенное время, тем больше вероятность правильного решения математической задачи.
Майнеры решают математические задачи и отправляют решения обратно на пул. Если они решают задачу верно, они получают награду за блок.
Что такое принятые шары?
Как говорит название, принятые шары — это шары, которые были решены верно и вовремя. На NiceHash вы получаете оплату за каждую успешно принятую шару, которая была отправлена на наш stratum-сервер.
Что такое шара (share) в майнинге
В статье “Как работает майнинг пул на пальцах” мы писали следующее:
Поскольку майнинг-устройство — видеокарта — в одиночку будет очень долго искать правильное решение блока, для ускорения процесса каждое такое устройство получает задачку со значительно меньшей сложностью. В свою очередь майнинг-пул проверяет, не является ли каждое решение заодно и полным решением задачи. Таким образом даже слабенькие устройства, работающие одновременно над одной задачей, имеют шанс найти её решение, которое позволит создать новый блок.
Майнинг-пул получает решения от всех майнеров, которые к нему подключены. Если одно из этих многих решений оказывается правильным, пул получает вознаграждение за созданный блок.
Шара (share) — возможное решение блока. Ключевое слово — “возможное”.
Очень часто люди видят в майнере SHARE FOUND, радостно кричат и ошибочно полагают, что нашли блок! Как было в романе «Чапаев и пустота» Виктора Пелевина: выглядит как решение блока, но на самом деле нет ни блока, ни решения.
Например, если решением блока должно быть число с десятью нулями на конце, то шара может быть числом с пятью нулями на конце. Оставшиеся пять цифр — полный рандом, хотя в теории там могут быть еще пять нулей. Одна из шар рано или поздно будет иметь не только пять, но и все десять нулей. Вот она и будет решением блока.
Очень часто юные майнеры думают, что надписи “Share Found” и “Share accepted” значат, что они нашли блок. А если посмотреть на скриншот ниже, то найденных блоков и вовсе “окажется” два, ну а майнерам в таком случае якобы полагается много-много денег.
Интерфейс майнера Claymore. Источник: Claymore
Нет, не полагается. Шара нужна майнинг-пулу, чтобы оценить вклад отдельного майнера в общую работу пула по нахождению блока.
На основании постоянно отправляемых шар майнером пулу последний строит график хешрейта майнера, оценивает вклад майнера в поиск блока и понимает, находится майнер в онлайне или нет.
Существует большое количество способов оценки вклада майнера или распределения вознаграждения: PPS, PROP, PPLNS, PPLNT и другие. Это большой материал для отдельной статьи. Пока рассмотрим одну из систем — PPLNS.
Что такое отклоненные шары?
Отклоненные шары — это термин для всех шар, которые отклоняются по любой из причин ниже:
- Устаревшая шара (Stale share): Шара была прислана слишком поздно (возможно, из-за или высокого пинга или проблем с соединением). Это единственный тип шар, который допускается в небольших количествах и считается нормальным.
- Шара выше цели (Share above target): Проблема находится в вашем программном обеспечении для майнинга. Проверьте его и убедитесь, что оно настроено правильно. Возможно также, что программное обеспечение не совместимо с NiceHash.
- Дублирующаяся шара (Duplicated share): Шара была прислана более одного раза и указывает на ошибку в вашем программном обеспечении для майнинга или на несовместимость с NiceHash.
- Другое (Other): Любой другой тип отклонений обычно означает, что в вашем программном обеспечении ошибка.
Наиболее часто встречающиеся отклоненные шары — это ‘шары выше цели’ и ‘устаревшие шары’.
Что такое хорошее соотношение принято/отклонено?
Вы должны стремиться к 100% принятых шар и 0% отклоненных шар. В долгосрочной перспективе это практически невозможно, поскольку между майнером и stratum-сервером NiceHash всегда будет латентность.
Из всех типов отклонений допускаются только устаревшие шары (до 1%-2%, в зависимости от алгоритма). Любые другие отклоненные шары возникают в результате неправильной конфигурации системы и могут быть потенциально устранены.
Признаки появления запоздалых шар
В системе пула может быть такое, система не отправляет команду «отбой» или рабочая клиент-программа, по каким-то причинам, не понимает действие возникновения причины, то есть, не понимает команду «отбой» и тогда примерно 0,5-1,5% шар будут признаны устаревшими.
Сам принцип отбоя реализован через программу long polling.
Иногда большое количество устаревших шар в сети, например ethermine stale shares, если параметры мощности пула очень высокие, а ваш пинг ниже средних показателей.
В ряде случаев проблема может заключаться в других причинах, например, ваша ферма фризит.
Причины могут быть разные, тот же «глюк» снятия программы статистики, например с чего-нибудь системного (в данном случае с параметров сети), кроме этого могут возникать иные причины – пиковые процентные нагрузки; проблемы с сетевым драйвером; неожиданные «капризы» антивирусной программы; вы обратились к неисправному жёсткому диску или к другим системным параметрам вход-выход.
Как устранить устаревшие шары?
Устаревшие шары в основном появляются из-за высокой латентности между вашим ригом и stratum-сервером NiceHash. Нормальная латентность между майнером и NiceHash должна быть в районе 10-100 мс (чем меньше, тем лучше).
Устаревшие шары могут возникнуть в результате использования VPN или медленного интернет-соединения. Попробуйте отключиться от VPN или использовать более быстрое интернет-соединение.
Обратите внимание, что некоторые алгоритмы с быстрым изменением работы склонны к высокой латентности больше других.
Сложность шары
Найденная шара еще не означает, что будет открыт новый блок. Это только возможное решение. Поэтому считать будущий доход, отталкиваясь от количества принятых share, нельзя. Рассмотрим простой пример, как сложность решений влияет на добычу криптовалюты: хэшрейт пула – 5 Ph/s, мощность видеокарты класса GeForce 1070 – около 35 Mh/s. Установлено 5 карт. Составляем пропорцию: 35 000 000*5*100%/5 000 000 000 000 000=0,0000035%. Соответственно, чтобы получать хотя бы 1% от доходов пула, нужно около 300 000 ферм.
Предложенный вариант имеет весомый недостаток, предполагается, что вся мощность пула приносит валидные решения. Однако на практике все по-другому: полезные подписи присылают как владельцы крупных шахт, так и маленькие фермеры. Чтобы найти решение одного блока, нужно быстрее других пулов подобрать из шар цифровой ключ. Чтобы распределять прибыль адекватно вкладу в общее дело, каждая найденная шара записывается в статистику майнера, и после нахождения блока ему выдается соразмерная награда.
Еще один важный момент состоит в том, что существует несколько пулов, которые добывают альткоины, при этом найденный блок может быть только один. Не всегда его получает сообщество, к которому подключена программа-шахтер. Поэтому при расчете прибыли учитываются те share, которые майнер передал для блока, найденного на используемом пуле.
При расчете вознаграждения сложность шар подбирается еще и с учетом времени, которое требуется для нахождения одного блока. Все эти нюансы привели к тому, что появились различные системы формирования выплат: PPS, PROP, PPLNT и др. Наиболее часто используется PPLNS.
Как работают выплаты PPLNS
PPLNS переводится как «Pay Per Last N Shares», или по-русски «Оплата за последние N шар», где N — произвольное число, заданное администраторами майнинг-пула. Например, N = 20000. Что это означает?
При нахождении блока выплаты майнерам производятся согласно доле их вклада в последние 20000 шар пула. То есть если награда за блок Эфира — 3 ETH, а ваших шар в последних 20000 на пуле будет 1000, то вы получите 5% от всего блока — 0.15 ETH. Математика довольно простая. На 2Miners можно зайти в статистику и посмотреть в автоматическом режиме, какая доля ваших шар на пуле в данный момент. Например, для майнера с адресом кошелька 0x00b45d7f146b865c5d8d24c5595e900d5b06e3b4 — вбиваем его в верхнем правом углу пула и попадаем в статистику. Долю шар можно найти в желтой рамочке:
Блокчейн — цепочка блоков
Кто-то скажет “это всем ясно” и будет прав, однако давайте подробнее посмотрим на суть цепочки. В среднем каждые 10 минут в сети Биткоина появляется новый блок, а у Эфириума на это уходит 14 секунд. В каждом блоке есть информация о том, какой блок был перед ним. Благодаря этому и выстраивается цепочка блоков — индекс. Можно сравнить его с нумерованным списком или Excel-таблицей. Пропусков не бывает. За номером 1 всегда идёт номер 2, а за 3 будет 4.
Каждая нода=узел=компьютер в сети криптовалюты связан с другими и постоянно обменивается с ними информацией. Подробнее про работу криптовалютных нод и возможные проблемы читайте здесь. Допустим, последний блок в сети криптовалюты имеет номер 100. Все майнеры мира решают одну и ту же задачу и ищут решение блока 101. Как только его найдут, майнер (или майнинг-пул) отправляет через свою ноду решение в сеть. В течение нескольких секунд, а обычно даже миллисекунд, все узлы сети получают информацию о новом блоке 101. Проверяют, что блок честный, в нём нет никакого обмана, после чего дальше ждут блока 102.
Вопрос следующий: что произойдёт, если 2 майнера нашли решение блока 101 в одно и то же время? Например, в сети 100 узлов. Майнер А нашел решение блока чуть раньше и успел передать информацию о блоке на 60 узлов. Майнер Б сделал работу позже и успел сказать о найденном решении блока только на 40 узлов. Значит ли это, что А — молодец, а Б — нет? Не факт. Рассмотрим эти тонкости подробнее на примере монет BTC и ETH.
Важный момент. Взять и присвоить себе чужое решение блока не получится. Сети криптовалют защищены от такого рода воровства. Решение блока от майнера А не подойдёт майнеру Б, он не сможет выдать его за своё.
Отличия шары от хеша
Система автоматически регулирует показатель сложности вычислений ключе подписи блоков, который затрудняет расчет хешей при увеличении общей мощности сети. Например, блоки биткоина должны закрываться каждые 10 минут. Если к сети присоединяется больше майнеров или они апгрейдят оборудование, скорость расчетов растет и время закрытия блока уменьшается. В ответ алгоритм повышает сложность расчетов и восстанавливает длительность закрытия блока.
Принимая хеши, алгоритм блокчейна оценивает трудоемкость вычислений и отсеивает ключи, сложность которых «хуже» заданной. Эти непринятые блокчейном хеши ресурс учитывает в качестве доказательства работы каждого майнера.
Блокчейн требует в качестве PoW валидный хеш, но для корректного учета производительности пулом этот показатель не подходит. Вероятность получения валидного ключа при соло-майнинге составляют примерно 1 хеш за полтора года непрерывных вычислений. Однако, участвуя в распределенных вычислениях, они вносят вклад в общее дело. Он зависит от и качества канала передачи данных (при нестабильном доступе к интернету ключи могут теряться, не достигая получателя). Пул ведет подсчет количества принятых шар от каждого майнера. Хорошие принимаются в качестве хешей, плохие служат мерилом работы.
Для этой цели ресурс устанавливает собственный критерий сложности, помогающий отобрать хорошие shares. Отличие хеша в том, что хеш соответствует требованиям блокчейна, а шара — требованиям пула.
Например, при сложности 1000, пул устанавливает собственную границу сложности для учета подходящих «частей». Например, 10. В таком случае все «претенденты в хеши», сложность которых ниже 1000 и выше 10, учитываются сайтом как шары. Если же участнику посчастливится «добыть» ключ со сложностью выше 1000, пул отправит его в блокчейн и получит за его публикацию вознаграждение.