项目简介
RandomX是一种基于内存硬度的加密哈希生成算法,专为通用CPU设计。它借助随机代码执行和多种内存硬技术,最大程度降低了专用硬件(如ASIC)的效率优势,主要用于Monero等加密货币的挖矿和验证。
项目的主要特性和功能
- 随机代码执行:利用虚拟机执行由整数运算、浮点运算和分支指令组成的随机生成程序。
- 内存硬技术:采用多种内存硬技术,保证算法在通用CPU上高效执行,同时限制专用硬件的优势。
- 两种操作模式:
- 快速模式:需2080 MiB共享内存,适用于挖矿。
- 轻量模式:仅需256 MiB共享内存,适用于验证,但运行速度较慢。
- 多平台支持:支持x86 - 64、ARM64等多种架构,包含JIT编译器以优化性能。
- 安全性:经过多次独立安全审计,未发现关键漏洞。
安装使用步骤
前提条件
- 已下载本项目的源码文件。
- 安装了CMake(最低版本2.8.7)和GCC(最低版本4.8,推荐7+)。
构建步骤
- 复制仓库:
bash cd RandomX
- 创建构建目录并配置:
bash mkdir build && cd build cmake -DARCH=native ..
- 编译:
bash make
- 运行测试:
bash ./randomx-tests
- 运行基准测试:
bash ./randomx-benchmark
使用示例
以下是一个简单的使用示例,展示如何使用RandomX进行哈希计算: ```c
include "../randomx.h"
include
int main() { const char myKey = "RandomX example key"; const char myInput = "RandomX example input"; char hash[RANDOMX_HASH_SIZE];
uint32_t flags = randomx_get_flags();
randomx_cache *cache = randomx_alloc_cache(flags);
randomx_init_cache(cache, myKey, strlen(myKey));
randomx_vm *vm = randomx_create_vm(flags, cache, NULL);
randomx_calculate_hash(vm, myInput, strlen(myInput), hash);
randomx_destroy_vm(vm);
randomx_release_cache(cache);
for (int i = 0; i < RANDOMX_HASH_SIZE; ++i) {
printf("%02x", (unsigned char)hash[i]);
}
printf("\n");
return 0;
} ```
配置和优化
- 配置标志:通过
randomx_get_flags()
获取配置标志,可选择是否使用JIT编译、硬件AES加速等。 - 大页内存:在支持的操作系统上,可使用大页内存以提高性能。
- 多线程支持:RandomX支持多线程挖矿和验证,可通过配置线程数来优化性能。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】