1 unstable release

0.0.1 Sep 22, 2021

#12 in #rendezvous

MIT AND BSD-2-Clause

82KB
1.5K SLoC

p2p2

Github Workflows Docs.rs Crates.io

p2p2 is a successor to the p2p library. I felt such a successor was necessary as the original p2p library tries to be asynchronous while written in pre-rust 1.0 rust code. To make use of the original p2p library you need to implement your own event loop using mio which is, in modern rust, quite unnecessary. Furthermore, a number of dependencies of p2p are now unmaintained causing p2p not to compile with modern (>1.48) versions of rust.

This codebase is (at least currently) partially a copy of the original p2p. Many interfaces are similar and especially the cryptography is pretty much an exact copy.

Goals

The goals of p2p2 are the same as the goals of the original p2p crate:

The goal of this crate is to provide a robust and crypto-secure NAT traversal for peer to peer connection. It assumes publicly reachable rendezvous servers are provided.

The server code itself is in the crate too, so the crate can either be used to deploy a server or used for peer to peer client communication or both simultaneously - for e.g. if you run the server on a port forwarded endpoint, it will be publicly available for others to rendezvous while you could choose normal NAT traversal mechanisms to communicate with other peers.

Minimum supported rust version

Rust 1.47.0 and above

License

This software is licensed under the MIT and BSD-2-Clause. Included is also the copyright of maidsafe.net, the original copyright holder of select parts of this codebase.

Dependencies

~18–30MB
~194K SLoC