Milestones 2+3 completed (NLnet-funded project "R5N (2021-02-038)")
Bernd Fix <[email protected]>
| Newsgroups | gmane.network.gnunet.devel |
|---|---|
| Message-ID | <[email protected]> |
Dear GNUnet community, I am happy to announce the completion of milestones 2 and 3 for the "Go implementation of the R5N DHT" which is a NLnet-funded project "R5N (2021-02-038)". The source code is written for Go1.18+ (it makes use of generics in some places); it can be found in the GNUnet Repository at "https://git.gnunet.org/gnunet-go.git/" with tag "v0.1.30" in the master branch. As others started to (re-)use `gnunet-go` in their own code base (see https://git.taler.net/taldir.git/ for example), the README contains a final chapter on how to easily integrate `gnunet-go` into your own projects. If you are a developer, you might want to take a look at that documentation. The code for Milestones 2 and 3 covers the following areas: # Milestone 2 ## Bloomfilter with optional mutator to randomize recurring filters. [`gnunet/service/dht/blocks/filters.go`] ## Service messages defined DHT_P2P_GET, DHT_P2P_PUT, DHT_P2P_RESULT and DHT_P2P_HELLO messages [`gnunet/message/msg_dht_p2p.go`] and implemented handling [`gnunet/service/dht/messages.go`] ## Managing routing tables: * processing messages for peer visibility * add/update peers * remove dead peers * handling of expired peers * Recursive lookup * Approximate lookup * Replication see [`gnunet/service/dht/routingtable.go`] # Milestone 3 ## Path signatures creating, tracking and verifying path signatures [`gnunet/service/dht/path`] and integration of pathes into DHT-P2P-GET/PUT/RESULT processes [`gnunet/service/dht/messages.go`] We are now ready to start intergration tests between the Go- and C-based implementations which for sure will uncover quite a few undiscovered bugs and glitches. I think that the Go implementation (as a clean-room implementation only based on the LSD0004 draft of the protocol) helped a lot in ironing out the protocol; draft- and code-wise. If one day the Go implementation speaks TNG, it will be possible to run GNUnet as a pure-Go implementation with GNS support. Cheers, Bernd.