esta é uma prática em UDP Multicasting e experimentação de DHT em um host local. a idéia é executar quantas instâncias deste daemon você quiser, e todas as instâncias se encontrarão via multicast udp e construirão uma rede dht. cada par da rede gera um par de chaves ed25519 e se liga a uma porta aleatória. a porta é um serviço http que recebe solicitações nestes terminais:
o endpoint /dht atende solicitações de websocket rpc
o endpoint /api atende solicitações curl https. no momento, a única chamada RPC implementada é "ping"
é tudo um trabalho em andamento. mais trabalho será adicionado em breve.
à medida que cada instância disso é executada na rede (ou no mesmo computador), a cada 5 segundos a instância transmite um pacote UDP contendo uma chave pública recém-gerada, uma porta de serviço aleatória e, conseqüentemente, seu próprio endereço IP do pacote IP. cada vez que uma instância recebe um pacote multicast UDP, ela verifica a chave pública do novo par em um mapa; se for um par recém-encontrado, ela o registrará no stdout e o adicionará ao mapa na memória. o balde é impresso a cada 5 segundos
git clone
este projeto ou baixe aqui: master.zip./build.sh
para construir no docker ou apenas use go build
./demo.sh
para gerar dez instâncias curl -kvs https://localhost:port/api/ping
^^^ isso dirá ao par para executar um ping RPC para os três pares mais próximos no intervalo.
algumas coisas a serem observadas: