Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cympletech/chamomile
Lightweight p2p library. Support build robust connection on decentralized network.
https://github.com/cympletech/chamomile
dht distributed network p2p rust
Last synced: about 9 hours ago
JSON representation
Lightweight p2p library. Support build robust connection on decentralized network.
- Host: GitHub
- URL: https://github.com/cympletech/chamomile
- Owner: CympleTech
- License: apache-2.0
- Created: 2019-06-25T10:04:01.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2024-03-19T00:23:07.000Z (9 months ago)
- Last Synced: 2024-08-06T07:06:46.820Z (5 months ago)
- Topics: dht, distributed, network, p2p, rust
- Language: Rust
- Homepage:
- Size: 394 KB
- Stars: 110
- Watchers: 5
- Forks: 18
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
[![crate](https://img.shields.io/badge/crates.io-v0.11.1-green.svg)](https://crates.io/crates/chamomile) [![doc](https://img.shields.io/badge/docs.rs-v0.11.1-blue.svg)](https://docs.rs/chamomile)
# Chamomile
*Build a robust stable connection on p2p network*## features
- Support build a robust stable connection between two peers on the p2p network.
- Support permissionless network.
- Support permissioned network (distributed network).
- DHT-based & Relay connection.
- Diff transports: QUIC(*default*) / TCP / UDP-Based Special Protocol.
- Multiple transports connecting at same runtime.## Simple test.
- A: `cargo run --example permissionless 127.0.0.1:8000`
- B: `cargo run --example permissionless 127.0.0.1:8001 127.0.0.1:8000`
- C: `cargo run --example permissionless 127.0.0.1:8002 127.0.0.1:8000`If not support `127.0.0.1` binding, you can change to `0.0.0.0` and try again.
## Relay test.
- A: `cargo run --example relay 192.168.xx.xx:8000`
- this ip is your LAN address, it will do relay work.
- B: `cargo run --example relay 127.0.0.1:8001 192.168.xx.xx:8000`
- start waiting stable connected by relay.
- C: `cargo run --example relay 127.0.0.1:8002 192.168.xx.xx:8000 XX..`
- XX.. is above's B network `peer id` will connected it.
- And if change B and C `127.0.0.1` to `0.0.0.0`, they will automatically connect after the handshake is successful, no longer need relay.## Design point
- Mobile phones, IoT devices, PC and servers are first-class citizens
- Ability to adapt to the transmission and penetration of complex network environments
- Support for springboard function, virtual connection with other nodes, build virtual DHT
- Encrypted transmission and secure DHT protection
- It can support all interconnections and single-center connections under the LAN, and can also support DHT in the public network environment
- Automatically switch the connection according to the number of connections and the network environment
- If Alice use QUIC, Bob use TCP, they can still connect and communicate with each other.## For more information, please visit:
- Website: https://cympletech.com
- Twitter: https://twitter.com/cympletech
- Discord: https://discord.gg/UfFjp6Kaj4
- E-mail: [email protected]## License
This project is licensed under either of
* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or
http://www.apache.org/licenses/LICENSE-2.0)
* MIT license ([LICENSE-MIT](LICENSE-MIT) or
http://opensource.org/licenses/MIT)
* Anti-War license ([LICENSE-AW](LICENSE-AW) or
https://github.com/sunhuachuang/AW-License)at your option.