The Python implementation of the IPV8 library
- Q: Is this the new official Layer 3 solution for the Internet?
- A: No, the naming is a 10-years-old mockery of the deployment failure of IPv6 (which we sincerely hope will be deployed properly at some point in time).
What is IPv8 ?
IPv8 aims to provide authenticated communication with privacy. The design principle is to enable communication between public key pairs: IP addresses and physical network attachment points are abstracted away. This Python 3 package is an amalgamation of peer-to-peer communication functionality from Dispersy and Tribler, developed over the last 18 years by students and employees of the Delft University of Technology. The IPv8 library allows you to easily create network overlays on which to build your own applications.
- Authentication. We offer mutual authentication using strong cryptography. During an IPv8 communication session, both parties can be sure of the other party’s identity. IPv8 users are identified by their public key. The initial key exchange is designed so that secrets are never transmitted across the Internet, not even in encrypted form. We use a standard challenge/response protocol with protection against spoofing, man-in-the-middle, and replay attacks.
- Privacy. IPv8 is specifically designed for strong privacy protection and end-to-end encryption with perfect forward secrecy. We enhanced the industry standard onion routing protocol, Tor, for usage in a trustless environment (e.g. no trusted central directory servers).
- No infrastructure dependency. Everybody is equal in the world of IPv8. No central web server, discovery server, or support foundation is needed.
- Universal connectivity. IPv8 can establish direct communication in difficult network situations. This includes connecting people behind a NAT or firewall. IPv8 includes a single simple and effective NAT traversal technique: UDP hole-punching. This is essential when offering privacy without infrastructure and consumer-grade donated resources.
- Trust. You can enhance your security if you tell IPv8 which people you know and trust. It tries to build a web-of-trust automatically.
The dependencies for IPv8 are collected in the
requirements.txt file and can be installed using
python3 -m pip install --upgrade -r requirements.txt
On Windows or MacOS you will need to install
Libsodium separately, as explained here.
Running tests can be done by running:
Running the test suite on Python 3.7 requires the installation of
python3 -m pip install asynctest).
Running code coverage requires the
coverage package (
python3 -m pip install coverage).
A coverage report can be generated by running:
You can start creating your first network overlay by following the overlay creation tutorial.
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.