35个版本
0.13.0 | 2024年7月4日 |
---|---|
0.12.1 | 2023年10月28日 |
0.11.1-beta.10 | 2020年7月19日 |
0.11.1-beta.3 | 2020年3月3日 |
0.0.0 | 2018年3月30日 |
#56 in 密码学
716 每月下载量
用于 5 个crate(3 个直接使用)
230KB
5.5K SLoC
Hypercore
Hypercore是一个安全、分布式、只追加日志。这个crate是原始JavaScript holepunchto/hypercore的有限Rust版本。目标是与LTS版本保持磁盘存储的二进制兼容性。
有关相应的线协议实现,请参阅 hypercore-protocol-rs。
特性
- 创建内存和磁盘Hypercore
- 向Hypercore追加单个条目或条目批次
- 从Hypercore获取条目
- 从Hypercore清除范围,可选支持稀疏文件
- 通过在源Hypercore中创建证明并在目标Hypercore中验证和应用它们来支持基本复制
- 支持
tokio
或async-std
运行时 - 支持WASM进行内存存储
- 测试支持的特性的JavaScript互操作性
- 添加可选的读取缓存
- 在线协议中支持新的清单,以保持与即将推出的v11兼容
- 最终确定文档并发布v1.0.0
用法
// Create an in-memory hypercore using a builder
let mut hypercore = HypercoreBuilder::new(Storage::new_memory().await.unwrap())
.build()
.await
.unwrap();
// Append entries to the log
hypercore.append(b"Hello, ").await.unwrap();
hypercore.append(b"world!").await.unwrap();
// Read entries from the log
assert_eq!(hypercore.get(0).await.unwrap().unwrap(), b"Hello, ");
assert_eq!(hypercore.get(1).await.unwrap().unwrap(), b"world!");
在示例文件夹中查找更多示例,或者运行
cargo run --example memory
cargo run --example disk
cargo run --example replication
安装
cargo add hypercore
安全性
这个crate使用#![forbid(unsafe_code)]
来确保所有内容都在100%安全的Rust中实现。
开发
为了测试与JavaScript的互操作性,启用js_interop_tests
功能
cargo test --features js_interop_tests
使用以下命令运行bench
cargo bench
贡献
想要加入我们?查看我们的"贡献"指南并查看一些这些问题
许可证
依赖项
~4–20MB
~244K SLoC