randomx

package module
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Apr 11, 2024 License: BSD-3-Clause Imports: 7 Imported by: 1

README

randomx-go-bindings

CGO bindings for tevador/RandomX

Building requirements

RandomX Dependency
randomx-go-bindings Version Supported RandomX Versions Notes
v1.0.0 v1.2.0+ Support for randomx_calculate_commitment
git clone --depth 1 --branch v1.2.1 https://github.com/tevador/RandomX.git /tmp/RandomX && pushd /tmp/RandomX && \
    mkdir build && cd build && \
    cmake .. -DCMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX:PATH=/usr && \
    make -j$(nproc) && \
    make install && \
    popd && \
    rm -rf /tmp/RandomX

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AllocCache

func AllocCache(flags ...Flag) (*C.randomx_cache, error)

func AllocDataset

func AllocDataset(flags ...Flag) (*C.randomx_dataset, error)

func CalculateHashFirst

func CalculateHashFirst(vm *C.randomx_vm, in []byte)

CalculateHashFirst will begin a hash calculation.

func CreateVM

func CreateVM(cache *C.randomx_cache, dataset *C.randomx_dataset, flags ...Flag) (*C.randomx_vm, error)

func DatasetItemCount

func DatasetItemCount() uint32

func DestroyVM

func DestroyVM(vm *C.randomx_vm)

func FastInitFullDataset

func FastInitFullDataset(dataset *C.randomx_dataset, cache *C.randomx_cache, workerNum uint32)

FastInitFullDataset using c's pthread to boost the dataset init. 472s -> 466s

func GetCacheMemory

func GetCacheMemory(cache *C.randomx_cache) unsafe.Pointer

GetCacheMemory Used for p2pool internal consensus hash

func GetDatasetMemory

func GetDatasetMemory(dataset *C.randomx_dataset) unsafe.Pointer

func InitCache

func InitCache(cache *C.randomx_cache, seed []byte)

func InitDataset

func InitDataset(dataset *C.randomx_dataset, cache *C.randomx_cache, startItem uint32, itemCount uint32)

func ReleaseCache

func ReleaseCache(cache *C.randomx_cache)

func ReleaseDataset

func ReleaseDataset(dataset *C.randomx_dataset)

func SetVMCache

func SetVMCache(vm *C.randomx_vm, cache *C.randomx_cache)

func SetVMDataset

func SetVMDataset(vm *C.randomx_vm, dataset *C.randomx_dataset)

Types

type Flag

type Flag int
var (
	FlagDefault     Flag = 0 // for all default
	FlagLargePages  Flag = 1 // for dataset & rxCache & vm
	FlagHardAES     Flag = 2 // for vm
	FlagFullMEM     Flag = 4 // for vm
	FlagJIT         Flag = 8 // for vm & cache
	FlagSecure      Flag = 16
	FlagArgon2SSSE3 Flag = 32 // for cache
	FlagArgon2AVX2  Flag = 64 // for cache
	FlagArgon2      Flag = 96 // = avx2 + sse3
)

func GetFlags

func GetFlags() Flag

type RxCache

type RxCache struct {
	// contains filtered or unexported fields
}

func NewRxCache

func NewRxCache(flags ...Flag) (*RxCache, error)

func (*RxCache) Close

func (c *RxCache) Close()

func (*RxCache) Init

func (c *RxCache) Init(seed []byte) bool

func (*RxCache) IsReady

func (c *RxCache) IsReady(seed []byte) bool

type RxDataset

type RxDataset struct {
	// contains filtered or unexported fields
}

func NewRxDataset

func NewRxDataset(flags ...Flag) (*RxDataset, error)

func (*RxDataset) CInit

func (ds *RxDataset) CInit(seed []byte, workerNum uint32) bool

func (*RxDataset) Close

func (ds *RxDataset) Close()

func (*RxDataset) GoInit

func (ds *RxDataset) GoInit(seed []byte, workerNum uint32) bool

type RxHash

type RxHash [C.RANDOMX_HASH_SIZE]byte

func CalculateCommitment

func CalculateCommitment(in []byte, hash RxHash) (out RxHash)

CalculateCommitment Calculate a RandomX commitment from a RandomX hash and its input.

func CalculateHash

func CalculateHash(vm *C.randomx_vm, in []byte) (out RxHash)

CalculateHash Calculates a RandomX hash value.

func CalculateHashLast

func CalculateHashLast(vm *C.randomx_vm) (out RxHash)

CalculateHashLast will output the hash value of the previous input.

func CalculateHashNext

func CalculateHashNext(vm *C.randomx_vm, in []byte) (out RxHash)

CalculateHashNext will output the hash value of the previous input and begin the calculation of the next hash.

func Search(vm *C.randomx_vm, in []byte, target uint64, maxTimes uint64, jump uint32, nonce []byte) (hash RxHash, found bool, sol []byte)

type RxVM

type RxVM struct {
	// contains filtered or unexported fields
}

func NewRxVM

func NewRxVM(rxDataset *RxDataset, flags ...Flag) (*RxVM, error)

func (*RxVM) CalcHash

func (vm *RxVM) CalcHash(in []byte) RxHash

func (*RxVM) CalcHashFirst

func (vm *RxVM) CalcHashFirst(in []byte)

func (*RxVM) CalcHashLast

func (vm *RxVM) CalcHashLast() RxHash

func (*RxVM) CalcHashNext

func (vm *RxVM) CalcHashNext(in []byte) RxHash

func (*RxVM) Close

func (vm *RxVM) Close()

func (*RxVM) Search

func (vm *RxVM) Search(in []byte, target uint64, maxTimes uint64, jump uint32, nonce []byte) (hash RxHash, found bool, sol []byte)

func (*RxVM) UpdateDataset

func (vm *RxVM) UpdateDataset(rxDataset *RxDataset)

Jump to

Keyboard shortcuts

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