Golang implementation of RandomX
Go to file
2024-04-15 02:22:04 +02:00
aes General cleanup, improve load32 and dataset execution 2024-04-12 23:51:55 +02:00
asm Rename fpu to asm package 2024-04-11 15:49:22 +02:00
keys Generate constants from hashes on startup, generate LUT for aes, cleanup endianness to be all little-endian 2024-04-12 17:53:28 +02:00
.drone.yml Added 386 platform to round and tests 2024-04-11 10:36:10 +02:00
argon2.go Split argon2 / blake2b code, use go 1.21 features 2024-04-11 17:50:36 +02:00
blake2b.go Version v2.1.0, cleaned up useless printf and string comparisons 2024-04-13 00:07:49 +02:00
bytecode.go Use direct register and scratchpad under bytecode execution 2024-04-15 02:22:04 +02:00
cache.go General cleanup, improve load32 and dataset execution 2024-04-12 23:51:55 +02:00
config.go Use direct register and scratchpad under bytecode execution 2024-04-15 02:22:04 +02:00
dataset.go Include superscalar JIT for amd64, optimize memory allocations 2024-04-12 02:00:46 +02:00
dataset_light.go General cleanup, improve load32 and dataset execution 2024-04-12 23:51:55 +02:00
exec.go Include superscalar JIT for amd64, optimize memory allocations 2024-04-12 02:00:46 +02:00
exec_generic.go Include superscalar JIT for amd64, optimize memory allocations 2024-04-12 02:00:46 +02:00
exec_mmap_unix.go General cleanup, improve load32 and dataset execution 2024-04-12 23:51:55 +02:00
go.mod Version v2.0.0 with asm, jit, performance and allocation improvements 2024-04-12 02:08:40 +02:00
go.sum Include superscalar JIT for amd64, optimize memory allocations 2024-04-12 02:00:46 +02:00
LICENSE Working RandomX with minimal assembly for rounding mode (AMD64,ARM64) 2024-04-11 08:46:34 +02:00
randomx.go Update 'randomx.go' 2019-10-15 20:31:51 +02:00
randomx_test.go Version v2.0.0 with asm, jit, performance and allocation improvements 2024-04-12 02:08:40 +02:00
README.md Include superscalar JIT for amd64, optimize memory allocations 2024-04-12 02:00:46 +02:00
register.go Use direct register and scratchpad under bytecode execution 2024-04-15 02:22:04 +02:00
superscalar.go Version v2.1.0, cleaned up useless printf and string comparisons 2024-04-13 00:07:49 +02:00
superscalar_amd64.go Remove zero register from vm bytecode 2024-04-14 15:43:54 +02:00
superscalar_noasm.go Include superscalar JIT for amd64, optimize memory allocations 2024-04-12 02:00:46 +02:00
vm.go Use direct register and scratchpad under bytecode execution 2024-04-15 02:22:04 +02:00
vm_instruction.go Use direct register and scratchpad under bytecode execution 2024-04-15 02:22:04 +02:00

RandomX (Golang Implementation)

Fork from git.dero.io/DERO_Foundation/RandomX. Also related, their Analysis of RandomX writeup.

Original code failed RandomX testcases and was implemented using big.Float.

This package implements RandomX without CGO, using only Golang code, pure float64 ops and two small assembly sections to implement CFROUND modes.

All test cases pass properly.

Uses minimal Go assembly due to having to set rounding mode natively. Support can be added with supporting rounding mode under asm.

JIT is supported on a few platforms but can be hard-disabled via the disable_jit build flag, or at runtime.

Platform Supported SuperScalar JIT Notes
386
amd64 * JIT only on Unix
arm -
arm64
mips -
mips64 -
riscv64 -
wasm -