You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Alexey 6ee8c98862
PeerContext is used after being deleted, keep shared pointer to it. (#161)
3 years ago
.github/workflows Update ci.yml (#156) 3 years ago
cmake remove gossip multi-topic (#159) 3 years ago
example sign gossip messages (#160) 3 years ago
housekeeping MIT and ASLv2 licenses (#76) 4 years ago
include/libp2p sign gossip messages (#160) 3 years ago
src PeerContext is used after being deleted, keep shared pointer to it. (#161) 3 years ago
test tests: add missing cares dep to net injector test (#142) 3 years ago
.clang-format Kad (#32) 5 years ago
.clang-tidy remove gossip multi-topic (#159) 3 years ago
.gitignore Enable Code Coverage (#112) 4 years ago
.gitmodules remove dependencies from deps, check them out as external projects (#12) 5 years ago
.lcovrc Initial commit 5 years ago
CMakeLists.txt metrics (#149) 3 years ago
LICENSE-APACHE MIT and ASLv2 licenses (#76) 4 years ago
LICENSE-MIT MIT and ASLv2 licenses (#76) 4 years ago
README.md Update readme (#52) 5 years ago
codecov.yml Enable Code Coverage (#112) 4 years ago
docker-compose.yml Create github action workflow for CI (#1) 5 years ago

README.md

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:

  • GCC 7.4
  • Clang 6.0.1
  • AppleClang 11.0

Supported protocols

Development

Clone

To clone repository execute

git clone https://github.com/soramitsu/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/soramitsu/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.