7 个不稳定版本 (3 个破坏性版本)

0.5.0 2024 年 7 月 5 日
0.4.1 2023 年 10 月 26 日
0.3.1 2021 年 8 月 9 日
0.3.0 2021 年 3 月 10 日
0.0.1 2020 年 6 月 1 日

#206异步

Download history 123/week @ 2024-06-30 9/week @ 2024-07-07 1/week @ 2024-07-14 57/week @ 2024-07-28

每月 88 次下载
用于 peermerge

MIT/Apache

145KB
3K SLoC

Hypercore 协议

crates.io version build status downloads docs.rs docs

Hypercore 协议是一个基于消息的流式协议。这是从原始 JavaScript 版本的 线协议实现 翻译的 Rust 版本。本 crate 针对 Hypercore LTS 版本 10。

此 crate 为 hypercore-protocol 提供了一个低级流式 API,并公开了一个接口,可以轻松地在上面实现实际的协议逻辑。

此 crate 使用 async-stdtokio 进行异步 I/O,使用 snow 进行 Noise 握手,以及使用 RustCrypto 的 crypto_secretsteram 进行加密。

功能

  • 完成 Noise 握手
  • 建立 libsodium 的 crypto_secretstream
  • 使用密钥打开频道
  • 如果您的端知道密钥,则接受远程端打开的频道
  • 创建和验证能力哈希
  • 发送和接收所有协议消息
  • 支持 async-stdtokio 运行时
  • 支持 WASM
  • 测试 JavaScript 兼容性
  • 支持线协议中的新 manifest 以保持与即将推出的 v11 兼容
  • 完成文档并发布 v1.0.0

安装

cargo add hypercore-protocol

示例

以下示例在 Rust 和 NodeJS hypercore-protocol 实现之间同步数据。准备时,运行

cd examples-nodejs && npm install && cd ..

replication.rs

通过在 Rust 和 Node hypercores 之间复制 Hypercore 并打印结果来运行 replication.rs 示例。

  • Node 服务器 / Rust 客户端
node examples-nodejs/run.js nodeServer
  • Rust 服务器 / Node 客户端
node examples-nodejs/run.js rustServer
  • Rust 服务器 / Rust 客户端
node examples-nodejs/run.js rust
  • Node 服务器 / Node 客户端
node examples-nodejs/run.js node

开发

要测试与 JavaScript 的互操作性,启用 js_interop_tests 功能

cargo test --features js_interop_tests

使用以下内容运行 benches

cargo bench

贡献

我们正在积极寻找datrust开发的贡献者!如果您感兴趣,最简单的方法是在Hypercore协议Discord上的#rust频道打招呼。

想帮助Hypercore协议?请查看我们的“贡献”指南并查看开放的问题

许可证

MIT OR Apache-2.0

依赖项

~6–19MB
~263K SLoC