1 个稳定版本

1.2.1 2024 年 2 月 14 日

#2704魔法豆

42 每月下载量
5 个crate(3个直接)中使用

BSD-3-Clause

1.5MB
16K SLoC

C++ 8K SLoC // 0.1% comments Visual Studio Project 2K SLoC GNU Style Assembly 1.5K SLoC // 0.1% comments C 1K SLoC // 0.2% comments Rust 1K SLoC // 0.1% comments Assembly 1K SLoC // 0.2% comments Bitbake 263 SLoC Visual Studio Solution 177 SLoC Shell 46 SLoC // 0.2% comments PowerShell 34 SLoC // 0.5% comments

CI Coverage Status

RandomX-rs

Rust 对 RandomX 工作量证明(Pow)系统的绑定

构建依赖

此仓库使用了 git 子模块。

第一次编译或在大更新后,可能需要通过以下命令更新子模块

git submodule init
git submodule update

如果您遇到如下错误

fatal: Needed a single revision
Unable to find current revision in submodule path 'RandomX'

您可能需要查看源树中是否存在 RandomX 文件夹。在大小写不敏感的系统上,如 OsX 和 Windows,它可能是 randomx)。删除此文件夹并重复上面的命令应该可以解决问题。

Mac

安装 XCode,然后使用以下命令安装 XCode 命令行工具

xcode-select --install

对于 macOS Mojave,还需要安装额外的头文件,运行

open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

并按照提示操作

安装 Brew

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

运行以下命令安装所需的瓶装软件

brew install git
brew install cmake

Linux

运行以下命令安装依赖项

apt-get install git cmake libc++-dev libc++abi-dev

Windows

安装 Git

安装 CMake

安装 Visual Studio 2019 开发工具

Android

要使用 Android NDK 进行构建,需要设置 ANDROID_SDK_ROOT 环境变量。其他变量是可选的,因为它们有默认值。以下为 ARM64 构建示例命令

ANDROID_SDK_ROOT=/home/user/Android/Sdk \
ANDROID_PLATFORM=android-25 \
ANDROID_CMAKE=/home/user/Android/Sdk/cmake/3.22.1/bin/cmake \
ANDROID_CMAKE_TOOLCHAIN=/home/user/Android/Sdk/ndk/22.1.7171670/build/cmake/android.toolchain.cmake \
cargo build --target=aarch64-linux-android

故障排除

Mac/OSX

如果您遇到链接器问题或类似的消息

cstdint:153:8:错误:没有名为'int8_t' 全局命名空间中

然后你可能安装了多个冲突的clang版本。

尝试

  • which cc是否报告了多个二进制文件?如果是,卸载其中一个clang编译器可能有助于解决问题。
  • 升级cmake。 brew uninstall cmake && brew install cmake
  • cargoclean

在Apple ARM64硬件和更新的XCode版本中,RandomX可能在randomx-tests中失败。

[83] Hash test 1e (interpreter)               ... PASSED
[84] Hash test 2a (compiler)                  ... Assertion failed: (equalsHex(hash, "639183aae1bf4c9a35884cb46b09cad9175f04efd7684e7262a0ac1c2f0b4e3f")), function operator(), file tests.cpp, line 966.
zsh: abort      ./randomx-tests

或者

[88] Hash test 2e (compiler)                  ... PASSED
[89] Cache initialization: SSSE3              ... SKIPPED
[90] Cache initialization: AVX2               ... SKIPPED
[91] Hash batch test                          ... Assertion failed: (equalsHex(hash3, "c36d4ed4191e617309867ed66a443be4075014e2b061bcdaf9ce7b721d2b77a8")), function operator(), file tests.cpp, line 1074.
zsh: abort      ./randomx-tests

使用较旧的SDK构建可能会有所帮助。使用xcrun --show-sdk-path查找当前SDK的位置,例如

export RANDOMX_RS_CMAKE_OSX_SYSROOT="/Library/Developer/CommandLineTools/SDKs/MacOSX12.3.sdk"
cargo build

使用构建的二进制文件进行快速测试

find target -name randomx-tests -exec {} \;

依赖项