Pay Per Last N Shares (PPLNS) — способ распределения наград майнингового пула. Mining Pool координирует майнеров, которые ищут блоки — группы транзакций, добавляемые в публичную историю Bitcoin. Когда пул находит блок, он делит предназначенную для этого награду по недавней принятой работе участников. Поэтому у отдельной share, доказательства работы, нет заранее обещанной фиксированной оплаты, как в Pay Per Share (PPS).
Ян подключает свой майнер к Mining Pool — сервису, координирующему работу майнеров. При PPLNS пул не обещает фиксированную цену за каждый принятый результат. Вместо этого, найдя блок, он распределяет награду по записи недавней работы. Представим движущийся список: новые результаты добавляются, старейшие постепенно выбывают. Находка блока не стирает список. Одна и та же работа поэтому может получить долю нескольких наград или выбыть раньше, чем появится хоть один оплачиваемый блок. [1]
Результаты, которыми устройство регулярно подтверждает работу, называют shares. Хеш здесь — число, вычисленное из данных о предлагаемом блоке. Сеть требует, чтобы оно не превышало заданное целевое значение, поэтому майнер снова и снова меняет данные и повторяет вычисление. Они выполняют более простое условие пула, но обычно недостаточны для нового блока Bitcoin. N обозначает размер учитываемого окна работы. В простейшей модели это последние N shares одинаковой сложности всего пула, а не последние N человек. Если сложность различается, работу нужно соответствующим образом взвешивать. Окно также не означает фиксированного числа часов: его длительность зависит от скорости поступления новой работы. [1]
Представим полное окно из 1000 shares с одинаковым весом, из которых 100 принадлежат Яну. Пул только что нашёл блок и после своего удержания располагает 3 BTC для распределения. Доля Яна в этом примере равна 100 / 1000 × 3 = 0.3 BTC. Ян выполнил десятую часть учтённой работы, поэтому ему полагается десятая часть распределяемой награды. Это лишь наглядные числа: 3 BTC здесь не обозначает размер субсидии блока — новых биткоинов, создаваемых за блок, а 0.3 BTC — обещанный дневной доход. К следующей находке в окне могут быть другие результаты, а доступная сумма тоже может измениться. [1]
Ян отключает устройство для обслуживания. В правильно реализованном PPLNS это не стирает уже принятую работу. Она остаётся в окне и может участвовать в следующих наградах, пока новая работа её не вытеснит. Она старела бы точно так же, если бы Ян продолжал майнить; он лишь добавлял бы новые результаты. После подключения его присутствие в окне постепенно восстанавливается. Работа с перерывами может давать большие колебания, но сама по себе не является автоматическим штрафом за уход. [1]
PPLNS распределяет результат реальных находок блоков, поэтому успешный день пула отличается от дня без находок. Важен и способ учёта комиссий, уплаченных пользователями Bitcoin. F2Pool прямо описывает эту изменчивость. Full Pay Per Share (FPPS), напротив, оценивает принятую работу по расчёту, включающему субсидию и комиссии; Pay Per Share Plus (PPS+) может применять PPLNS только к комиссионной части. Один лишь процент удержания сервиса не говорит Яну, какой результат лучше. Нужно знать, к какой сумме этот процент применяется. [2] [3]
Рассчитанная доля, баланс счёта и платёж в собственном кошельке — разные этапы. Ян проверяет, принят ли блок, как рассчитана его часть и когда баланс доступен к выводу по минимуму и расписанию. Смена метода выплат тоже может действовать не сразу. Например, F2Pool публикует свой момент вступления изменения в силу. Честное сравнение должно учитывать работу до перехода и возможные поздние награды из её ещё активного окна. PPLNS не устраняет риск неплатежа пула, счета за электричество или стоимость оборудования. [3] [4]
Более длинное окно дольше сохраняет работу среди получателей возможной награды и распределяет её оплату между большим числом будущих находок. Это сглаживает часть колебаний, вызванных слишком коротким окном. Но не заставляет маленький пул регулярно находить блоки. Взамен приходится дольше ждать полного результата уже выполненной работы. Если личный кабинет показывает ожидаемую награду, это всё ещё оценка будущих находок, а не обещанная фиксированная сумма для немедленного вывода. [1]
Одна из целей PPLNS — ограничить pool-hopping: переходы между пулами только ради более выгодной фазы распределения. Окно, которое не обнуляется при нахождении блока, убирает простое преимущество входа в начале нового раунда. Но математическая справедливость зависит от варианта. Мени Розенфельд отличает простое фиксированное N от более сложного unit-PPLNS; наивными правилами можно воспользоваться при изменении сложности сети или стоимости блока. Unit-PPLNS записывает для каждой share данные, основанные на сложности сети и награде за блок в момент её отправки. Это позволяет учитывать в последующих выплатах условия, при которых была выполнена работа. Меняя параметры, оператор должен сохранить ожидаемую стоимость ранее принятой работы. Название сервиса не доказывает, что его расчёт действительно это делает. [1]
Для полной картины прочитайте эту статью вместе с Mining Pool, Mining Share, Full Pay Per Share, Pay Per Share, Pool Fee, Payout Threshold. На эту статью также ссылаются Mining Pool, Solo Mining, Pay Per Share, Pool Fee.