#hashing #random-x #hash #bindings #error

randomx4r

Rust 对 RandomX 哈希的包装器

3 个不稳定版本

0.2.1 2020 年 6 月 15 日
0.2.0 2020 年 3 月 23 日
0.1.0 2020 年 3 月 17 日

#15 in #random-x

MIT 许可协议

14KB
247

randomx4r

RandomX 哈希的 Rust 包装器。

安装

依赖于 randomx4r-sys crate 的 FFI。构建此 crate 需要安装 CMake 和 C++ 编译器。

示例

一些小型示例包含在文档中。更大的示例在 examples 目录中

许可协议

本仓库中的代码在 MIT 许可协议下发布。有关更多信息,请参阅项目根目录中的 LICENSE 文件。


lib.rs:

librandomx 的 Rust 绑定,一个用于计算 RandomX 哈希的库。

示例

轻模式哈希

需要 256M 的共享内存。

use randomx4r::{RandomxCache, RandomxError, RandomxFlags, RandomxVm};

// Get flags supported by this system.
let flags = RandomxFlags::default();
let cache = RandomxCache::new(flags, b"key")?;
let vm = RandomxVm::new(flags, &cache)?;
let hash = vm.hash(b"input"); // is a [u8; 32]

快速模式哈希

需要 2080M 的共享内存。

use randomx4r::{RandomxDataset, RandomxError, RandomxFlags, RandomxVm};

// OR the default flags with FULLMEM (aka. fast mode)
let flags = RandomxFlags::default() | RandomxFlags::FULLMEM;
// Speed up dataset initialisation
const THREADS: u8 = 4;
let dataset = RandomxDataset::new(flags, b"key", THREADS)?;
let vm = RandomxVm::new_fast(flags, &dataset)?;
let hash = vm.hash(b"input");

错误

某些操作(例如分配 VM 或数据集)可能会失败,如果系统没有足够的空闲内存,或者如果尝试在不支持的功能(例如大页面或 AVX2)的系统上强制使用它。

依赖项

~0.5–2.5MB
~50K SLoC