Fixação de horários de aquisição de direitos

Teclado com ferramentas

A equipe do xx labs está pressionando para que os horários de aquisição de direitos sejam ajustados em 21 de janeiro de 2022

Visão geral

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

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

Em seguida, explicaremos como o programa BetaNet Staking Rewards foi implementado, as questões que foram encontradas após sua promulgação e como estamos corrigindo essas questões, que envolvem a modificação de horários de aquisição de direitos incorretos.

Finalmente, estamos publicando todos os horários de aquisição de direitos revisados em https://vesting.xx.network para todos os portadores de moedas, em formato de dados JSON e um arquivo PNG que contém gráficos de aquisição de direitos. Também fornecemos exemplos de diferentes cenários que afetaram os portadores de moedas como resultado das emissões acima mencionadas.

Estaremos pressionando estas correções em 21 de janeiro de 2022.

O que são os Horários de Aquisição de Direitos

A aquisição de direitos é um conceito tradicionalmente utilizado com opções de compra de ações, onde é concedida uma subvenção de várias unidades de ações, mas as unidades só são 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 é dada diretamente à conta receptora, mas com um cronograma de aquisição de direitos que cadeados as moedas por um período de tempo. As moedas que são bloqueadas para aquisição de direitos podem ser usadas para qualquer operação na rede (exceto se forem usadas como reservado moedas), mas não podem ser transferidas para qualquer outra conta. As moedas com direito de aquisição são então desbloqueadas a cada bloco.

Um horário de aquisição de direitos no xx network é composto de três campos:

  • A quantidade que é bloqueada por titularidade: locked
  • A quantidade que desbloqueia cada bloco: por_bloco
  • O bloco quando as moedas começam a ser desbloqueadas: bloco_de_início


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

Exemplos:

Os horários de aquisição de moedas em parcelas mensais de 7000 para os nós da BetaNet são parecidos com estes:

  • locked:7000
  • por_bloco:7000
  • bloco_de_início:1123200

Este exemplo coloca uma fechadura de 7000, que começa a desbloquear no bloco 1123200, e desbloqueia 7000 por bloco. Isto significa efetivamente que esta parcela de 7000 moedas é trancada até o bloco 1123200, e desbloqueia totalmente no bloco 1123201. Este exemplo particular é para as recompensas BetaNet para o mês de janeiro de 2021, já que o bloco 1123200 é 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 das moedas entregues para as recompensas de apostas BetaNet são parecidos com estes:

  • locked:23812
  • por_bloco:0.009186728
  • bloco_de_início:432000

Este exemplo coloca uma fechadura de 23812, que começa a desbloquear no bloco 432000, e desbloqueia 0,009186728 por bloco. Isto significa que as 23812 moedas são trancadas até o bloco 432000, e depois começam a destravar a 0,009186728 por bloco. Podemos calcular a duração da titularidade dividindo o bloqueio por bloco: 23812/0,009186728 ~= 2592000 blocos, que é 2592000/(24*600) = 180 dias. Isto significa que o valor é totalmente desbloqueado 6 meses após o início da titularidade, 432000/(24*600) = 30 dias após o lançamento da rede principal.

Recompensas Betanet Staking Rewards

Em março de 2021, a equipe anunciou o programa BetaNet Staking Rewards, que se aplica a todos os portadores de moedas a partir do lançamento da rede principal. O programa tem um APY de 50%, com juros calculados diariamente, a partir de 1º de março de 2021 até o lançamento do mainnet. 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 portador de moeda e afixado na planilha do bloco de gênesis antes do lançamento do mainnet. No bloco de gênese, o valor da recompensa foi configurado para cada portador de moeda no módulo de reclamações, ou diretamente no módulo BetaNet Staking Rewards.

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

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


O módulo BetaNet Staking Rewards foi projetado a fim de suportar as características necessárias do programa. Este módulo permitiu aos usuários que reclamaram suas moedas em um endereço xx network selecionar sua opção desejada. Além disso, o módulo foi configurado com um bloco de decreto que foi definido para 30 dias após o lançamento da rede principal. Isto 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 portadores de moedas votaram durante uma semana.

No bloco de promulgação, o programa foi executado, com recompensas sendo dadas a partir do pool de recompensas da rede principal a todos os portadores de moedas, e os horários de aquisição de direitos aplicados, de acordo com a opção selecionada. A opção padrão de 6 meses de carência foi aplicada automaticamente a todas as reclamações restantes, com o valor da recompensa sendo adicionado ao valor da reclamação, e as programações de carência adicionadas.

Questões Existentes

A equipe identificou 3 questões que afetaram a promulgação do programa BetaNet Staking Rewards:

  1. Resto dos créditos - o montante a ser bloqueado foi calculado após a adição da recompensa ao principal, ou seja, bloqueio = 0,8 * (principal + recompensa) + recompensa, ao invés de bloqueio = 0,8 * principal + recompensa. Isto resulta em um montante trancado maior do que o esperado em muitas das reivindicações remanescentes
  2. Computação de titularidade - a quantidade a ser trancada foi computada tomando a tranca necessária e subtraindo a quantidade atual já trancada no bloco de promulgação. Esta foi uma solução de melhor esforço que bloqueia a quantidade necessária das recompensas enquanto mantém os bloqueios existentes, resultando em bloqueios de titularidade que são sempre maiores do que antes. Entretanto, em muitos cenários, esta solução pode levar a valores de bloqueio inferiores ao que é exigido pelo programa, o que pode criar situações injustas entre os portadores de moedas que selecionaram diferentes opções. Além disso, em alguns casos, o valor bloqueado começa mais alto do que o necessário, e depois cai para valores mais baixos do que o permitido.
  3. Pagamento de recompensa incorreta - considere um usuário que tem duas reivindicações separadas, uma sem horários 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 é mantido. Isto significa que o valor da recompensa da primeira reclamação não foi pago no bloco de promulgação. Esta emissão em particular afeta apenas 3 portadores de moedas.

Consertando os problemas

Como anunciado anteriormente em um fórum correioa equipe propôs uma atualização de tempo de execução da cadeia de bloqueio que acrescentou funcionalidade extra. Isto incluiu duas funções que permitem ao comitê técnico, por votação unânime, modificar os horários de aquisição de direitos de propriedade nos módulos de reivindicações e de aquisição de direitos de propriedade. Esta atualização foi aprovada em um referendo, e foi promulgada na última quinta-feira, 13 de janeiro.

Estas funções privilegiadas serão utilizadas pela equipe para corrigir os horários incorretos de aquisição de direitos e, em seguida, serão removidas o mais rápido possível em uma nova atualização de tempo de execução.

Novos Horários de Aquisição de Direitos

As informações sobre o programa de prêmios de aquisição de direitos de propriedade e sobre o programa BetaNet Staking Rewards para todos os portadores de moedas podem ser encontradas em https://vesting.xx.network.

Para cada porta-moedas, há 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: o programa BetaNet Staking Rewards opção selecionada
  • aquisição: todas as informações sobre aquisição de direitos
    • original: horários de aquisição de direitos presentes na gênese
    • betanet_rewards: horário de aquisição de direitos exigido pela aposta betanet
    • on_chain: horários de aquisição de direitos atualmente em cadeia
    • computado: horários fixos de aquisição de direitos
  • incorrect_on_chain: a bandeira a especificar na aquisição de direitos na cadeia está incorrecta


Para cada porta-moedas há um arquivo PNG contendo três gráficos da quantidade de moedas bloqueadas em função do número do bloco. Estes proporcionam uma maneira mais fácil de comparar a quantidade bloqueada por diferentes horários de aquisição de direitos ao longo do tempo:

  • Carteira original (esquerda): este gráfico mostra os horários originais de aquisição de direitos (azul) com o exigido pela BetaNet Staking Rewards (laranja). Após a promulgação do programa, a quantidade bloqueada deve ser sempre a mais restritiva, ou seja, max(original, betanet_rewards)
  • Aquisição de direitos na cadeia (meio): este gráfico mostra as mesmas informações que o anterior, mas com os horários de aquisição de direitos na cadeia sobrepostos (verde). Aqui, os portadores de moedas podem ver imediatamente se a titularidade atual é inválida, e se está trancando mais, menos (ou ambas) moedas.
  • Nova aquisição (direita): este gráfico mostra as mesmas informações que o primeiro, mas com os novos horários de aquisição (fixos) sobrepostos (verdes). Aqui, os portadores de moedas podem ver os horários de aquisição de direitos que serão definidos pela equipe, a fim de corrigir as questões encontradas, que, como pode ser visto, sempre segue o máximo entre o original e a betanet recompensa a aquisição de direitos. Se este gráfico for o mesmo que o do meio, isso significa que a titularidade na cadeia já está correta.


O nome do arquivo para cada arquivo JSON e PNG é o endereço xx network do porta-moedas, ou o endereço ETH se as moedas não foram reclamadas a partir do bloco 870000. Encorajamos todos os membros da comunidade a encontrar suas respectivas informações e entrar em contato com a equipe caso encontrem algum problema.

Metodologia

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

Exemplos de situações diferentes

Reclamação de sobras sem fechaduras originais, mostrando o número 1

Reclamação de sobras com fechaduras originais, mostrando ambos os números 1 e 2

Reivindicação de sobras com fechaduras originais, mas com a titularidade correta

Suporte com fechaduras originais, mostrando o número 2 causando fechaduras mais altas do que o esperado

Suporte com fechaduras originais, mostrando o número 2 causando fechaduras iniciais mais altas, e depois mais baixas do que o esperado

Titular com fechaduras originais, mas com a titularidade correta

Titular sem fechaduras originais, mas com a titularidade correta

Titular com fechaduras originais, mostrando o bug 1, devido à reivindicação após a promulgação

Popular