Skip to content
Python implementation of the IPv8 layer
Branch: master
Clone or download
qstokkink Merge pull request #524 from qstokkink/range_proofs
Added range proofs + attestation SDK refactoring
Latest commit 4bba58a Jun 20, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
doc Remove python2 specifics from docs and unix tests (#486) May 22, 2019
ipv8 Added PengBao range proof implementation Jun 20, 2019
stresstest Removed unused service_id usage Feb 15, 2019
systemd Added TrustChain crawler Aug 24, 2018
twisted/plugins Added option to set exitnode listen port May 23, 2019
.gitignore Add trial temp files/dirs to .gitignore Sep 16, 2018
.gitmodules Moved libnacl from submodule to requirements.txt Jan 18, 2018
.pylintrc Moved as many classes to six as possible Dec 11, 2018
LICENSE Initial commit Jun 27, 2017
README.md Remove python2 specifics from docs and unix tests (#486) May 22, 2019
__init__.py Initialized project structure Jun 27, 2017
create_test_coverage_report.py Moved as many classes to six as possible Dec 11, 2018
generate_key.py Added public key generation option Jan 15, 2019
github_increment_version.py Added automatic release bumper May 27, 2019
ipv8_service.py Allow anonymous communities May 20, 2019
regen_plugins_cache.py Ported all low hanging fruit Py3 files Sep 17, 2018
requirements.txt Switched to Py3 compatible meta classes Sep 17, 2018
run_all_tests_trial.py Ported all low hanging fruit Py3 files Sep 17, 2018
run_all_tests_unix.sh Removed run_nose.py Jun 13, 2019
run_all_tests_windows.bat Fixed Windows test recursion warning Dec 21, 2017
setup.py Fixed import order in setup.py May 27, 2019
test_classes_list.txt Added boudot commitment checks Jun 20, 2019

README.md

Linux: Windows: Mac:

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 2/3 package is an amalgamation of peer-to-peer communication functionality from Dispersy and Tribler, developed over the last 13 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.

IPv8 Objectives

  • 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.
  • NAT traversal. 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.

Dependencies

The dependencies for IPv8 are collected in the requirements.txt file and can be installed using pip:

pip install --upgrade -r requirements.txt

On Windows or MacOS you will need to install Libsodium separately, as explained here.

Tests

The test suite can run without any external packages, but the nosetests package is recommended (pip install nose). The test suite will automatically detect your back-end when running the tests. Running tests can be done (on UNIX) by running:

bash run_all_tests_unix.sh

On Windows you can run run_all_tests_windows.bat from the Command Prompt (cmd.exe). Running code coverage requires the coverage package (pip install coverage). A coverage report can be generated by running:

python create_test_coverage_report.py

Getting started

IPv8 can be used as a library or as a service. It is easiest to start off with the service, which has been provided here (see the configuration file for invocation options). This file will load the IPv8 stack for signed messaging, anonymous messaging, attribute attestation, public service discovery, peer discovery and peer keep-alive. You can start creating your first network overlay by following the overlay creation tutorial.

Additional documentation is also available for the TrustChain and anonymous overlay provided in IPv8.

You can’t perform that action at this time.