4 个版本
0.1.3 | 2024 年 5 月 17 日 |
---|---|
0.1.2 | 2024 年 5 月 17 日 |
0.1.1 | 2024 年 5 月 13 日 |
0.1.0 | 2024 年 5 月 13 日 |
579 在 硬件支持 中
每月下载量 44
13KB
255 行
XELIS Hash
XELIS Hash 预计可以在具有可控差距的 CPU 和 GPU 上运行。它依赖于两个著名算法:ChaCha8 和 Blake3。
摘要
新版本使用 ~440 KB 的缓存,可以重复使用于每次哈希。
阶段 1 将根据用作 ChaCha8 流密码键的输入随机化缓存。该键是 (前一个哈希 + 输入块) 的 Blake3 哈希。
第一个nonce基于输入的 Blake3 哈希结果的第一个 12 个字节。输入被分成几个 32 字节块,如果大小较小则用零填充。由于基于前一次迭代的 nonce,它不能并行化。
阶段 2 已被移除,因为现在所有工作都在阶段 3 中完成。
阶段 3 预计将在内存中进行大量的随机访问,同时被迫保持顺序。每次迭代有 4 次读取和 2 次写入,使其成为内存限制型。内循环中包含一个分支部分,以降低 FPGA 和 GPU 的效率。
(最终)阶段 4 使用 Blake3 算法对整个缓存进行哈希,以生成一个最终的高质量哈希。它还用于防止跳过缓存的某些部分,以强制其完全计算。
由于 ChaCha8 和 Blake3 真的很快并且可以高度并行化,因此使用它们,一个线程可以具有很高的哈希率,从而减少验证时间。
预期每哈希所需时间约为 1.20-1.50 毫秒。
功能
建议使用 v2
功能,但为了兼容性,在 v1
功能中也提供了先前版本。
依赖项
~1–1.5MB
~34K SLoC