#sloth #subspace #opencl #codec #permutation #blockchain #cpu

无 std sl0th256-189

基于 SLOTH 排列的 Subspace 网络区块链的编码器/解码器

10 个不稳定版本 (3 个破坏性版本)

0.4.2 2022年6月21日
0.4.1 2022年6月13日
0.3.2 2022年5月17日
0.3.0 2022年3月29日
0.1.0 2021年8月31日

#3#subspace

MIT/Apache

245KB
6.5K SLoC

Perl 2K SLoC // 0.2% comments GNU Style Assembly 1.5K SLoC CUDA 1K SLoC // 0.0% comments C 879 SLoC // 0.0% comments Assembly 550 SLoC C++ 545 SLoC // 0.2% comments Rust 378 SLoC // 0.1% comments Shell 11 SLoC

sl0th256-189

基于 Subspace 网络区块链SLOTH 排列 的编码器/解码器

CI Crates.io Docs

这是将 SLOTH(慢速时间哈希函数)转换为使用标准 CBC 块密码的时间不对称排列的改编。

此库包含两个主要实现

  • CPU
  • OpenCL(需要启用 opencl 功能)

WebAssembly(也支持 no_std)但在此情况下需要可用的 llvm-ar 命令以使 build.rs 成功。

CPU

CPU 实现

  • 针对具有 ADX ISA 扩展的 x86-64 处理器的优化汇编辅助实现(Linux、macOS 和 Windows)
  • 任何支持 __int128 C 类型的 64 位平台(现代 GCC/Clang,但不支持 MSVC)
  • 其他平台的后备

更多详细信息,请参阅 src/cpu 下的 README.md

OpenCL

OpenCL 是一种通用实现,支持 AMD (ROCm)、Nvidia (CUDA) 和 Intel GPU,包括在同一台机器上同时支持多个 GPU 供应商。

OpenCL 实现的详细信息可以在 src/opencl 下的 mod.rs 中找到。

如何进行测试

在根目录下简单运行 cargo test

  • 使用 cargo test --features=opencl 启用 opencl 测试(必须在您的设备上安装 openCL 驱动程序)

如何进行基准测试

在根目录下简单运行 cargo bench

  • 使用 cargo bench --features=opencl 启用 opencl 测试(必须在您的设备上安装 openCL 驱动程序)

许可协议

在以下任一许可协议下授权:

任您选择。

贡献

除非您明确表示,否则根据 Apache-2.0 许可证定义的,您有意提交给 cc-rs 的任何贡献,应按上述方式双许可,不附加任何额外的条款或条件。

依赖项

~0–1.3MB
~17K SLoC