Como as recompensas das stake pools são calculadas?

Lincon Vidal
EveryBlock Studio
Published in
5 min readDec 16, 2020

Se você acompanhou nosso infoblock sobre a história das recompensas, já sabe como o pote é formado e quais são as fontes das recompensas distribuídas aos operadores. Podemos concluir que o mecanismo de incentivo é o principal motor das blockchains públicas, pois é através dele que os operadores são recompensados pelo serviço e incentivados a agir em favor do protocolo. Redes como Bitcoin, Ethereum, Tron e Tezos pagam recompensas fixas por bloco produzido, o que leva os mais curiosos a se perguntarem quanto a Cardano paga de recompensa por bloco.

Algumas blockchains distribuem as recompensas fixas por bloco produzido.

Na blockchain Cardano, o mecanismo de recompensas é um dos componentes mais importantes da segurança do protocolo Ouroboros, tendo sido desenvolvido através de extensa pesquisa científica para garantir que o mecanismo leva à descentralização da rede no longo prazo. Uma das diferenças em relação ao mecanismos de outras blockchains é que a distribuição de recompensas não é fixa por bloco. Em vez disso, as recompensas distribuídas para as stake pools e seus delegadores envolvem (1) a quantidade de participação da stake pool e (2) o seu desempenho.

Recompensas e participação

Para entender o mecanismo de recompensas, podemos olhar em detalhe os componentes que são utilizados no cálculo e como cada um influencia nas recompensas. Vamos considerar primeiro como a recompensa da stake pool é calculada em função da participação e, posteriormente, como o desempenho pondera o valor final das recompensas.

Vamos imaginar que o f é a função que calcula as recompensas de cada entidade na rede de acordo com dois fatores da stake pool: s, o pledge da stake pool; e σ, o total de participação delegada da stake pool.

Ambos os valores são relativos ao total de ADAs em circulação, ou seja, representam uma fração (ou porcentagem) do quanto a stake pool controla das moedas existentes. A fração referente ao pledge, que estamos chamando de s, representa a participação delegada pelos próprios operadores da pool, enquanto σ representa o total de participação delegada, incluindo o pledge e a participação dos delegadores.

Se existisse apenas uma stake pool, poderíamos distribuir todo o pote de recompensas R para ela independente de outros fatores. Vamos supor que esse pote contém um total de 200 mil ADAs.

Para dividirmos o pote de forma proporcional à participação relativa de cada entidade, precisamos considerar o parâmetro σ multiplicando o total de recompensas no pote.

Assim, ignorando o pledge por enquanto, se uma stake pool detém 1% de todo montante de ADAs em circulação (σ = 0.01), ela receberia 1 centésimo do pote, ou seja, f(s, σ) = 200000 * 0.01 = 2000. O problema que surge de associar as recompensas de modo diretamente proporcional é que stake pools com maior participação recebem sempre a maior parte das recompensas, tornando-se cada vez maiores e possivelmente centralizando a rede por meio de grandes entidades.

Para controlar o crescimento das recompensas da uma única stake pool, na blockchain Cardano existe o conceito de ponto de saturação que limita o ganho de recompensa. Vamos denominá-lo z_0, representando também um valor relativo ao total de moedas em circulação. Atualmente, o ponto de saturação corresponde a aproximadamente 0.2% do total, equivalente a cerca de 64 milhões de ADAs. Através desse parâmetro, limitamos a quantia de participação de uma stake pool considerada no cálculo de recompensas até no máximo 0.2% do total de ADAs. Vamos colocar uma linha (σ’ em vez de σ) para denotar que a participação estará limitada pelo ponto de saturação z_0.

No nosso exemplo anterior, uma stake pool estaria limitada a receber no máximo f(s, σ) = 200000 * 0.002 = 400. No entanto, ainda não estamos considerando como o pledge influencia no cálculo de recompensas. O objetivo do pledge é proteger a rede de um ataque Sybil, fornecendo recompensas maiores para os operadores que se comprometem e delegam suas próprias moedas para a stake pool e desincentivando a criação várias pools com participação baixa. O protocolo Ouroboros implementa o parâmetro a_0 como o fator de influência do pledge, atualmente definido como a_0 = 0.3. Vamos ignorar o ponto de saturação por enquanto para tentar manter a simplicidade, escrevendo a função do cálculo de recompensas incluindo o fator de influência do pledge (a_0) e o pledge relativo da stake pool (s).

As últimas modificações que precisamos fazer na fórmula são referentes ao ponto de saturação z_0, que também precisa ser incluído no cálculo. Limitamos o pledge ao ponto de saturação da mesma forma que fizemos com a participação total, denotando esse valor limitado por s’ em vez de s, multiplicando mais um termo para chegar finalmente à forma final da função de recompensa.

Note que se o fator de influência de pledge é nulo, ou seja, a_0 = 0, temos novamente a forma reduzida R * σ’.

Fator de desempenho

Uma vez que as recompensas de uma stake pool são calculadas com a função descrita, o valor obtido é ajustado por um fator de desempenho que pondera as recompensas em relação à quantidade de blocos produzidos.

Esse fator é calculado por β/σ, no qual β é a fração de blocos produzidos pela pool numa época, representando uma fração na forma de blocos produzidos / 21600; σ é, novamente, a fração de participação relativa controlada pela pool. Note que β e σ são frações que devem obter o mesmo valor ao longo do tempo, de forma que a fração de blocos gerados seja proporcional à participação controlada. Como o sorteio de slots para definir as entidades que produzirão blocos funciona como uma loteria, às vezes uma pool pode produzir mais ou menos blocos que o esperado, mas na média o fator de desempenho deve ser igual a 1 para pools com desempenho ideal.

Resumindo:

Existe sim uma diferença na recompensa por gerar mais ou menos blocos, mas não existe um valor fixo de recompensas como nas outras redes. No longo prazo, a recompensa é proporcional à participação controlada pela stake pool.

Até a próxima época!

Originally published at https://everyblock.studio.

--

--

Lincon Vidal
EveryBlock Studio

Interested in a decentralized and autonomous future. MSc student at National Laboratory for Scientific Computation. Founder of https://everyblock.studio/