Fijación de cronogramas de adquisición de derechos

Teclado con herramientas

El equipo de xx labs está impulsando una solución a los cronogramas de adjudicación 21 de enero de 2022

Descripción general

Con la promulgación del programa BetaNet Staking Rewards, se agregaron nuevos cronogramas de adjudicación a la mayoría de las billeteras en el xx network. El equipo de xx labs identificó un error que se cometió al calcular estos nuevos cronogramas de adjudicación y desarrolló una solución que restablecerá los cronogramas correctos.

En esta publicación, comenzaremos con una inmersión profunda en cómo funciona la adquisición de derechos en el xx network.

Luego, explicaremos cómo se implementó el programa BetaNet Staking Rewards, los problemas que se encontraron después de su promulgación y cómo estamos solucionando esos problemas, que implican la modificación de cronogramas de adjudicación incorrectos.

Finalmente, estamos publicando todos los cronogramas de adjudicación revisados en https://vesting.xx.network para todos los poseedores de monedas, en formato de datos JSON y un archivo PNG adjunto que contiene gráficos de adquisición. También proporcionamos ejemplos de diferentes escenarios que afectaron a los poseedores de monedas como resultado de los problemas antes mencionados.

Impulsaremos estas correcciones el 21 de enero de 2022.

¿Qué son los calendarios de adquisición de derechos?

La adquisición de derechos es un concepto que se utiliza tradicionalmente con las opciones sobre acciones, en las que se concede la concesión de un número de unidades de acciones, pero las unidades solo se otorgan (se chaleco) en porciones a lo largo del tiempo, por ejemplo, trimestral o anual.

En el contexto de xx network, el concepto es similar, pero la ejecución es diferente. La cantidad total de monedas otorgadas se entrega directamente a la cuenta del destinatario, pero con un calendario de adquisición que Cerraduras las monedas por un período de tiempo. Las monedas que están bloqueadas para el otorgamiento se pueden usar para cualquier operación en la red (excepto para usarlas como reservado monedas), pero no se puede transferir a ninguna otra cuenta. Las monedas que se otorgan se desbloquean en cada bloque.

Un cronograma de adjudicación en el xx network consta de tres campos:

  • La cantidad que está bloqueada por la concesión: lockeD
  • La cantidad que desbloquea cada bloque: por_bloque
  • El bloque cuando las monedas comienzan a desbloquearse: bloque de inicio


Usamos cronogramas de otorgamiento para colocar dos tipos diferentes de restricciones en las monedas: un bloqueo del monto total por un período de tiempo específico, o un desbloqueo lineal, comenzando en un punto dado en el tiempo y también con una duración específica.

Ejemplos:

Los cronogramas de otorgamiento de monedas otorgadas en tramos mensuales de 7000 para los nodos BetaNet se ven así:

  • lockeD:7000
  • por_bloque:7000
  • bloque de inicio:1123200

Este ejemplo coloca un bloqueo de 7000, que comienza a desbloquearse en el bloque 1123200 y desbloquea 7000 por bloque. Esto significa que este tramo de 7000 monedas está bloqueado hasta el bloque 1123200 y se desbloquea por completo en el bloque 1123201. Este ejemplo en particular es para las recompensas de BetaNet para el mes de enero de 2021, ya que 1123200 bloques equivalen a 1123200/(24 horas * 600 bloques por hora) = 78 días, lo que significa que el bloqueo finaliza el 1 de febrero de 2022.

Los cronogramas de otorgamiento de monedas otorgadas para las recompensas de participación de BetaNet se ven así:

  • lockeD:23812
  • por_bloque:0.009186728
  • bloque de inicio:432000

Este ejemplo coloca un bloqueo de 23812, que comienza a desbloquearse en el bloque 432000 y desbloquea 0,009186728 por bloque. Esto significa que las 23812 monedas están bloqueadas hasta el bloque 432000 y luego comienzan a desbloquearse en 0.009186728 por bloque. Podemos calcular la duración de la adjudicación dividiendo el bloqueado por per_block: 23812/0.009186728 ~= 2592000 bloques, que es 2592000/(24*600) = 180 días. Esto significa que el valor se desbloquea por completo 6 meses después de que comience a otorgarse, 432000/(24*600) = 30 días después del lanzamiento de la red principal.

Recompensas de participación de Betanet

En marzo de 2021, el equipo anunció el programa BetaNet Staking Rewards, que se aplica a todos los titulares de monedas a partir del lanzamiento de la red principal. El programa tiene un APY de 50%, con interés calculado diariamente, desde el 1 de marzo de 2021 hasta el lanzamiento de la red principal. Las monedas recibidas después del 1 de marzo sólo devengan intereses a partir del día de su entrega. El monto de la recompensa se calculó para cada poseedor de monedas y se publicó en la hoja de cálculo del bloque de génesis antes del lanzamiento de la red principal. En el bloque de génesis, el monto de la recompensa se configuró para cada poseedor de monedas en el módulo de reclamos, o directamente en el módulo BetaNet Staking Rewards.

El programa fue diseñado con las siguientes opciones de recompensa:

  • No se otorgan derechos y 2% de recompensa
  • 1 mes de adquisición de 100% de principal más recompensa, se otorga 12% de la recompensa
  • Adquisición de 3 meses en 90% de principal más recompensa, se otorga 45% de la recompensa
  • Adquisición de 6 meses en 80% de principal más recompensa, se otorga la recompensa total. Esta es la opción predeterminada si no se realiza ninguna selección.
  • Adquisición de 9 meses en 100% de principal más recompensa, se otorga 120% de la recompensa


El módulo BetaNet Staking Rewards fue diseñado para admitir las características requeridas del programa. Este módulo permitió a los usuarios que reclamaron sus monedas en una dirección xx network seleccionar la opción deseada. Además, el módulo se configuró con un bloque de promulgación que se estableció en 30 días después del lanzamiento de la red principal. Esto fue necesario para dar tiempo a que la comunidad votara sobre la aceptación del programa. El programa fue aprobado a través de un referéndum, donde los tenedores de monedas votaron durante una semana.

En el bloque de promulgación, se ejecutó el programa, con recompensas que se otorgaron desde el grupo de recompensas de apuestas de la red principal a todos los poseedores de monedas, y se aplicaron los cronogramas de adjudicación, de acuerdo con la opción seleccionada. La opción predeterminada de 6 meses de adquisición de derechos se aplicó automáticamente a todos los reclamos sobrantes, y el monto de la recompensa se agregó al valor del reclamo y se agregaron los cronogramas de adquisición.

Problemas existentes

El equipo identificó 3 problemas que afectaron la promulgación del programa BetaNet Staking Rewards:

  1. Reclamaciones sobrantes: el monto que se bloqueará se calculó después de agregar la recompensa al principal, es decir, bloquear = 0,8 * (principal + recompensa) + recompensa, en lugar de bloquear = 0,8 * principal + recompensa. Esto da como resultado una cantidad bloqueada más alta de lo esperado en muchas de las reclamaciones sobrantes.
  2. Cálculo de la concesión: el monto que se bloqueará se calculó tomando el bloqueo requerido y restando el monto actual ya bloqueado en el bloque de promulgación. Esta fue una solución de mejor esfuerzo que bloquea la cantidad necesaria de las recompensas mientras mantiene los bloqueos existentes, lo que da como resultado bloqueos de adquisición que siempre son más altos que antes. Sin embargo, en muchos escenarios, esta solución puede conducir a valores bloqueados inferiores a los requeridos por el programa, lo que puede crear situaciones injustas entre los poseedores de monedas que seleccionaron diferentes opciones. Además, en algunos casos, el valor bloqueado comienza más alto de lo necesario y luego cae por debajo de lo permitido.
  3. Pago de recompensa incorrecto: considere un usuario que tiene dos reclamos separados, uno sin calendarios de adjudicación (por ejemplo, de la venta original) y otro con. Si ambos se reclaman en la misma dirección, solo se conserva el valor de la recompensa del segundo. Esto significa que el valor de la recompensa del primer reclamo no se pagó en el bloque de promulgación. Este problema en particular solo afecta a 3 poseedores de monedas.

Solucionar los problemas

Como se anunció anteriormente en un foro correo, el equipo propuso una actualización del tiempo de ejecución de blockchain que agregó funcionalidad adicional. Esto incluyó dos funciones que otorgan la capacidad al comité técnico, por voto unánime, de modificar los cronogramas de adjudicación en los módulos de Reclamos y Adjudicación. Esta mejora fue aprobada en referéndum y fue promulgada el pasado jueves 13 de enero.

Estas funciones privilegiadas serán utilizadas por el equipo para corregir los cronogramas de adquisición de derechos incorrectos y luego se eliminarán lo antes posible en una actualización adicional del tiempo de ejecución.

Nuevos cronogramas de adquisición de derechos

La información del programa Vesting y BetaNet Staking Rewards para todos los poseedores de monedas se puede encontrar en https://vesting.xx.network.

Para cada monedero hay un archivo JSON que contiene la siguiente información:

  • principal: la cantidad de monedas presentes en la génesis
  • recompensa: la recompensa otorgada, ajustada según la opción elegida
  • opción: el programa BetaNet Staking Rewards opción seleccionada
  • vesting: toda la información sobre vesting
    • original: cronogramas de adjudicación presentes en génesis
    • betanet_rewards: cronograma de adjudicación requerido por las recompensas de participación de betanet
    • on_chain: cronogramas de adjudicación actualmente en cadena
    • calculado: cronogramas fijos de adquisición de derechos
  • incorrecta_en_cadena: la bandera para especificar en la concesión en cadena es incorrecta


Para cada monedero hay un archivo PNG que contiene tres gráficos de la cantidad de monedas bloqueadas en función del número de bloque. Estos proporcionan una manera más fácil de comparar la cantidad bloqueada por diferentes calendarios de adjudicación a lo largo del tiempo:

  • Adquisición original (izquierda): este gráfico muestra los cronogramas de adquisición originales (azul) con el requerido por BetaNet Staking Rewards (naranja). Después de la promulgación del programa, la cantidad bloqueada siempre debe ser la más restrictiva, es decir, max(original, betanet_rewards)
  • Adquisición en cadena (centro): este gráfico muestra la misma información que el anterior, pero con los cronogramas de adquisición en cadena superpuestos (verde). Aquí, los poseedores de monedas pueden ver de inmediato si la concesión actual no es válida y si está bloqueando más, menos (o ambas) monedas.
  • Nueva adjudicación (derecha): este gráfico muestra la misma información que el primero, pero con los nuevos calendarios de adjudicación (fijos) superpuestos (verde). Aquí, los poseedores de monedas pueden ver los cronogramas de otorgamiento que establecerá el equipo para solucionar los problemas encontrados, que, como se puede ver, siempre sigue el máximo entre el otorgamiento de recompensas original y betanet. Si este gráfico es el mismo que el del medio, eso significa que la concesión en cadena ya es correcta.


El nombre de archivo para cada archivo JSON y PNG es la dirección xx network del titular de la moneda, o la dirección ETH si las monedas no se reclamaron a partir del bloque 870000. Alentamos a todos los miembros de la comunidad a encontrar su información respectiva y comunicarse con el equipo si encuentran algún problema.

Metodología

Toda la información necesaria se compiló directamente desde el bloque de génesis y el estado en cadena en varios bloques. Al generar todos los archivos, se realizaron múltiples comprobaciones para detectar cualquier problema y corregirlo. El cálculo de los cronogramas fijos de adjudicación se realizó de forma recursiva ajustando los cronogramas originales y agregando partes de los cronogramas de recompensas de BetaNet según fuera necesario, de modo que el total resultante coincida con el bloqueo necesario en todos los bloques, que es exactamente el máximo entre ambos tipos de cronogramas.

Ejemplos de diferentes situaciones.

Reclamo sobrante sin candados originales, que muestra el problema 1

Reclamo sobrante con candados originales, que muestra los problemas 1 y 2

Reclamación sobrante con cerraduras originales, pero adquisición correcta

Titular con bloqueos originales, que muestra el problema 2 que provoca bloqueos más altos de lo esperado

Titular con bloqueos originales, que muestra el problema 2 que provoca bloqueos iniciales más altos y luego más bajos de lo esperado

Titular con cerraduras originales, pero correcta colocación

Titular sin cerraduras originales, pero correcta colocación

Titular con cerraduras originales, que muestra el error 1, debido a un reclamo después de la promulgación

Popular