Teste de Multiplicadores Regionais para MainNet

Um mapa do mundo

A equipe está realizando testes finais nos Multiplicadores Regionais antes do MainNet para garantir que eles ajam como esperado

Há duas semanas, anunciamos as atualizações dos silos geográficos, e que isto iria alimentar um teste para os multiplicadores regionais - que chegou a hora. Utilizando os dados da semana passada, calculamos novos multiplicadores para cada região:

Com esses multiplicadores, devemos compensar os fatores de latência dos nós de funcionamento em várias regiões.  

Este é um sistema imperfeito. Regiões, como o Oriente Médio, que têm apenas um nó, estão lendo resultados que não são realmente descritivos de seu desempenho geral. Outras regiões, como o Norte da África não têm nenhum nó, e como resultado, terão que ter seus valores adivinhados.

Mas, um desafio ainda maior é que o multiplicador correto é uma função de quantos nós uma região tem. Ao projetar a rede, fizemos com que cada nó de uma região experimentasse o maior multiplicador de qualquer nó da equipe. Isto é para garantir que nunca haja um caso em que os operadores de nós sejam incentivados a não participar de uma rodada. Como resultado, o multiplicador correto para uma determinada região é uma função do número de nós naquela região.

Isto significa que os multiplicadores terão de ser atualizados regularmente à medida que a rede cresce e encolhe. Como pode ser visto abaixo, a matemática para multiplicadores é relativamente regular, portanto, pode ser possível integrá-la na cadeia em algum momento e calculá-la automaticamente a cada época. 

Esta solução também requer ajustes na forma como os multiplicadores são manuseados. Originalmente, todos os nós de uma equipe herdaram os mesmos multiplicadores. Isto resultou em alguns multiplicadores muito estranhos, então estamos ajustando o algoritmo para dar a todos os nós a média de seu próprio multiplicador e o mais alto da equipe.

Cálculo dos multiplicadores

Ao calcular os multiplicadores, começamos com os números brutos, quantos pontos cada nó obteve em cada época, excluindo o multiplicador. Queremos que tudo seja justo, e queremos que cada corredor de nós seja incentivado a se unir a todos os outros nós. Portanto, nosso objetivo é garantir que a participação plena lhe dê "pontos" completos na rede.

Antes de continuarmos, algumas definições:

  1. Mᵢ - O multiplicador para todos os nós no silo i.
  2. Aᵢ - O valor do ponto ajustado para o silo i.
  3. Pᵢ - A probabilidade de que pelo menos um nó do caixote do lixo i está incluído em uma equipe, e um nó de qualquer caixote do lixo <i não está incluído.


O cálculo é feito com base em dados reais da rede. Durante a última semana, obtivemos a média de pontos ganhos em operações de cMix em uma era por nó. Isto foi então "normalizado" para produzir o valor ajustado de pontos para a caixa, conhecido como Aᵢ.

O objetivo deste sistema é criar Multiplicadores tais que o futuro Como todos serão 1.

As caixas são ordenadas do mínimo ao máximo por A. Ao calcular os pontos, o multiplicador de cada nó é a média de seu multiplicador e o maior da equipe (também o i mais baixo). 

Como a região com a média mais baixa, Bin 0, sobrescreve todas as outras, o multiplicador do Bin 0 pode ser calculado como:

Nosso objetivo é garantir que os multiplicadores e ajustes para todos os nós em todas as equipes sejam também o máximo de 1 em média. Uma vez que Mₙ é o multiplicador para a enésima lixeira encomendada e Aₙ é a média normalizada para a enésima lixeira encomendada. Isto pode ser facilmente resolvido:

O próximo multiplicador da Bin 1 pode ser calculado como a probabilidade de um nó da Bin 1 ser selecionado com um nó da Bin 0 (que usa o multiplicador de Bin M0) e a probabilidade de que um nó da Bin 1 não seja junto com um nó da Bin 0 (que usa o multiplicador de equipe M1):

Podemos fazer o mesmo cálculo para a Caixa 2:

Estas equações, para qualquer caixa, são resolúveis e podem ser definidas em termos do multiplicador. Para o silo 2, as transformações para calcular o multiplicador são:

Podemos generalizar isto utilizando somatórios para qualquer caixa multiplicadora de equipes:

Além da definição recursiva, as probabilidades são complicadas de se acertar. Cada seleção de uma equipe de 5 nós consiste em um sorteio aleatório, sem substituição, do total de nós da rede. Este tipo de seleção é descrito por uma distribuição hipergeométrica. Mais freqüentemente, esta distribuição é aplicada a um simples caso de contagem de objetos (nós em nosso caso) com uma característica binária (por exemplo, no reino do consenso BFT: nós bizantinos/honestos). Entretanto, no cMix dividimos os nós em 12 bins, o que transforma o problema em multidimensional, o que significa que precisamos calcular uma distribuição hipergeométrica multivariada. Felizmente, devido à natureza de como os multiplicadores funcionam, quando estamos selecionando um nó de, digamos, caixa 2, não nos importamos se algum outro nó da equipe é de uma caixa que tem um multiplicador superior. Isto significa que todas as probabilidades que precisamos calcular são semelhantes: queremos ter uma equipe com pelo menos um nó do bin i, sem nenhum nó de todos os bins <i. Incluímos uma planilha em nossos recursos abaixo que mostra como fazer isso em detalhes.

Erro

Esta solução tem alguns erros devido ao fato de que as discrepâncias nos valores A são em grande parte causadas por variações na duração das rondas que impactam as probabilidades de seleção. Esta solução, conforme descrita por nossa simulação, está correta em 3%. O trabalho futuro pode desconstruir as causas das variações pontuais para melhor modelá-las e reduzir este erro.

Recursos:

Lista de silos:

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

Algoritmo de Programação: https://git.xx.network/xx_network/primitives/-/blob/dev/region/ordering.go

Cálculo do multiplicador:

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

Script Python para simulações para confirmar cálculos:

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

Popular