randomx

package module
v0.1.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 10, 2020 License: BSD-3-Clause Imports: 3 Imported by: 3

README

go-randomx

WARNING: this is not a lib, but a binding

Do NOT use go mod import this

NOTICE: For better go.mod experience, like direcly import go-randomx dep through go get or go build, check the https://github.com/ngchain/RandomX and https://github.com/ngchain/go-randomx and their github actions.

Algorithms

  • random-x
  • random-xl
  • random-wow
  • random-arq
  • random-yada
  • ...

Build

Windows

Firstly download and install the msys2, then open and install the following components:

Take msys2's pacman for example

pacman -Syu
pacman -S git mingw64/mingw-w64-x86_64-go mingw64/mingw-w64-x86_64-gcc mingw64/mingw-w64-x86_64-cmake mingw64/mingw-w64-x86_64-make

Secondly clone this repo to your project folder

cd MyProject
git clone https://github.com/maoxs2/go-randomx

And then run ./build.sh to auto compile official random-x code

# clone and compile RandomX source code into librandomx
./build random-x # random-x can be replaced with random-xl random-arq random-wow

Finally you can using the package as your internal one.

Directly using it with import "github.com/MyProject/go-randomx" and then randomx.AllocCache() etc.

Linux

Take Ubuntu for example

Download the latest go from here and then install it following this instruction

sudo apt update && sudo apt upgrade 
sudo apt install git cmake make gcc build-essential

Secondly clone this repo to your project folder

cd MyProject
git clone https://github.com/maoxs2/go-randomx

And then run go generate to auto compile official random-x code

# clone and compile RandomX source code into librandomx
./build random-x # random-x can be replaced with random-xl random-arq random-wow

Finally you can using the package as your internal one.

Directly using it with import "github.com/myname/my-project/go-randomx" and then start the functions like randomx.AllocCache() etc.

More

If you have any better solution, tell me please.

Documentation

Index

Constants

View Source
const (
	FlagDefault     C.randomx_flags = 0 // for all default
	FlagLargePages  C.randomx_flags = 1 // for dataset & rxCache & vm
	FlagHardAES     C.randomx_flags = 2 // for vm
	FlagFullMEM     C.randomx_flags = 4 // for vm
	FlagJIT         C.randomx_flags = 8 // for vm & cache
	FlagSecure      C.randomx_flags = 16
	FlagArgon2SSSE3 C.randomx_flags = 32 // for cache
	FlagArgon2AVX2  C.randomx_flags = 64 // for cache
	FlagArgon2      C.randomx_flags = 96 // = avx2 + sse3
)

All flags

View Source
const RxHashSize = C.RANDOMX_HASH_SIZE

Variables

This section is empty.

Functions

func CalculateHash

func CalculateHash(vm VM, in []byte) []byte

func CalculateHashFirst

func CalculateHashFirst(vm VM, in []byte)

func CalculateHashNext

func CalculateHashNext(vm VM, in []byte) []byte

func DatasetItemCount

func DatasetItemCount() uint32

func DestroyVM

func DestroyVM(vm VM)

func GetDatasetMemory

func GetDatasetMemory(dataset Dataset) unsafe.Pointer

func InitCache

func InitCache(cache Cache, seed []byte)

func InitDataset

func InitDataset(dataset Dataset, cache Cache, startItem uint32, itemCount uint32)

func ReleaseCache

func ReleaseCache(cache Cache)

func ReleaseDataset

func ReleaseDataset(dataset Dataset)

func SetVMCache

func SetVMCache(vm VM, cache Cache)

func SetVMDataset

func SetVMDataset(vm VM, dataset Dataset)

Types

type Cache added in v0.1.4

type Cache *C.randomx_cache

func AllocCache

func AllocCache(flags ...C.randomx_flags) (Cache, error)

type Dataset added in v0.1.4

type Dataset *C.randomx_dataset

func AllocDataset

func AllocDataset(flags ...C.randomx_flags) (Dataset, error)

type VM added in v0.1.4

type VM *C.randomx_vm

func CreateVM

func CreateVM(cache Cache, dataset Dataset, flags ...C.randomx_flags) (VM, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL