1 个不稳定版本
0.1.0 | 2021 年 8 月 10 日 |
---|
#52 in #entry
47KB
930 代码行,不含注释
bamboo-rs-core
验证、发布和解析 bamboo 条目。
关于
来自 规范
这是一个基于密码学的、分布式的、单写入者追加日志,支持可传递的局部数据复制和本地数据删除。
由科学驱动,这种日志格式可以作为一个更有效的替代方案,用于安全-scuttlebutt 的链表或 hypercore 的 Merkle 森林。
bamboo-rs-core
提供了低级函数和类型,可以使用 no_std
构建。
示例
NB: 发布和验证第一个条目是最简单的案例。后续条目需要传递上一个 seq_num、上一个条目和 lipmaa_link。
use bamboo_rs_core::{publish, verify, decode, yamf_hash::new_blake2b, Entry, Signature, YamfHash, Keypair, entry::MAX_ENTRY_SIZE};
use rand::rngs::OsRng;
let mut csprng: OsRng = OsRng {};
let key_pair: Keypair = Keypair::generate(&mut csprng);
let log_id = 0;
let payload = "hello bamboo!";
let mut out = [0u8; MAX_ENTRY_SIZE];
let size = publish(
&mut out,
&key_pair,
log_id,
payload.as_bytes(),
false,
None,
None,
None,
)
.unwrap();
let entry = decode(&out[..size]).unwrap();
let is_verified = verify(&out[..size], Some(payload.as_bytes()), None, None).is_ok();
let payload_hash = new_blake2b(payload.as_bytes());
assert!(is_verified);
assert_eq!(entry.log_id, log_id);
assert_eq!(entry.payload_hash, payload_hash);
assert_eq!(entry.author, key_pair.public);
assert_eq!(entry.lipmaa_link, None);
assert_eq!(entry.backlink, None);
assert_eq!(entry.is_end_of_feed, false);
依赖
~5MB
~100K 代码行数