#merkle #stream #feed #dat #p2p

hypercore

安全、分布式、只追加日志

35个版本

0.13.0 2024年7月4日
0.12.1 2023年10月28日
0.11.1-beta.102020年7月19日
0.11.1-beta.32020年3月3日
0.0.0 2018年3月30日

#56 in 密码学

Download history 7/week @ 2024-04-20 379/week @ 2024-04-27 898/week @ 2024-05-04 773/week @ 2024-05-11 831/week @ 2024-05-18 206/week @ 2024-05-25 189/week @ 2024-06-01 125/week @ 2024-06-08 433/week @ 2024-06-15 229/week @ 2024-06-22 353/week @ 2024-06-29 303/week @ 2024-07-06 413/week @ 2024-07-13 54/week @ 2024-07-20 211/week @ 2024-07-27 35/week @ 2024-08-03

716 每月下载量
用于 5 个crate(3 个直接使用)

MIT/Apache

230KB
5.5K SLoC

Hypercore

crates.io version build status downloads docs.rs docs

Hypercore是一个安全、分布式、只追加日志。这个crate是原始JavaScript holepunchto/hypercore的有限Rust版本。目标是与LTS版本保持磁盘存储的二进制兼容性。

有关相应的线协议实现,请参阅 hypercore-protocol-rs

特性

  • 创建内存磁盘Hypercore
  • 向Hypercore追加单个条目或条目批次
  • 从Hypercore获取条目
  • 从Hypercore清除范围,可选支持稀疏文件
  • 通过在源Hypercore中创建证明并在目标Hypercore中验证和应用它们来支持基本复制
  • 支持tokioasync-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

贡献

想要加入我们?查看我们的"贡献"指南并查看一些这些问题

许可证

MITApache-2.0

依赖项

~4–20MB
~244K SLoC