3 个不稳定版本
0.2.1 | 2020 年 6 月 15 日 |
---|---|
0.2.0 | 2020 年 3 月 23 日 |
0.1.0 | 2020 年 3 月 17 日 |
#15 in #random-x
14KB
247 行
randomx4r
RandomX 哈希的 Rust 包装器。
安装
依赖于 randomx4r-sys crate 的 FFI。构建此 crate 需要安装 CMake 和 C++ 编译器。
示例
一些小型示例包含在文档中。更大的示例在 examples 目录中
multithreaded
- 使用多个核心进行哈希。
链接
许可协议
本仓库中的代码在 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