1 个不稳定版本
0.1.0 | 2023年12月29日 |
---|
#1710 在 加密学
12KB
66 行
历史证明
历史证明概念(PoH)的简单、极简演示实现。它允许创建一个连续的、可加密验证的哈希数据序列(tick)。
该库使用 RustCrypto 群的 Digest
trait 对哈希实现进行泛型化,使其易于使用不同的哈希实现作为 tick 的基础。
该软件包提供了以下功能
- Tick 生成:使用实现
Digest
trait 的任何哈希算法从digest
软件包计算加密哈希(tick)。支持将任意数据与每个 tick 关联。 - 连续哈希序列:生成一个无限的 tick 序列,每个 tick 基于前一个 tick 的哈希值,形成一个链式哈希序列。
- 并行验证:使用并行处理有效地验证一系列 tick。验证速度比生成新的 tick 要快得多,确保验证者总能赶上 tick 生成者。尽管如此,这里的多核实现仍然比使用 GPU 可实现的加速速度低几个数量级。
示例
生成 Ticks
type Hasher = sha2::Sha256;
let seed = <_>::default();
let mut ticks = proof_of_history::ticks::<Hasher>(seed);
for i in 0..10 {
let tick = ticks.next();
println!("Tick {}: {:x}", i, tick);
}
验证 Tick 序列
type Hasher = sha2::Sha256;
let seed = <_>::default();
let mut ticks = proof_of_history::ticks::<Hasher>(seed);
let ticks: Vec<_> = std::iter::from_fn(|| Some(ticks.next())).take(2usize.pow(16)).collect();
proof_of_history::verify::<Hasher, _>(&ticks, |_, _| <_>::default()).unwrap();
请参阅 examples/demo.rs,以查看一个 tick 生成器和验证器同时运行的演示。
基准测试
提供了一些基准测试,以了解不同哈希方法的每秒 tick 生成率以及误差范围。例如,我的 M2 MacBook Air 每秒产生了约 5.5M 个 sha256 tick,并验证了约 30.7M 个 tick。
依赖项
~1.5MB
~33K SLoC