xx network Ajustes econômicos - Deduções de falhas em tempo real

Pessoa com uma calculadora

Com base no feedback da comunidade, a equipe tem uma proposta de economia, e está procurando a comunidade para ajudar na decisão final

Um problema que surgiu com o lançamento do xx network MainNet é que há alguns nós de menor desempenho rodando na rede.

Nas encarnações anteriores da rede - AlphaNet, BetaNet e ProtoNet - estas questões eram tratadas pela equipe simplesmente desativando os nós de mau desempenho. Isto obviamente não é possível no MainNet que é controlado pelo nPoS.  

A comunidade tem discutido esta questão desde o lançamento do MainNet (você pode encontrar um tópico muito atencioso no canal de conversa do #MainNet no discórdia). Soluções envolvendo escalas deslizantes de penalidades, entre outras, foram propostas. Em geral, a equipe é de opinião que um ajuste na solução existente, juntamente com uma modificação do lado do cliente, é a abordagem correta.

Para entender a solução atual, alguns detalhes da economia precisarão ser revistos. Em cada época (período de 24 horas) uma quantidade de moedas é concedida (o mecanismo para esta decisão é descrito no xx papel de economia) e distribuídos entre todos os nós. A parte dessas moedas concedida a um determinado nó é igual à sua parte do total de moedas ganhas. Por exemplo, se em uma época a premiação totalizar 50.000xx, e um nó específico receber 10.000 pontos de um total de 10.000.000, eles receberão (10.000/10.000.000)×(50.000xx) = 500xx (a serem divididos entre o validador e os nominadores).

Mas como esses pontos são conquistados?

Os pontos são ganhos por duas coisas dentro do xx network: fazer blocos e executar rodadas de cMix. É dentro do mecanismo de rodadas do cMix que se encontra o esquema de incentivo.

Sempre que uma rodada é concluída, todos os 5 nós da equipe ganham 10 pontos, enquanto que quando uma rodada falha durante a fase de tempo real, os nós perdem 20 pontos. Esta perda de pontos é para desincentivar o mau comportamento. No início isto parece muito injusto - se uma rodada falha devido a um nó, por que cada nó deve ser penalizado?

Há duas razões:

A primeira é que sob o BFT (Byzantine Fault Tolerance) não é possível determinar quem está em falta dentro do protocolo cMix. Isto significa que não é possível provar qual nó deve perder pontos.

O segundo é que no agregado, outros nós não são penalizados. Por exemplo, imagine uma rede com 15 nós e 5 equipes de nós em que todos os nós, exceto um, causam 0% de rondas a falha, com uma falha 50%. O que acontecerá é que, com rodadas suficientes, todos os nós bons trabalharão com o nó mau igualmente e, como os pontos são distribuídos com base na relação total de pontos, não no total de pontos, todos os nós "bons" terão o mesmo número de xx coin, enquanto o nó mau será penalizado. No caso acima, um nó estará em uma equipe com o nó ruim 1/3 do tempo. Ele tem uma taxa de falha de 50%, portanto todos os nós terão uma taxa de falha agregada de 16,667%. Assumindo 100.000 rodadas, e cada um participa de 1/3 do tempo, isso significa que com a economia atual, eles ganharão 10×100.000×⅓×(1-,667) = 277.778 pontos, e perderão 20×100.000×⅓×(,667) = 111.111 pontos, perfazendo um total de 166.667 pontos. Enquanto no mesmo cenário, o nó ofensor ganhará 10×100.000×⅓×() = 166.667 e perderá 20×100.000×⅓×() = 333.333 pontos, perfazendo um total de -166.667. Os pontos não podem ser negativos, então os nós ofensores recebem 0 pontos, e como resultado todas as recompensas são divididas entre os outros 14 nós bons de maneira uniforme - como se o nó ofensor nunca estivesse lá.

Esta solução funciona, com a exceção de que ela deve visar uma taxa de falha na qual os nós devem perder todos os seus ganhos. Dado que queremos um sistema com uma confiabilidade muito alta, queremos atingir um número muito superior a 50%.

Em geral, a equação relativa à taxa de falha visada e aos pontos é a seguinte:

Dado que os pontos de sucesso são sempre 10, isto nos dá 10:

Isto também é uma aproximação porque não leva em conta os multiplicadores regionais, quanto tempo leva para que os nós se recuperem de rodadas fracassadas, nem como diferentes configurações de hardware e de Internet podem ter impacto em tempos redondos. Mas é suficiente para análise neste momento.

A grande questão que permanece é, qual deve ser o "fracasso orientado" apropriado. Em geral, ela pode ser maior do que se espera porque os pontos, e portanto os ganhos, ainda caem substancialmente quando um nó tem altas taxas de falha que não a cumprem.

Nas últimas 12 horas, as taxas mais altas de falhas em tempo real são as seguintes:

27.22%, 3.79%, 3.58%, 1.64%, 1.19%

Com uma taxa média de falhas de 0,5% (mediana de 0,35%). 

Dados estes dados, a equipe acredita que devemos passar de uma taxa de falha de 33% para 5%, o que traria a dedução de pontos por falha em tempo real para 190.  

Gostaríamos de abrir esta questão para discussão comunitária nos próximos dias e revisitaremos o assunto com base na resposta de 6 de dezembro de 2021.

Há também uma solução de parada secundária na qual a equipe está trabalhando. A última falha com soluções econômicas é que elas podem levar tempo, o que não é ótimo quando as mensagens estão sendo ativamente descartadas pelo xx messenger e outros usuários do xxDk. Como resultado, a equipe publicará uma lista de operadores de nós atualmente com mau desempenho que os usuários do xxDK podem optar opcionalmente por não enviar mensagens em rodadas que contenham esses nós. Também será possível para os usuários do xxDK optarem por outras listas com curadoria separada.

A equipe também estará procurando fazer com que o multiplicador da equipe seja dependente do desempenho mínimo, com mais informações em breve.

Popular