commit da057ab95248317969b0fa68bd53070c6d3f4bef
parent 0a57cf768b93005f089beb9f6277e5b0b31e06c8
Author: ch3 <ch3@mailbox.org>
Date: Thu, 31 Jul 2025 22:37:47 +0200
libp2p: more details on different subsystems
Diffstat:
1 file changed, 37 insertions(+), 0 deletions(-)
diff --git a/draft-gnunet-communicators.xml b/draft-gnunet-communicators.xml
@@ -1499,6 +1499,43 @@ content-length: LENGTH OF MESSAGE
different wrappers and converters have to be implemented before being able
to use them.
</t>
+ <t>
+ Gnunet HELLO and libp2p multiaddress: The basic element to connect two
+ gnunet peers via their libp2p communicators would be to exchange their
+ libp2p multiaddress as part of a gnunet HELLO. Both represent a collection
+ of different, underlying protocols, the respective implementations
+ communicate over. Due to the similarity in representation, an adaption is
+ needed to either (a) properly embed the one in the other without parsing
+ issues, or (b) being able to directly parse both.
+ For a better understanding, here is an exemplary libp2p multiaddress:
+ <artwork anchor="libp2p multiaddress" name="" type="" align="left" alt=""><![CDATA[
+/ip4/198.51.100/tcp/1234/p2p/QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wXmmE7DWjhx5N
+ ]]></artwork>
+ ... and an exemplary printable (shortened and obfuscated) representaiton
+ of a gnunet HELLO:
+ <artwork anchor="gnunet HELLO" name="" type="" align="left" alt=""><![CDATA[
+ gnunet://hello/HFXP<...>Y0/WDV0<...>WE20/1754<...>40?udp=%5Bfe80%3A%3Ad284%3A<...>3A2086&udp=%5B2003%3Acb%3A<...>%5D%3A2086<...>&tcp=%5Bfe80%3A%3A<...>%5D%3A2086&tcp=192.168.2.135%3A2086
+ ]]></artwork>
+ For the specification of libp2p multiaddresses see https://github.com/libp2p/specs/tree/master/addressing
+ </t>
+ <t>
+ Peer IDs: While gnunet only uses a single cryptographic primitive (EdDSA
+ curve Ed25519) keys, libp2p has the option of using different keys. While
+ not necessary if the connection is only as a communicator below transport,
+ there might be the possibility of a direct compatibility at this level.
+ (Probably a conversion in encoding/representation has still to be done.)
+ The difference being that libp2p peer ids are stable, gnunet peer ids can
+ change.
+ For more see the libp2p spec on peer-ids:
+ https://github.com/libp2p/specs/blob/master/peer-ids/peer-ids.md
+ </t>
+ <t>
+ DHT: The Distributed Hash Tables of both networks are a bit different and
+ as such not directly compatible. libp2p implements Kademlia
+ (https://github.com/libp2p/specs/tree/master/kad-dht), whereas
+ gnunet implements R5N
+ (https://docs.gnunet.org/latest/users/subsystems.html#dht-distributed-hash-table).
+ </t>
</section>
<section anchor="security" numbered="true" toc="default">
<name>Security and Privacy Considerations</name>