bacen / pilotord-kit-onboarding

Documentação e arquivos de configuração para participação no Piloto do Real Digital
898 stars 214 forks source link

Static nodes #40

Closed gabrielsdev closed 1 year ago

gabrielsdev commented 1 year ago

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ó).

aldenio commented 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.

gabrielsdev commented 1 year ago

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.