Corrigindo cronogramas de aquisição

Teclado com ferramentas

A equipe xx labs está corrigindo os cronogramas de aquisição em 21 de janeiro de 2022

Visão geral

Com a promulgação do programa BetaNet Staking Rewards, novos cronogramas de aquisição foram adicionados à maioria das carteiras no xx network. A equipe do xx labs identificou um erro no cálculo desses novos cronogramas de aquisição e desenvolveu uma correção que restaurará os cronogramas corretos.

Neste post, vamos começar com um mergulho profundo em como a aquisição funciona no xx network.

Em seguida, explicaremos como o programa BetaNet Staking Rewards foi implementado, os problemas encontrados após sua promulgação e como estamos corrigindo esses problemas, que envolvem a modificação de cronogramas de aquisição incorretos.

Por fim, estamos publicando todos os cronogramas de aquisição revisados em https://vesting.xx.network para todos os detentores de moedas, em formato de dados JSON e um arquivo PNG que o acompanha contendo gráficos de aquisição. Também fornecemos exemplos de diferentes cenários que afetaram os detentores de moedas como resultado dos problemas mencionados acima.

Estaremos promovendo essas correções em 21 de janeiro de 2022.

O que são cronogramas de aquisição

O vesting é um conceito tradicionalmente usado com opções de ações, onde uma concessão de um número de unidades de ações é concedida, mas as unidades são apenas concedidas (elas colete) em parcelas ao longo do tempo, por exemplo, trimestral ou anual.

No contexto do xx network, o conceito é semelhante, mas a execução é diferente. A quantidade total de moedas concedidas é entregue diretamente na conta do destinatário, mas com um cronograma de aquisição que fechaduras as moedas por um período de tempo. Moedas bloqueadas para aquisição podem ser usadas para qualquer operação na rede (exceto para serem usadas como reservado moedas), mas não pode ser transferido para nenhuma outra conta. Moedas sob aquisição são então desbloqueadas a cada bloco.

Um cronograma de aquisição no xx network consiste em três campos:

  • O valor que é bloqueado por aquisição: bloqueiod
  • A quantidade que desbloqueia cada bloco: por_bloco
  • O bloco quando as moedas começam a ser desbloqueadas: bloco de partida


Usamos cronogramas de aquisição para colocar dois tipos diferentes de restrições às moedas: um bloqueio do valor total por um período de tempo especificado ou um desbloqueio linear, começando em um determinado ponto no tempo e com uma duração especificada também.

Exemplos:

Os cronogramas de aquisição de moedas dadas em parcelas mensais de 7.000 para nós BetaNet são assim:

  • bloqueiod:7000
  • por_bloco:7000
  • bloco de partida:1123200

Este exemplo coloca um bloqueio de 7.000, que começa a ser desbloqueado no bloco 1123.200 e desbloqueia 7.000 por bloco. Isso significa efetivamente que esta parcela de 7.000 moedas está bloqueada até o bloco 1123200 e é totalmente desbloqueada no bloco 1123201. Este exemplo específico é para recompensas BetaNet para o mês de janeiro de 2021, pois 1123200 blocos é igual a 1123200/(24 horas * 600) blocos por hora) = 78 dias, o que significa que o bloqueio termina em 1º de fevereiro de 2022.

Os cronogramas de aquisição de moedas dadas para recompensas de staking da BetaNet são assim:

  • bloqueiod:23812
  • por_bloco:0.009186728
  • bloco de partida:432000

Este exemplo coloca um bloqueio de 23812, que começa a ser desbloqueado no bloco 432000 e desbloqueia 0,009186728 por bloco. Isso significa que as 23812 moedas ficam bloqueadas até o bloco 432000, e então começam a desbloquear em 0,009186728 por bloco. Podemos calcular a duração da aquisição dividindo o bloqueado por per_block: 23812/0,009186728 ~= 2592000 blocos, que é 2592000/(24*600) = 180 dias. Isso significa que o valor é totalmente desbloqueado 6 meses após o início da aquisição, 432.000/(24*600) = 30 dias após o lançamento da rede principal.

Recompensas de Apostas Betanet

Em março de 2021, a equipe anunciou o programa BetaNet Staking Rewards, que se aplica a todos os detentores de moedas a partir do lançamento da rede principal. O programa tem um APY de 50%, com juros calculados diariamente, de 1º de março de 2021 até o lançamento da rede principal. As moedas recebidas após 1º de março só acumulam juros a partir do dia em que são concedidas. O valor da recompensa foi calculado para cada detentor de moeda e postado na planilha do bloco de gênese antes do lançamento da rede principal. No bloco gênese, o valor da recompensa foi configurado para cada portador de moeda no módulo de sinistros, ou diretamente no módulo BetaNet Staking Rewards.

O programa foi desenvolvido com as seguintes opções de recompensa:

  • Sem aquisição e 2% de recompensa é dado
  • 1 mês de aquisição de 100% de principal mais recompensa, 12% de recompensa é dado
  • 3 meses de aquisição em 90% de principal mais recompensa, 45% de recompensa é dado
  • 6 meses de aquisição em 80% de principal mais recompensa, a recompensa total é dada. Estaéa opção padrão se nenhuma seleção for feita
  • 9 meses de aquisição em 100% de principal mais recompensa, 120% de recompensa é dado


O módulo BetaNet Staking Rewards foi projetado para suportar os recursos necessários do programa. Este módulo permitiu que os usuários que reivindicassem suas moedas em um endereço xx network selecionassem a opção desejada. Além disso, o módulo foi configurado com um bloco de execução definido para 30 dias após o lançamento da rede principal. Isso foi necessário para dar tempo para que a aceitação do programa fosse votada pela comunidade. O programa foi aprovado através de um referendo, onde os detentores de moedas votaram durante uma semana.

No bloco de promulgação, o programa foi executado, com recompensas sendo entregues do pool de recompensas de apostas da mainnet para todos os detentores de moedas, e os cronogramas de aquisição aplicados, de acordo com a opção selecionada. A opção padrão de aquisição de 6 meses foi aplicada automaticamente a todas as reivindicações restantes, com o valor da recompensa sendo adicionado ao valor da reivindicação e os cronogramas de aquisição adicionados.

Problemas existentes

A equipe identificou 3 problemas que afetaram a implementação do programa BetaNet Staking Rewards:

  1. Reivindicações restantes – o valor a ser bloqueado foi computado após a recompensa ser adicionada ao principal, ou seja, bloqueio = 0,8 * (principal + recompensa) + recompensa, em vez de bloqueio = 0,8 * principal + recompensa. Isso resulta em um valor bloqueado maior do que o esperado em muitas das reivindicações restantes
  2. Computação de aquisição – o valor a ser bloqueado foi calculado tomando o bloqueio necessário e subtraindo o valor atual já bloqueado no bloco de promulgação. Esta foi uma solução de melhor esforço que bloqueia a quantidade necessária de recompensas, mantendo os bloqueios existentes, resultando em bloqueios adquiridos que são sempre mais altos do que antes. No entanto, em muitos cenários, esta solução pode levar a valores bloqueados inferiores aos exigidos pelo programa, o que pode criar situações injustas entre os detentores de moedas que selecionaram opções diferentes. Além disso, em alguns casos, o valor bloqueado começa mais alto que o necessário e depois cai para mais baixo do que o permitido
  3. Pagamento de recompensa incorreto – considere um usuário que tenha duas reivindicações separadas, uma sem cronogramas de aquisição (por exemplo, da venda original) e outra com. Se ambos forem reivindicados no mesmo endereço, apenas o valor da recompensa do segundo será mantido. Isso significa que o valor da recompensa da primeira reclamação não foi pago no bloco de promulgação. Este problema específico afeta apenas 3 titulares de moedas.

Corrigindo os problemas

Conforme anunciado anteriormente em um fórum publicar, a equipe propôs uma atualização de tempo de execução do blockchain que adicionou funcionalidades extras. Isso incluiu duas funções que conferem ao comitê técnico, por unanimidade de votos, a capacidade de modificar os cronogramas de aquisição nos módulos de Reivindicações e Vesting. Esta atualização foi aprovada em referendo, e foi promulgada na passada quinta-feira, 13 de Janeiro.

Essas funções privilegiadas serão usadas pela equipe para corrigir os cronogramas de aquisição incorretos e serão removidas o mais rápido possível em uma atualização de tempo de execução adicional.

Novos cronogramas de aquisição

As informações do programa Vesting e BetaNet Staking Rewards para todos os detentores de moedas podem ser encontradas em https://vesting.xx.network.

Para cada porta-moedas existe um arquivo JSON contendo as seguintes informações:

  • principal: a quantidade de moedas presentes na gênese
  • recompensa: a recompensa dada, ajustada de acordo com a opção escolhida
  • opção: a opção selecionada do programa BetaNet Staking Rewards
  • vesting: todas as informações sobre vesting
    • original: cronogramas de aquisição presentes na gênese
    • betanet_rewards: cronograma de aquisição exigido pelas recompensas de aposta betanet
    • on_chain: cronogramas de aquisição atualmente na cadeia
    • computado: cronogramas de aquisição fixos
  • incorrect_on_chain: o sinalizador para especificar no vesting on-chain está incorreto


Para cada porta-moedas existe um arquivo PNG contendo três gráficos da quantidade de moedas bloqueadas em função do número do bloco. Eles fornecem uma maneira mais fácil de comparar o valor bloqueado por diferentes cronogramas de aquisição ao longo do tempo:

  • Aquisição original (esquerda): este gráfico mostra os cronogramas de aquisição originais (azul) com o exigido pelo BetaNet Staking Rewards (laranja). Após a promulgação do programa, o valor bloqueado deve ser sempre o mais restritivo, ou seja, max(original, betanet_rewards)
  • Investing on-chain (meio): este gráfico mostra as mesmas informações que o anterior, mas com os cronogramas de aquisição on-chain sobrepostos (verde). Aqui, os detentores de moedas podem ver imediatamente se a aquisição atual é inválida e se está bloqueando mais, menos (ou ambas) moedas
  • Nova aquisição (à direita): este gráfico mostra as mesmas informações que o primeiro, mas com os novos cronogramas de aquisição (fixos) sobrepostos (verde). Aqui, os detentores de moedas podem ver os cronogramas de aquisição que serão definidos pela equipe, a fim de corrigir os problemas encontrados, que, como pode ser visto, sempre seguem o máximo entre a aquisição de recompensas original e betanet. Se este gráfico for igual ao do meio, isso significa que o vesting on-chain já está correto.


O nome do arquivo para cada arquivo JSON e PNG é o endereço xx network do detentor da moeda ou o endereço ETH se as moedas não foram reivindicadas no bloco 870000. Incentivamos todos os membros da comunidade a encontrar suas respectivas informações e entrar em contato com a equipe se encontrarem algum problema.

Metodologia

Todas as informações necessárias foram compiladas diretamente do bloco de gênese e estado on-chain em vários blocos. Ao gerar todos os arquivos, várias verificações foram realizadas para detectar quaisquer problemas e corrigi-los. O cálculo dos cronogramas fixos de aquisição foi realizado recursivamente ajustando os cronogramas originais e adicionando parcelas dos cronogramas de recompensas da BetaNet conforme necessário, de modo que o total resultante corresponda ao bloqueio necessário em todos os blocos, que é exatamente o máximo entre os dois tipos de cronogramas.

Exemplos de situações diferentes

Reivindicação restante sem bloqueios originais, mostrando o problema 1

Reivindicação de sobras com cadeados originais, mostrando os problemas 1 e 2

Reivindicação restante com fechaduras originais, mas aquisição correta

Suporte com travas originais, mostrando o problema 2 causando travas mais altas do que o esperado

Suporte com travas originais, mostrando o problema 2 causando travas iniciais mais altas e depois abaixo do esperado

Suporte com travas originais, mas com a vestimenta correta

Suporte sem travas originais, mas com a vestimenta correta

Titular com fechaduras originais, apresentando bug 1, devido a reclamação após promulgação

Popular