c-libp2p is an implementation of the libp2p specification written in C. The project is still in active development but already provides the building blocks needed for peer-to-peer networking applications.
c-libp2p uses CMake and should build on Linux, macOS and Windows. A C compiler that supports the C11 standard is required.
git clone --recursive https://github.com/Pier-Two/c-libp2p.git
cd c-libp2p
The --recursive
flag ensures that all third-party submodules are fetched.
mkdir build
cmake -S . -B build
cmake --build build
ctest --test-dir build
Sanitizers can be enabled with -DENABLE_SANITIZERS=ON
and additional flags in SANITIZERS
. Stress tests for the TCP module are built when -DENABLE_STRESS_TESTS=ON
is passed.
A recent Visual Studio with CMake support is recommended. From the x64 Native Tools command prompt run:
mkdir build
cmake -S . -B build -G "Visual Studio 16 2019" -A x64
cmake --build build --config Release
ctest --test-dir build -C Release
When building shared libraries on Windows the produced DLLs are copied next to the test executables automatically.
src/
– library source codeinclude/
– public headerstests/
– unit testsbenchmarks/
– optional benchmarksdocs/
– user guides and examples
Detailed documentation is available under docs/.
c-libp2p bundles several third-party projects under lib/
:
- libtomcrypt and libtommath – LibTom License
- secp256k1 – MIT License
- sha3 – MIT-0 License
- WjCryptLib – Unlicense
- c20p1305 – MIT License
- libeddsa – Unlicense
- noise-c – MIT License
Please refer to each submodule for license details.
The code in this repository is licensed under the MIT License.