Closed gabrielsdev closed 1 year ago
Prezado @gabrielsdev,
O mecanismo de discovery, de fato, utiliza o protocolo UDP para interação entre os nós da rede. As conexões propriamente ditas com os nós descobertos pelo referido protocolo são do tipo TCP. Entende-se que o uso de discovery permite uma abordagem de governança descentralizada e flexível da rede, ao passo que o uso de "static nodes", apesar de um controle mais direto sobre as conexões entre nós, acarreta mais rigidez e sobrecarga operacional de manutenção e gerência dos ingressos e egressos de novos nós na lista (inclusão manual dos nós, atualização do arquivo de configuração, etc).
obs: Caso sua dúvida tenha sido respondida, favor fechar a issue.
Perfeito, obrigado pela resposta! Acredito que o overhead na adição de um nó seja compensado com uma tentativa de conexão mais controlada e direta ao nó, uma vez que a frequência de adição de um nó na rede em tempo de execução será menor que as desconexões entre os nós por eventuais problemas. Além disso, o discovery exige maior processamento no nó, dessa forma, não faz sentido um processamento adicional por novos nós se um nó já está conectado com todos os outros nós.
De acordo com a documentação do Besu, os static nodes são um conjunto de nós confiáveis e estão isentos dos limites máximos de conexão remota.
Ao se tratar de uma rede permissionada, como é o caso do DREX, em que os nós são conhecidos e permissionados onchain, não seria o caso de utilizar static nodes na conexão dos nós?
O mecanismo de discovery, utilizado atualmente, é feito via protocolo udp, o que fragiliza uma conexão efetiva com os outros nós pela natureza desse protocolo. Além disso, a conexão dos nós via static nodes minimiza a dúvida da origem de um eventual problema de conexão entre os peers - se o problema é no nível de firewall ou no nível do Besu - uma vez que o Besu tenta manter conexões com os static nodes iniciando periodicamente uma conexão com qualquer static node desconectado.
Para cada novo nó ingressante na rede, seria necessário executar o comando admin_addPeer (para adicionar um nó estático em tempo de execução) e também adicionar o novo nó em um arquivo .json que já contenha os outros static nodes listados (a fim de que mesmo que um nó reinicie, o besu faça a tentativa de conexão, pois o comando admin_addPeer não persiste após o reinício de um nó).