28 个版本
0.5.5 | 2024 年 8 月 8 日 |
---|---|
0.5.5-rc.0 | 2023 年 7 月 21 日 |
0.5.4 | 2023 年 5 月 26 日 |
0.5.3 | 2023 年 3 月 13 日 |
0.3.5 | 2022 年 7 月 6 日 |
#965 在 魔法豆
每月 315 次下载
345KB
8K SLoC
everscale-network
目录
关于
Everscale 区块链网络部分的实现。
网络栈
┌─────────────────────┐
│ 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
└────────────────────────────────┘
使用
cargo add everscale-network
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(())
}
最低 Rust 版本
当前所需的最低 Rust 版本是 1.64.0
。
贡献
我们欢迎对这个项目做出贡献!如果您发现任何问题或错误,请随时打开一个问题或提交一个拉取请求。
许可证
本项目采用 Apache 许可证。
依赖
~8–19MB
~248K SLoC