Home

Awesome

CPP-Libp2p

Fully compatible C++17 implementation of libp2p library

Libp2p is a modular networking stack described in spec

Dependencies

All dependencies are managed using Hunter. It uses cmake to download required libraries and does not require downloading and installing packages manually. Target C++ compilers are:

Supported protocols

Development

Clone

To clone repository execute

git clone https://github.com/libp2p/cpp-libp2p.git

Build cpp-libp2p

First build will likely take long time. However, you can cache binaries to hunter-binary-cache or even download binaries from the cache in case someone has already compiled project with the same compiler. To do so you need to set up two environment variables:

GITHUB_HUNTER_USERNAME=<github account name>
GITHUB_HUNTER_TOKEN=<github token>

To generate github token follow the instructions. Make sure read:packages and write:packages permissions are granted (step 7 in instructions).

This project can be built with

mkdir build && cd build
cmake -DCLANG_TIDY=ON ..
make -j

It is suggested to build project with clang-tidy checks, however if you wish to omit clang-tidy step, you can use cmake .. instead.

Tests can be run with:

cd build
ctest

CodeStyle

We follow CppCoreGuidelines.

Please use provided .clang-format file to autoformat the code.

Examples

Please explore example section to read examples of how to use the library

Adding cpp-libp2p to the project

cpp-libp2p can be integrated using hunter. Adding hunter support to your project is really simple and require you only to add some cmake. Check hunter example project for details.

After hunter is integrated adding cpp-libp2p can be done by adding these lines to cmake:

hunter_add_package(libp2p)
find_package(libp2p REQUIRED)

To set which version of cpp-libp2p to use it is required to add these lines to Hunter/config.cmake file:

hunter_config(libp2p
    URL https://github.com/libp2p/cpp-libp2p/archive/dad84a03a9651c7c2bb8a8f17d0e5ea67bd10b4f.zip
    SHA1 860742c6e3e9736d68b392513d795e09572780aa
    )

Where URL is the link to archive of certain commit in cpp-libp2p repo and SHA1 is the checksum of this archive. By simply updating URL and SHA1 it is possible to change the version of cpp-libp2p in another project.

Example of adding cpp-libp2p to other project can be found here and here

Notable users

Maintenance

Maintainers: @Warchant, @kamilsa, @harrm, @masterjedy, @igor-egorov, @art-gor

Tickets: Can be opened in Github Issues.