Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/web3infra-foundation/libp2p-rs
An alternative libp2p implementation in Rust
https://github.com/web3infra-foundation/libp2p-rs
async libp2p peer-to-peer rust
Last synced: 2 days ago
JSON representation
An alternative libp2p implementation in Rust
- Host: GitHub
- URL: https://github.com/web3infra-foundation/libp2p-rs
- Owner: web3infra-foundation
- License: mit
- Created: 2020-10-26T08:07:37.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2023-04-07T10:55:18.000Z (over 1 year ago)
- Last Synced: 2024-05-22T06:21:18.883Z (7 months ago)
- Topics: async, libp2p, peer-to-peer, rust
- Language: Rust
- Homepage: https://github.com/web3infra-foundation/libp2p-rs
- Size: 2.56 MB
- Stars: 165
- Watchers: 14
- Forks: 24
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Security: docs/security.md
Awesome Lists containing this project
README
# Alternative repository for work on libp2p
![Continuous integration](https://github.com/netwarps/libp2p-rs/workflows/Continuous%20integration/badge.svg?branch=master)
This repository is an alternative implementation in `Rust` of the [libp2p](https://libp2p.io) spec. Not like `rust-libp2p`, `libp2p-rs` is written with async/await syntax, and driven by async runtime. Even though, many codes are borrowed from `rust-libp2p` and some from `go-libp2p`. We are trying to keep compatible with the two implementations, but it is unfortunately not guaranteed.
## Documentations
How to use the library?
As mentioned above, the API is completely different from `rust-libp2p`. There is no such thing as 'NetworkBehaviour' in `libp2p-rs` at all. Instead, you should build the Swarm with the transports you like to use, then you have to create a Swarm::Control from it. The Swarm::Control is exposing all Swarm APIs which can be used to manipulate the Swarm - open/read/write/close streams and even more. This is quite similar as the BasicHost in `go-libp2p`. As for Kad-DHT, similarly you should get the Kad::Control for the same reason. Furthermore, you can combine the Swarm with Kad, after that you have the RoutedHost, which has a routing functionality over the BasicHost.
It is strongly recommended to check the docs and sample code in details:
- API Documentations can be found: https://docs.rs/libp2p-rs
- Design documentation can be found in `docs`Code examples:
- Details about how to write your code can be found in `examples`
+ swarm_simple demonstrates how to build transport and create sub-stream for communication
+ kad_simple demonstrates how to run a Kad-DHT server. In this example, the interactive shell is integrated for debugging/observing Kad-DHT internal data structures
+ ...## Releases
NOTE: The master branch is now an active development branch (starting with v0.1.0), which means breaking changes could be made at any time.