Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/broxus/everscale-network
Implementation of the network part of the Everscale blockchain.
https://github.com/broxus/everscale-network
adnl blockchain dht everscale overlay protocol rldp venom-blockchain venom-developer-program venom-network
Last synced: 23 days ago
JSON representation
Implementation of the network part of the Everscale blockchain.
- Host: GitHub
- URL: https://github.com/broxus/everscale-network
- Owner: broxus
- License: apache-2.0
- Created: 2021-05-28T10:32:12.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2024-08-29T12:42:08.000Z (4 months ago)
- Last Synced: 2024-10-31T11:40:52.296Z (about 2 months ago)
- Topics: adnl, blockchain, dht, everscale, overlay, protocol, rldp, venom-blockchain, venom-developer-program, venom-network
- Language: Rust
- Homepage:
- Size: 633 KB
- Stars: 15
- Watchers: 11
- Forks: 9
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# everscale-network [![Latest Version]][crates.io] [![Workflow badge]][workflow] [![License Apache badge]][license apache] [![Docs badge]][docs]
## Table of Contents
- [About](#about)
- [Usage](#usage)
- [Contributing](#contributing)
- [License](#license)## About
Implementation of the network part of the Everscale blockchain.
### Network stack
```text
┌─────────────────────┐
│ Overlay │ - Overlay: Virtual subnetwork
┌──────────┼──────────┐ │ - DHT: Kademlia-like Distributed Hash Table
│ DHT │ RLDP │ │ - RLDP: Reliable Large Datagram Protocol
├──────────┴──────────┴──────────┤
│ ADNL │ - ADNL: Abstract Data Network Layer
├────────────────────────────────┤
│ UDP │ - underlying transport protocol
└────────────────────────────────┘
```## Usage
```bash
cargo add everscale-network
``````rust
use anyhow::Result;
use everscale_network::{adnl, NetworkBuilder};
use tl_proto::{TlRead, TlWrite};#[derive(TlWrite, TlRead)]
#[tl(boxed, id = 0x11223344)]
struct MyCustomData {
counter: u32,
}async fn example() -> Result<()> {
const DHT_KEY_TAG: usize = 0;
// Create and fill keystore
let keystore = adnl::Keystore::builder()
.with_tagged_key([1u8; 32], DHT_KEY_TAG)?
.build();// Create basic network parts
// NOTE: our ip address must be accessible from other peers
let (_adnl, dht) = NetworkBuilder::with_adnl("1.2.3.4:10000", keystore, Default::default())
.with_dht(DHT_KEY_TAG, Default::default())
.build()?;// Store some data in DHT
let stored = dht
.entry(dht.key().id(), "some_value")
.with_data(MyCustomData { counter: 0 })
.with_ttl(3600)
.sign_and_store(dht.key())?
.then_check(|_, MyCustomData { counter }| Ok(counter == 0))
.await?;
assert!(stored);Ok(())
}
```For more information you can check the [docs](https://docs.rs/everscale-network) or the [examples](https://github.com/broxus/everscale-network/tree/master/examples).
### Minimum Rust version
The current minimum required Rust version is `1.64.0`.
## Contributing
We welcome contributions to the project! If you notice any issues or errors, feel free to open an issue or submit a pull request.
## License
This project is licensed under the [License Apache].
[latest version]: https://img.shields.io/crates/v/everscale-network.svg
[crates.io]: https://crates.io/crates/everscale-network
[workflow badge]: https://img.shields.io/github/actions/workflow/status/broxus/everscale-network/master.yml?branch=master
[workflow]: https://github.com/broxus/everscale-network/actions?query=workflow%3Amaster
[license apache badge]: https://img.shields.io/github/license/broxus/everscale-network
[license apache]: https://opensource.org/licenses/Apache-2.0
[docs badge]: https://docs.rs/everscale-network/badge.svg
[docs]: https://docs.rs/everscale-network