3个不稳定版本
0.2.1 | 2022年1月17日 |
---|---|
0.2.0 | 2022年1月17日 |
0.1.0 | 2022年1月17日 |
#1136 in 加密学
7KB
89 行
工作量证明
使用Blake3加密哈希函数的简单工作量证明算法。
let cost = 22;
let bytes = b"Hello, world!";
let meter = 10000000;
let nonce = proof_of_work::search(bytes, cost, meter);
assert!(proof_of_work::verify(bytes, nonce, cost));
主要点是:我们展示一些bytes
,并说一个“工作量证明”对于某个cost
是一个nonce : [u8; NONCE_SIZE]
,使得将nonce
连接到bytes
的哈希值有cost
个前导零。
为了verify
这样的证明,我们计算哈希值并检查它是否有cost
个前导零。为了search
这样的证明,我们不断生成随机的nonce
,直到我们猜测出一个构成工作量证明的值。也就是说,我们随机猜测直到猜对为止。鉴于这可能会无限进行下去,我们传递一个meter : u32
来在尝试一定次数后停止。
用例
当您想在不对机器人进行任何频率的利用的情况下向外部世界公开功能时,您必须以某种方式度量使用情况。通过要求API调用附带有与特定请求相关的昂贵工作的工作量证明,您可以通过无状态方式实现这一点。
为什么选择Blake3?
- 在消费级硬件上高效
- 没有已知的ASIC实现
- 拥有优秀的团队
- 在我看来,反转似乎非常困难,但这几乎不能算是一次安全审查
参考资料
依赖关系
~2MB
~46K SLoC