Liberando um cálculo de recompensas de código aberto
Fundação Cardano Equipe da Fundação Cardano
Autor: Fabian Bormann
Líder da Equipe de Arquitetura e Engenharia de Ecossistemas (EAE)
No protocolo de prova de participação (PoS) da Cardano – Ouroboros – os delegadores e operadores de pool de participação (SPOs) recebem recompensas à medida que contribuem para proteger a rede. As especificações do razão Cardano descrevem fórmulas para calcular essas recompensas. Tendo isto em mente e como parte dos esforços da Fundação Cardano para a resiliência operacional da rede, abrimos o código -fonte de um cálculo de recompensa independente de nó 2. O projeto pretende alcançar um meio de realizar e validar o cálculo de recompensas que seja independente de uma única implementação. Da mesma forma, procura fornecer documentação abrangente relacionada ao tesouro, reservas e recompensas do pool da Cardano.
Sendo um repositório de código aberto sob licença do MIT, a iniciativa também aprofunda o compromisso da Fundação com a maturidade do código aberto e visa angariar contribuições do ecossistema em geral. Finalmente, o cálculo pode igualmente servir como uma ferramenta educativa, por exemplo, em relação à forma como as alterações nos parâmetros do protocolo podem impactar o fluxo de fundos. Em última análise, aumenta a transparência e melhora a resiliência operacional.
Reforçando a resiliência operacional com código aberto
A blockchain Cardano oferece vários recursos exclusivos e cuidadosamente considerados. Um dos principais é que o staking ada permanece nas carteiras dos usuários, permitindo transferências para outras carteiras a qualquer momento. Embora esta funcionalidade tenha benefícios, também apresenta desafios na implementação de cálculos de recompensas. Isto exige o uso de instantâneos para cálculo de recompensas, conforme descrito na especificação do razão.
O processo começa com o cálculo de novas reservas, taxas, pote total de recompensas e tesouraria. Posteriormente, as recompensas do pool são determinadas com base neste pote total de recompensas. As recompensas do pool são usadas para calcular as recompensas dos delegadores do pool de apostas e dos operadores do pool de apostas. Devido à necessidade de cálculos baseados em instantâneos, pode acontecer que o registro de uma conta de estaca seja cancelado após a captura de um instantâneo. A conta de aposta, portanto, não pode receber recompensas após a conclusão do cálculo e precisa de regras personalizadas para lidar com essas situações especiais.
Essas regras estão naturalmente espalhadas pela base de código, à medida que o próprio processo de cálculo é distribuído ao longo do tempo. O repositório cardano-ledger agrega a maior parte da lógica de negócios, juntamente com a documentação relevante. Alguns componentes adicionais necessários para este processo podem ser encontrados no próprio nó cardano ou no repositório da rede ouroboros .
O código é executado usando um agendador baseado em slot, que pode ser difícil de ler e seguir para quem não está familiarizado com a base de código. Embora certas otimizações tenham sido introduzidas para melhorar o desempenho do cálculo, essas otimizações podem tornar o código menos simples de entender. O cálculo de recompensas de código aberto visa enfrentar esses desafios, mantendo ao mesmo tempo os recursos robustos nativos da rede Cardano.
O mecanismo de recompensas Cardano
A especificação do razão Cardano inclui múltiplas equações que definem coletivamente o fluxo de ADA no final de cada época 2. Cada nó calculará independentemente as recompensas por época de maneira distribuída, com quaisquer recompensas potenciais então distribuídas com base no mecanismo de consenso. Notavelmente, nenhuma entidade completa este cálculo nem pode reter recompensas. Essas recompensas ada são calculadas a cada época e derivam da interação de duas fontes: taxas de transação e expansão monetária.
- Taxas de transação: No final de cada época, o valor do pote de taxas (a soma de todas as taxas de transação naquela época) vai para o pote de recompensas total.
- Expansão monetária: Além das taxas de transação, uma percentagem fixa da reserva é colocada no mesmo pote de recompensas.
O pote total de recompensas é então dividido em dois segmentos. A primeira parte vai para o tesouro, enquanto a segunda forma o pote de recompensas do pool de apostas. Notavelmente, as reservas mencionadas começaram originalmente com aproximadamente 14 mil milhões de ADA e diminuíram gradualmente.
Simultaneamente, outro cálculo calcula a recompensa do pool, utilizando os parâmetros do pool de apostas que, em conjunto com o desempenho aparente do pool, determinam as recompensas individuais do pool de apostas. O valor resultante constitui a base para o cálculo das recompensas do delegador e do operador. É importante ressaltar que todos esses cálculos dependem dos parâmetros do protocolo. O cálculo das recompensas é parte integrante do ecossistema blockchain Cardano, tornando crucial educar as pessoas sobre como ele funciona. Este conhecimento capacita as pessoas a escolherem um pool de participação que se ajuste à sua visão e valores.
Como o cálculo das recompensas melhora a transparência
O tesouro, as reservas, as recompensas, os depósitos e as taxas – muitas vezes referidos como ada-pots – somam a oferta máxima de 45 mil milhões de ada. Embora qualquer pessoa possa revisar os números do ada-pot nos exploradores de blockchain Cardano e no Cardano DB Sync , essas plataformas só são capazes de fornecer o resultado final dos cálculos, sem quaisquer dados subjacentes disponíveis para confirmar como eles foram calculados. Embora esses cálculos existam no código Haskell do nó e nos repositórios do razão, eles empregam uma implementação de fórmula complexa e altamente distribuída.
Por esta razão, a Fundação começou a buscar um cálculo de recompensa independente de nó que implementa as fórmulas descritas nas especificações do razão Cardano e serve como um recurso de documentação para lidar com casos extremos em que a fórmula especificada não está alinhada com a implementação real. Por exemplo, em um caso, um bug na implementação do nó resultou em um proprietário de pool executando dois pools diferentes, mas com o mesmo endereço de recompensa, recebendo recompensas por apenas um pool de participação. Nesse caso, a correção do bug resultou na emissão de recompensas adicionais do tesouro para os proprietários do pool.
Embora essas intervenções manuais estejam completamente alinhadas com a especificação do protocolo e registradas de maneira transparente por meio dos chamados certificados de recompensas instantâneas por movimento ( MIR ), os ada-pots calculados para esta época estariam incorretos. Especificamente, se alguém calculasse o valor do tesouro com a fórmula simples para esta época, tornar-se-ia evidente que não corresponde ao montante real de ADA detido. Em suma, sem o conhecimento de tais acontecimentos extraordinários, a discrepância entre a fórmula e o valor do tesouro seria difícil de detetar e haveria menos fundos no tesouro do que o indicado pela fórmula.
Vantagens de abrir o código-fonte da implementação da fórmula
O cálculo das recompensas foi originalmente integrado ao LedgerSync, o pipeline de dados baseado em Java desenvolvido para fornecer ao novo explorador Cardano da Fundação Cardano dados do blockchain Cardano. No entanto, a Equipa de Engenharia da Fundação rapidamente percebeu que desemaranhar os múltiplos componentes envolvidos nos diferentes aspectos do cálculo seria bastante complexo. A diversidade de dados de entrada, que inclui especificações , postagens de blog, tópicos de fórum e documentação da comunidade auto-hospedada, significa que reunir as informações necessárias de várias fontes para compreender de forma abrangente o fluxo de ADA se torna particularmente demorado.
O código aberto do cálculo das recompensas, por outro lado, pode capacitar a inspeção, revisão e verificação públicas do algoritmo, bem como do código usado para determinar como as recompensas são distribuídas. Da mesma forma, esta abordagem ajuda a construir confiança na infraestrutura Cardano, servindo como um repositório que inclui um gráfico interativo que explica o fluxo de ADA no final de uma época, além de relatórios que destacam as diferenças entre a fórmula e o valor real.
Também funciona como uma forma útil de educar as pessoas sobre o sistema de tesouraria descentralizado de Cardano e contribui para fornecer informações sobre a utilização de taxas de transação. Sendo um repositório de código aberto, o cálculo das recompensas envolve ainda mais a comunidade, estimulando todos a contribuir com o máximo de documentação possível. Além disso, fornece uma ferramenta para capacitação técnica, pois expõe uma API que permite aos usuários calcular valores atualmente disponíveis apenas com Cardano DB Sync , uma ferramenta Haskell da IOG para rastrear dados de nós e torná-los acessíveis em um banco de dados PostgreSQL.
Trabalhando para a transparência do cálculo de recompensas
Conforme discutido no exemplo anterior de caso extremo, usar a fórmula da próxima época para calcular, por exemplo, o valor do tesouro, às vezes não produzirá resultados precisos. Essa dinâmica pode surgir ao transferir fundos para pagar uma proposta do Project Catalyst ou, por exemplo, ao usar um certificado MIR para compensar recompensas do pool perdidas devido a um bug. Embora registados de forma transparente na blockchain Cardano através do mecanismo de certificado MIR, tais casos extremos nem sempre são documentados publicamente em detalhe, levando à falta de antecedentes históricos e, portanto, comprometendo significativamente a transparência, o que por sua vez resulta em incerteza e diminuição da confiança. O estabelecimento de documentação adequada pode evitar isto, permitindo futuras revisões e auditorias, bem como melhorias na documentação, fortalecendo assim a credibilidade e resiliência operacional da Cardano.
O trabalho da Fundação começou com a implementação da fórmula e a documentação de casos extremos, mas algumas incógnitas restantes ainda precisam ser abordadas. Por exemplo, é necessário contabilizar os primeiros fundos Catalyst ou certificados MIR antes da época 271, uma vez que não têm metadados anexados a eles. Através do código aberto desta fórmula, a Fundação espera colaborar com os membros da comunidade para estabelecer uma solução independente da fonte de dados. Atualmente, temos um provedor de dados Koios e um provedor de dados para arquivos JSON estáticos, que atendem dados agregados. Além disso, um indexador com escopo definido – potencialmente baseado em Yaci-Store , uma implementação de armazenamento de dados Cardano baseada em Java – seria útil para garantir a máxima transparência no cálculo da recompensa.
Esta iniciativa também diz respeito, em última análise, ao valor do tesouro, que Cardano utiliza para financiar o desenvolvimento descentralizado do ecossistema, recompensas conjuntas e taxas de transação. Consequentemente, impacta diretamente aspectos com os quais todo usuário Cardano deve se preocupar, incluindo a implantação de recompensas no ecossistema do qual faz parte. Ao mesmo tempo, todos os contribuidores, quer partilhem código ou informação, desempenham um papel importante em trazer mais confiança e transparência ao ecossistema, melhorando assim as condições para uma maior adoção da blockchain.
Quebrando o cálculo
A Fundação gera um relatório junto com cada nova versão do repositório . Adicionamos como métrica a diferença média absoluta entre o cálculo e o valor real de tesouraria e, junto com a comunidade, esperamos conseguir uma redução desse valor ao longo do tempo.
As contribuições para este repositório não se limitam apenas ao código; as pessoas podem adicionar dados, links, documentação e insights sobre as diferenças substanciais observadas em algumas épocas. O repositório em si segue uma abordagem orientada a testes, por isso faz sentido começar criando testes, como aqueles relacionados a recompensas de pools específicos em épocas específicas. A Fundação criou o relatório apenas para o tesouro, mas vemos potencial para introduzir este tipo de relatório para os outros constituintes dos ada-pots, bem como relatórios detalhados sobre grupos de participações selecionados e recompensas para membros no futuro.
Na maioria das vezes, o valor do tesouro é em média cerca de 3.500 ADA superior ao previsto pela fórmula. A regra de pool reap direciona os depósitos de pool não exigíveis – como quando um pool é desativado e o endereço de participação associado já foi cancelado – de volta ao tesouro. Além disso, cada pool pode ganhar um valor máximo de ada para cada época. O Tesouro também direciona qualquer diferença entre o valor calculado pela fórmula e o valor máximo. Estes ajustamentos à implementação atual deverão reduzir a diferença média absoluta.
A Fundação já obteve algum sucesso na abordagem dos fundamentos do cálculo e na identificação de explicações para algumas destas discrepâncias. Seria, no entanto, valioso ter documentação abrangente para cada transacção efectuada pelo Tesouro.
Os próximos passos também envolvem a implementação da regra Pool Reap, bem como a adição de recompensas limitadas ao tesouro, a incorporação de certificados MIR e o direcionamento de recompensas não reclamadas para as reservas. Além disso, embora a cada nova época nós atualmente redefinimos para um valor conhecido para evitar erros de encaminhamento de épocas anteriores, no futuro seria benéfico ter um consumidor com escopo para taxas, pools retirados, contas de participação canceladas, atualizações de pool e muito mais. Esta estrutura permitiria cálculos dinâmicos com base no cálculo anterior.
Se, no entanto, houver outra incógnita no cálculo, levando a uma disparidade entre o cálculo e os valores reais, um exame aprofundado da implementação de Haskell nos repositórios cardano-node e cardano-ledger poderia ser concluído. Este cenário teria como objetivo identificar mudanças que explicam as discrepâncias, explorando o histórico de commits e discussões de problemas.
No futuro, a Fundação pretende utilizar os relatórios e gráficos interativos provenientes deste repositório para explicar a tokenomics da ada para reguladores, empresas e instituições. Em setembro, também nos reunimos com equipes do Koios CNTools para apresentá-los ao repositório e obter feedback inicial. Eles saudaram a iniciativa, bem como a ideia de implementar e documentar o cálculo da recompensa e observaram que ter outros desenvolvedores portando esta implementação de referência Java para linguagens adicionais proporcionaria um valor suplementar.
Uma abordagem de código aberto sempre enriquece o ecossistema, oferecendo benefícios mútuos a todas as partes envolvidas, ao mesmo tempo que promove a transparência e aumenta a probabilidade de adoção generalizada da tecnologia blockchain. A Fundação Cardano, portanto, planeja continuar com repositórios e soluções de código aberto com o objetivo de promover a maturidade de código aberto da Cardano.