Pay Per Last N Shares (PPLNS) é uma forma de distribuir recompensas de pools de mineração. Um Mining Pool coordena mineradores na busca por blocos: grupos de transações acrescentados ao histórico público do Bitcoin. Ao encontrar um bloco, o pool divide a recompensa prevista conforme o trabalho recente aceito dos participantes. Uma share individual, prova de trabalho, não tem assim um valor fixo prometido antecipadamente como no Pay Per Share (PPS).
Jan conecta sua máquina a um Mining Pool, serviço que coordena o trabalho dos mineradores. No PPLNS, o pool não promete um preço fixo por resultado aceito. Quando encontra um bloco, usa o registro do trabalho recente para dividir a recompensa. Imagine uma lista em movimento: resultados novos entram e os mais antigos vão saindo. Encontrar um bloco não apaga essa lista. Assim, o mesmo trabalho pode participar de várias recompensas ou sair da lista antes que apareça qualquer bloco remunerado. [1]
Os resultados enviados para comprovar continuamente o trabalho da máquina são chamados shares. Aqui, o hash é um número calculado a partir dos dados do bloco proposto. A rede exige que ele não ultrapasse um valor-alvo, por isso o minerador altera os dados e refaz o cálculo. Eles atendem à condição mais fácil do pool, mas geralmente não bastam para um novo bloco de Bitcoin. N indica o tamanho da janela de trabalho considerada. No modelo mais simples, são as últimas N shares de dificuldade igual de todo o pool, não as últimas N pessoas. Se a dificuldade variar, o trabalho precisa ser ponderado de acordo com ela. A janela também não corresponde a um número fixo de horas: sua duração depende da velocidade com que chega mais trabalho. [1]
Imagine uma janela completa com 1000 shares de mesmo peso, das quais 100 pertencem a Jan. O pool acabou de encontrar um bloco e tem 3 BTC para distribuir depois do seu desconto. A parcela de Jan neste exemplo é 100 / 1000 × 3 = 0.3 BTC. Jan contribuiu com um décimo do trabalho contabilizado, por isso recebe um décimo da recompensa distribuída. São números ilustrativos: o valor de 3 BTC não indica o subsídio do bloco, ou seja, os novos bitcoins criados por bloco, e 0.3 BTC não é uma receita diária prometida. No próximo bloco, a janela pode conter outros resultados e o valor disponível também pode ser diferente. [1]
Jan desconecta a máquina para manutenção. Em um PPLNS corretamente implementado, isso não apaga o trabalho já aceito. Ele continua na janela e pode participar de recompensas futuras até ser deslocado por trabalho mais novo. Envelheceria da mesma forma se Jan continuasse minerando; ele apenas acrescentaria novos resultados. Quando volta a se conectar, sua presença na janela cresce gradualmente outra vez. A operação intermitente pode gerar mais oscilação, mas não é, por si só, uma multa automática por sair. [1]
PPLNS distribui o resultado de blocos reais, por isso um dia de sucesso do pool difere de um dia sem descobertas. Também importa como o pool inclui as taxas de transação pagas por usuários do Bitcoin. A F2Pool descreve expressamente essa variação. Full Pay Per Share (FPPS), por sua vez, precifica o trabalho aceito por uma estimativa que inclui subsídio e taxas; Pay Per Share Plus (PPS+) pode usar PPLNS apenas para a parcela de taxas. O percentual cobrado pelo serviço, sozinho, não diz a Jan qual resultado será melhor. Ele precisa conhecer também o valor sobre o qual esse percentual incide. [2] [3]
Parcela calculada, saldo da conta e pagamento recebido na própria carteira são etapas distintas. Jan verifica se o bloco foi aceito, como sua parcela foi calculada e quando o saldo pode ser sacado conforme o mínimo e o calendário. Mudar de método de remuneração também pode não ter efeito imediato. A F2Pool, por exemplo, publica seu próprio momento de entrada em vigor. Uma comparação justa inclui o trabalho anterior à mudança e possíveis recompensas posteriores da janela ainda ativa. PPLNS não elimina o risco de o pool deixar de pagar, nem a conta de luz e o custo do equipamento. [3] [4]
Uma janela maior mantém o trabalho elegível por mais tempo e distribui sua possível remuneração entre mais descobertas futuras. Isso suaviza parte da oscilação causada por uma janela muito curta. Não faz um pool pequeno encontrar blocos regularmente. Em troca, demora mais para saber o resultado completo do trabalho já realizado. Se o painel mostra uma recompensa esperada, ainda se trata de uma estimativa de descobertas futuras, não de um valor fixo prometido que possa ser sacado imediatamente. [1]
Um dos objetivos de PPLNS é limitar o pool-hopping: trocar de pool apenas para aproveitar uma fase mais favorável da distribuição. A janela que atravessa descobertas de blocos retira a vantagem simples de entrar no começo de uma nova rodada. A justiça matemática, porém, depende da variante. Meni Rosenfeld distingue o N fixo simples do unit-PPLNS, mais elaborado; regras ingênuas podem ser exploradas quando mudam a dificuldade da rede ou o valor do bloco. Unit-PPLNS registra, para cada share, dados baseados na dificuldade da rede e na recompensa por bloco no momento do envio. Assim, os pagamentos posteriores podem considerar as condições em que o trabalho foi realizado. Ao alterar parâmetros, o operador deve preservar o valor esperado do trabalho já aceito. O nome do serviço não comprova que o cálculo faça isso. [1]
Para ter uma visão mais completa, leia este verbete junto com Mining Pool, Mining Share, Full Pay Per Share, Pay Per Share, Pool Fee, Payout Threshold. Também há referências a este verbete em Mining Pool, Solo Mining, Pay Per Share, Pool Fee.