Dies ist eine Praxis beim UDP-Multicasting und beim DHT-Experimentieren in einem lokalen Host. Die Idee besteht darin, so viele Instanzen dieses Daemons auszuführen, wie Sie möchten, und alle Instanzen finden sich gegenseitig über UDP-Multicast und bauen ein DHT-Netzwerk auf. Jeder Peer des Netzwerks generiert ein ED25519-Schlüsselpaar und bindet es an einen zufälligen Port. Der Port ist ein HTTP-Dienst, der Anfragen an diesen Endpunkten entgegennimmt:
Der /dht-Endpunkt bedient WebSocket-RPC-Anfragen
Der /api-Endpunkt bedient https-Curl-Anfragen. Im Moment ist der einzige implementierte RPC-Aufruf „ping“.
Es ist alles noch in Arbeit. Weitere Arbeiten werden in Kürze hinzugefügt.
Da jede Instanz davon im Netzwerk (oder auf demselben Computer) ausgeführt wird, sendet die Instanz alle 5 Sekunden ein UDP-Paket, das einen neu generierten öffentlichen Schlüssel, einen zufälligen Service-Port und folglich ihre eigene IP-Adresse aus dem IP-Paket enthält. Jedes Mal, wenn eine Instanz ein UDP-Multicast-Paket empfängt, vergleicht sie den öffentlichen Schlüssel des neuen Peers mit einer Karte. Wenn es sich um einen neu gefundenen Peer handelt, protokolliert sie ihn auf stdout und fügt ihn der Karte im Speicher hinzu. Der Eimer wird alle 5 Sekunden gedruckt
git clone
dieses Projekt oder laden Sie es hier herunter: master.zip./build.sh
, um Docker zu erstellen, oder verwenden Sie einfach go build
./demo.sh
aus, um zehn Instanzen zu erzeugen curl -kvs https://localhost:port/api/ping
^^^ Dadurch wird der Peer angewiesen, einen RPC-Ping an die drei nächstgelegenen Peers im Bucket durchzuführen.
einige Dinge zu beachten: