il s'agit d'une pratique de multidiffusion UDP et d'expérimentation DHT sur un hôte local. l'idée est d'exécuter autant d'instances de ce démon que vous le souhaitez, et toutes les instances se trouveront via la multidiffusion udp et construiront un réseau dht. chaque homologue du réseau génère une paire de clés ed25519 et se lie à un port aléatoire. le port est un service http qui prend les requêtes à ces points de terminaison :
le point de terminaison /dht sert les requêtes rpc websocket
le point de terminaison /api sert les requêtes https curl. à l'heure actuelle, le seul appel rpc implémenté est "ping"
tout cela est un travail en cours. plus de travail à ajouter bientôt.
comme chaque instance est exécutée sur le réseau (ou sur le même ordinateur), toutes les 5 secondes, l'instance diffuse un paquet UDP contenant une clé publique nouvellement générée, un port de service aléatoire et, par conséquent, sa propre adresse IP à partir du paquet IP. chaque fois qu'une instance reçoit un paquet de multidiffusion UDP, elle vérifie la clé publique du nouveau homologue par rapport à une carte. S'il s'agit d'un homologue nouvellement trouvé, elle l'enregistrera sur la sortie standard et l'ajoutera à la carte en mémoire. le bucket est imprimé toutes les 5 secondes
git clone
ce projet, ou téléchargez-le ici : master.zip./build.sh
pour construire dans Docker, ou utilisez simplement go build
./demo.sh
pour générer dix instances curl -kvs https://localhost:port/api/ping
^^^ cela indiquera au homologue d'effectuer un ping RPC vers les trois homologues les plus proches du compartiment.
quelques choses à noter: