2018-08-22 10:46:23 +02:00
# Central repository for work on libp2p
2017-11-08 13:03:59 +01:00
2018-11-24 12:39:13 +00:00
< a href = "http://libp2p.io/" > < img src = "https://img.shields.io/badge/project-libp2p-yellow.svg?style=flat-square" / > < / a >
[](https://deps.rs/repo/github/libp2p/rust-libp2p)
2022-07-21 22:58:41 +02:00
[](https://crates.io/crates/libp2p)
[](https://docs.rs/libp2p)
2022-12-19 07:34:29 +01:00
[](https://libp2p.github.io/rust-libp2p/libp2p/)
2018-11-13 19:47:28 +01:00
2018-08-22 10:46:23 +02:00
This repository is the central place for Rust development of the [libp2p ](https://libp2p.io ) spec.
2017-11-08 13:03:59 +01:00
2021-03-16 15:14:17 +01:00
## Getting started
2018-05-18 14:56:11 +02:00
2021-03-16 15:14:17 +01:00
- **Main documentation** can be found on https://docs.rs/libp2p.
2018-05-18 14:56:11 +02:00
2021-03-16 15:14:17 +01:00
- The ** [examples ](examples )** folder contains small binaries showcasing the
many protocols in this repository.
2018-01-23 19:21:41 +01:00
2022-12-12 15:17:05 +01:00
- For **security related issues** please [file a private security vulnerability
report](https://github.com/libp2p/rust-libp2p/security/advisories/new)
or reach out to [security@libp2p.io ](mailto:security@libp2p.io ). Please do not
file a public issue on GitHub.
2021-08-16 16:07:38 +02:00
- To **report bugs, suggest improvements or request new features** please open a
2021-03-16 15:14:17 +01:00
GitHub issue on this repository.
2019-04-16 15:13:44 +02:00
2021-03-16 15:14:17 +01:00
- For **rust-libp2p specific questions** please use the GitHub _Discussions_
forum https://github.com/libp2p/rust-libp2p/discussions.
2018-08-22 10:46:23 +02:00
2021-03-16 15:14:17 +01:00
- For **discussions and questions related to multiple libp2p implementations**
please use the libp2p _Discourse_ forum https://discuss.libp2p.io.
2021-02-01 16:37:19 +01:00
2022-01-28 18:46:59 +01:00
- For general project updates and discussions join the [biweekly libp2p Community
Calls](https://discuss.libp2p.io/t/libp2p-community-calls/1157).
2021-02-01 16:37:19 +01:00
## Repository Structure
The main components of this repository are structured as follows:
2022-03-05 20:29:15 +01:00
* `core/` : The implementation of `libp2p-core` with its `Transport` and
`StreamMuxer` API on which almost all other crates depend.
2021-02-01 16:37:19 +01:00
* `transports/` : Implementations of transport protocols (e.g. TCP) and protocol upgrades
(e.g. for authenticated encryption, compression, ...) based on the `libp2p-core` `Transport`
API .
* `muxers/` : Implementations of the `StreamMuxer` interface of `libp2p-core` ,
e.g. (sub)stream multiplexing protocols on top of (typically TCP) connections.
Multiplexing protocols are (mandatory) `Transport` upgrades.
* `swarm/` : The implementation of `libp2p-swarm` building on `libp2p-core`
2022-02-21 13:32:24 +01:00
with the central interfaces `NetworkBehaviour` and `ConnectionHandler` used
2021-02-01 16:37:19 +01:00
to implement application protocols (see `protocols/` ).
* `protocols/` : Implementations of application protocols based on the
`libp2p-swarm` APIs.
* `misc/` : Utility libraries.
* `examples/` : Worked examples of built-in application protocols (see `protocols/` )
with common `Transport` configurations.
2021-04-06 14:10:25 +02:00
## Community Guidelines
The libp2p project operates under the [IPFS Code of
Conduct](https://github.com/ipfs/community/blob/master/code-of-conduct.md).
> tl;dr
>
> - Be respectful.
> - We're here to help: abuse@ipfs.io
> - Abusive behavior is never tolerated.
> - Violations of this code may result in swift and permanent expulsion from the
> IPFS [and libp2p] community.
> - "Too long, didn't read" is not a valid excuse for not knowing what is in
> this document.
2021-10-02 02:07:42 +02:00
## Maintainers
2022-05-18 12:13:22 +02:00
(In alphabetical order.)
- Elena Frank ([@elenaf9 ](https://github.com/elenaf9/ ))
2023-01-09 15:00:43 +01:00
- João Oliveira ([@jxs ](https://github.com/jxs ))
2021-10-02 02:07:42 +02:00
- Max Inden ([@mxinden ](https://github.com/mxinden/ ))
- Thomas Eizinger ([@thomaseizinger ](https://github.com/thomaseizinger ))
2018-08-22 10:46:23 +02:00
## Notable users
(open a pull request if you want your project to be added here)
2022-09-24 13:49:45 +01:00
- [COMIT ](https://github.com/comit-network/xmr-btc-swap ) - Bitcoin– Monero Cross-chain Atomic Swap.
- [Forest ](https://github.com/ChainSafe/forest ) - An implementation of Filecoin written in Rust.
2022-10-14 02:10:52 -06:00
- [fuel-core ](https://github.com/FuelLabs/fuel-core ) - A Rust implementation of the Fuel protocol.
2022-12-06 07:14:37 -05:00
- [HotShot ](https://github.com/EspressoSystems/HotShot ) - Decentralized sequencer in Rust developed by [Espresso Systems ](https://www.espressosys.com/ ).
2022-09-24 13:49:45 +01:00
- [ipfs-embed ](https://github.com/ipfs-rust/ipfs-embed ) - A small embeddable ipfs implementation
2022-12-18 04:57:49 +11:00
used and maintained by [Actyx ](https://www.actyx.com ).
2022-09-24 13:49:45 +01:00
- [iroh ](https://github.com/n0-computer/iroh ) - Next-generation implementation of IPFS for Cloud & Mobile platforms.
- [Lighthouse ](https://github.com/sigp/lighthouse ) - Ethereum consensus client in Rust.
- [Locutus ](https://github.com/freenet/locutus ) - Global, observable, decentralized key-value store.
- [rust-ipfs ](https://github.com/rs-ipfs/rust-ipfs ) - IPFS implementation in Rust.
- [Starcoin ](https://github.com/starcoinorg/starcoin ) - A smart contract blockchain network that scales by layering.
- [Subspace ](https://github.com/subspace/subspace ) - Subspace Network reference implementation
- [Substrate ](https://github.com/paritytech/substrate ) - Framework for blockchain innovation,
used by [Polkadot ](https://www.parity.io/technologies/polkadot/ ).