Prueba de los multiplicadores regionales para el MainNet

Un mapa del mundo

El equipo está realizando las últimas pruebas con los multiplicadores regionales antes del MainNet para asegurarse de que actúan como se espera

Hace dos semanas, anunciamos la actualización de las franjas geográficas, y que esto alimentaría una prueba de los multiplicadores regionales: ese momento ha llegado. Con los datos de la semana pasada, hemos calculado nuevos multiplicadores para cada región:

Con estos multiplicadores, deberíamos compensar los factores de latencia de los nodos en funcionamiento en varias regiones.  

Se trata de un sistema imperfecto. Las regiones, como Oriente Medio, que sólo tienen un nodo, obtienen resultados que no son realmente descriptivos de su rendimiento general. Otras regiones, como el norte de África, no tienen ningún nodo y, por lo tanto, tendrán que adivinar sus valores.

Pero un reto aún mayor es que el multiplicador correcto es una función de cuántos nodos tiene una región. Al diseñar la red, hicimos que cada nodo de una región experimentara el multiplicador más alto de cualquier nodo del equipo. Esto es para asegurar que nunca haya un caso en el que los operadores de los nodos estén incentivados a no participar en una ronda. Como resultado, el multiplicador correcto para una región dada es una función del número de nodos en esa región.

Esto significa que los multiplicadores tendrán que ser actualizados regularmente a medida que la red crezca y se reduzca. Como se puede ver a continuación, la matemática de los multiplicadores es relativamente regular, por lo que puede ser posible integrarla en la cadena en algún momento y calcularla automáticamente cada vez. 

Esta solución también requiere ajustar la forma en que se manejan los multiplicadores. Originalmente, todos los nodos de un equipo heredaban los mismos multiplicadores. Esto daba lugar a unos multiplicadores muy extraños, así que estamos ajustando el algoritmo para dar a todos los nodos la media de su propio multiplicador y el más alto del equipo.

Cálculo de los multiplicadores

Al calcular los multiplicadores, empezamos con los números brutos, es decir, cuántos puntos obtuvo cada nodo en cada época excluyendo el multiplicador. Queremos que todo sea justo, y queremos que cada corredor de nodo esté incentivado a formar equipo con todos los demás nodos. Así que nuestro objetivo es asegurarnos de que la participación completa te da todos los "puntos" en la red.

Antes de continuar, algunas definiciones:

  1. Mᵢ - El multiplicador para todos los nodos de Bin i.
  2. Aᵢ - El valor del punto ajustado para la papelera i.
  3. Pᵢ - La probabilidad de que al menos un nodo del bin i se incluye en un equipo, y un nodo de cualquier bin <i no está incluido.


El cálculo se basa en datos reales de la red. Durante la última semana, obtuvimos el promedio de puntos ganados por las operaciones de cMix en una era por nodo. A continuación se "normalizó" para obtener el valor de puntos ajustado para el bin, conocido como Aᵢ.

El objetivo de este sistema es crear Multiplicadores de forma que los futuros As sean todos 1.

Las casillas se ordenan de mínimo a máximo por A. Al calcular los puntos, el multiplicador de cada nodo es la media de su multiplicador y el más alto del equipo (también el más bajo i). 

Dado que la región con la media más baja, la papelera 0, sobrescribe todas las demás, el multiplicador de la papelera 0 puede calcularse como:

Nuestro objetivo es asegurar que los multiplicadores y ajustes para todos los nodos de todos los equipos sean también el máximo de 1 en promedio. Ya que Mₙ es el multiplicador para la enésima casilla ordenada y Aₙ es la media normalizada para la enésima casilla ordenada. Esto se puede resolver fácilmente:

El siguiente multiplicador para la bandeja 1 puede calcularse como la probabilidad de que un nodo de la bandeja 1 sea seleccionado con un nodo de la bandeja 0 (que utiliza el multiplicador de la bandeja M0) y la probabilidad de que un nodo de la bandeja 1 no sea seleccionado con un nodo de la bandeja 0 (que utiliza el multiplicador del equipo M1):

Podemos hacer el mismo cálculo para la papelera 2:

Estas ecuaciones, para cualquier Bin, son resolubles y se pueden definir en términos del multiplicador. Para la Bin 2, las transformaciones para calcular el multiplicador son:

Podemos generalizar esto usando sumas para cualquier multiplicador de equipo Bin n:

Además de la definición recursiva, las probabilidades son complicadas de conseguir. Cada selección de un equipo de 5 nodos consiste en un sorteo aleatorio, sin reemplazo, del total de nodos de la red. Este tipo de selección se describe mediante una distribución hipergeométrica. Lo más frecuente es que esta distribución se aplique a un caso sencillo de recuento de objetos (nodos en nuestro caso) con una característica binaria (por ejemplo, en el ámbito del consenso BFT: nodos bizantinos/honestos). Sin embargo, en cMix hemos dividido los nodos en 12 bines, lo que convierte el problema en uno multidimensional, lo que significa que necesitamos calcular una distribución hipergeométrica multivariante. Por suerte, debido a la naturaleza del funcionamiento de los multiplicadores, cuando seleccionamos un nodo de, por ejemplo, la casilla 2, no nos importa si cualquier otro nodo del equipo es de una casilla que tiene un multiplicador mayor. Esto significa que todas las probabilidades que tenemos que calcular son similares: queremos tener un equipo con al menos un nodo de la casilla i, sin ningún nodo de todas las casillas <i. Incluimos una hoja de cálculo en nuestros recursos a continuación que muestran cómo hacer esto en detalle.

Error

Esta solución tiene algunos errores debido a que las discrepancias en los valores de A son en gran parte causadas por las variaciones en la duración de las rondas que afectan a las probabilidades de selección. Esta solución, tal y como la describe nuestra simulación, es correcta con un margen de 3%. El trabajo futuro puede deconstruir las causas de las variaciones de puntos para modelarlas mejor y reducir este error.

Recursos:

Lista de contenedores:

 https://docs.google.com/spreadsheets/d/1z9kvEW7XXcHYxUSPpXkoA1Cv9trIbY4VkPzaWzJEN_I/edit#gid=2056956216

Algoritmo de programación: https://git.xx.network/xx_network/primitives/-/blob/dev/region/ordering.go

Cálculo del multiplicador:

https://docs.google.com/spreadsheets/d/1d2HcuCVorKDkUppBam-dk-_PJ8ukPp8ja18DyE_VYJQ/edit?usp=sharing

Script en Python para simulaciones que confirmen los cálculos:

https://git.xx.network/-/snippets/3

Popular