Skip to content

Commit

Permalink
WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
JamesPiechota committed Sep 6, 2024
1 parent 8a9ca76 commit bdea11a
Show file tree
Hide file tree
Showing 29 changed files with 2,805 additions and 646 deletions.
42 changes: 31 additions & 11 deletions apps/arweave/c_src/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,6 @@ ERTS_INCLUDE_DIR ?= $(shell erl -noshell -eval 'io:format("~ts/erts-~ts/include/
ERL_INTERFACE_INCLUDE_DIR ?= $(shell erl -noshell -eval 'io:format("~ts", [code:lib_dir(erl_interface, include)]).' -s init stop)
ERL_INTERFACE_LIB_DIR ?= $(shell erl -noshell -eval 'io:format("~ts", [code:lib_dir(erl_interface, lib)]).' -s init stop)

C_SRC_DIR = $(CURDIR)
C_SRC_OUTPUT ?= $(CURDIR)/../priv/arweave.so

# System type and C compiler/flags.

UNAME_SYS := $(shell uname -s)
Expand Down Expand Up @@ -58,10 +55,26 @@ ifneq (, $(shell which pkg-config))
LDFLAGS += `pkg-config --libs openssl`
endif

CFLAGS += -fPIC -I $(ERTS_INCLUDE_DIR) -I $(ERL_INTERFACE_INCLUDE_DIR) -I /usr/local/include -I ../lib/RandomX/src
C_SRC_DIR = $(CURDIR)

CFLAGS += -fPIC -I $(ERTS_INCLUDE_DIR) -I $(ERL_INTERFACE_INCLUDE_DIR) -I /usr/local/include -I ../lib/RandomX/src -I $(C_SRC_DIR)
CXXFLAGS += -fPIC -I $(ERTS_INCLUDE_DIR) -I $(ERL_INTERFACE_INCLUDE_DIR) -I ../lib/RandomX/src -std=c++11
LDLIBS += -L $(ERL_INTERFACE_LIB_DIR) -L /usr/local/lib -lei -lssl -lcrypto


RX512_OUTPUT ?= $(CURDIR)/../priv/rx512_arweave.so
RX4096_OUTPUT ?= $(CURDIR)/../priv/rx4096_arweave.so
VDF_OUTPUT ?= $(CURDIR)/../priv/vdf_arweave.so

COMMON_RANDOMX_SOURCES = $(wildcard $(C_SRC_DIR)/randomx/*.c $(C_SRC_DIR)/randomx/*.cpp)
RX512_SOURCES = $(COMMON_RANDOMX_SOURCES) $(wildcard $(C_SRC_DIR)/*.c $(C_SRC_DIR)/randomx/rx512/*.c)
RX4096_SOURCES = $(COMMON_RANDOMX_SOURCES) $(wildcard $(C_SRC_DIR)/*.c $(C_SRC_DIR)/randomx/rx4096/*.c)
VDF_SOURCES = $(wildcard $(C_SRC_DIR)/*.c $(C_SRC_DIR)/vdf/*.c $(C_SRC_DIR)/vdf/*.cpp)

RX512_OBJECTS = $(addsuffix .o, $(basename $(RX512_SOURCES)))
RX4096_OBJECTS = $(addsuffix .o, $(basename $(RX4096_SOURCES)))
VDF_OBJECTS = $(addsuffix .o, $(basename $(VDF_SOURCES)))

LDLIBS += -L $(ERL_INTERFACE_LIB_DIR) -L /usr/local/lib -lei -lssl -lcrypto ../lib/RandomX/build/librandomx.a

# Verbosity.

Expand All @@ -74,15 +87,20 @@ cpp_verbose = $(cpp_verbose_$(V))
link_verbose_0 = @echo " LD " $(@F);
link_verbose = $(link_verbose_$(V))

ALL_LIB_SOURCES := $(wildcard $(C_SRC_DIR)/*.c $(C_SRC_DIR)/*.cpp)
ALL_LIB_OBJECTS = $(addsuffix .o, $(basename $(ALL_LIB_SOURCES)))

COMPILE_C = $(c_verbose) $(CC) $(CFLAGS) $(CPPFLAGS) -c
COMPILE_CPP = $(cpp_verbose) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c

$(C_SRC_OUTPUT): $(ALL_LIB_OBJECTS)
$(RX512_OUTPUT): $(RX512_OBJECTS)
@mkdir -p $(BASEDIR)/priv/
$(link_verbose) $(CXX) $(RX512_OBJECTS) $(LDFLAGS) $(LDLIBS) ../lib/RandomX/build512/librandomx512.a -shared -o $(RX512_OUTPUT)

$(RX4096_OUTPUT): $(RX4096_OBJECTS)
@mkdir -p $(BASEDIR)/priv/
$(link_verbose) $(CXX) $(ALL_LIB_OBJECTS) $(LDFLAGS) $(LDLIBS) -shared -o $(C_SRC_OUTPUT)
$(link_verbose) $(CXX) $(RX4096_OBJECTS) $(LDFLAGS) $(LDLIBS) ../lib/RandomX/build4096/librandomx4096.a -shared -o $(RX4096_OUTPUT)

$(VDF_OUTPUT): $(VDF_OBJECTS)
@mkdir -p $(BASEDIR)/priv/
$(link_verbose) $(CXX) $(VDF_OBJECTS) $(LDFLAGS) $(LDLIBS) -shared -o $(VDF_OUTPUT)

%.o: %.c
$(COMPILE_C) $(OUTPUT_OPTION) $<
Expand All @@ -96,8 +114,10 @@ $(C_SRC_OUTPUT): $(ALL_LIB_OBJECTS)
%.o: %.cpp
$(COMPILE_CPP) $(OUTPUT_OPTION) $<

all: $(RX512_OUTPUT) $(RX4096_OUTPUT) $(VDF_OUTPUT)

clean:
@rm -f $(C_SRC_OUTPUT) $(ALL_LIB_OBJECTS)
@rm -f $(RX512_OUTPUT) $(RX4096_OUTPUT) $(VDF_OUTPUT) $(RX512_OBJECTS) $(RX4096_OBJECTS) $(VDF_OBJECTS)



Expand Down
79 changes: 0 additions & 79 deletions apps/arweave/c_src/ar_mine_randomx.h

This file was deleted.

38 changes: 38 additions & 0 deletions apps/arweave/c_src/ar_nif.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#include <erl_nif.h>
#include "ar_nif.h"

// Utility functions.

ERL_NIF_TERM solution_tuple(ErlNifEnv* envPtr, ERL_NIF_TERM hashTerm) {
return enif_make_tuple2(envPtr, enif_make_atom(envPtr, "true"), hashTerm);
}

ERL_NIF_TERM ok_tuple(ErlNifEnv* envPtr, ERL_NIF_TERM term)
{
return enif_make_tuple2(envPtr, enif_make_atom(envPtr, "ok"), term);
}

ERL_NIF_TERM ok_tuple2(ErlNifEnv* envPtr, ERL_NIF_TERM term1, ERL_NIF_TERM term2)
{
return enif_make_tuple3(envPtr, enif_make_atom(envPtr, "ok"), term1, term2);
}

ERL_NIF_TERM error_tuple(ErlNifEnv* envPtr, ERL_NIF_TERM term)
{
return enif_make_tuple2(envPtr, enif_make_atom(envPtr, "error"), term);
}

ERL_NIF_TERM error(ErlNifEnv* envPtr, const char* reason)
{
return error_tuple(envPtr, enif_make_string(envPtr, reason, ERL_NIF_LATIN1));
}

ERL_NIF_TERM make_output_binary(ErlNifEnv* envPtr, unsigned char *dataPtr, size_t size)
{
ERL_NIF_TERM outputTerm;
unsigned char *outputTermDataPtr;

outputTermDataPtr = enif_make_new_binary(envPtr, size, &outputTerm);
memcpy(outputTermDataPtr, dataPtr, size);
return outputTerm;
}
13 changes: 13 additions & 0 deletions apps/arweave/c_src/ar_nif.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#ifndef AR_NIF_H
#define AR_NIF_H

#include <erl_nif.h>

ERL_NIF_TERM solution_tuple(ErlNifEnv*, ERL_NIF_TERM);
ERL_NIF_TERM ok_tuple(ErlNifEnv*, ERL_NIF_TERM);
ERL_NIF_TERM ok_tuple2(ErlNifEnv*, ERL_NIF_TERM, ERL_NIF_TERM);
ERL_NIF_TERM error_tuple(ErlNifEnv*, ERL_NIF_TERM);
ERL_NIF_TERM error(ErlNifEnv*, const char*);
ERL_NIF_TERM make_output_binary(ErlNifEnv*, unsigned char*, size_t);

#endif // AR_NIF_H
10 changes: 10 additions & 0 deletions apps/arweave/c_src/randomx/ar_randomx.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#ifndef AR_RANDOMX_H
#define AR_RANDOMX_H

// From RandomX/src/jit_compiler.hpp
// needed for the JIT compiler to work on OpenBSD, NetBSD and Apple Silicon
#if defined(__OpenBSD__) || defined(__NetBSD__) || (defined(__APPLE__) && defined(__aarch64__))
#define RANDOMX_FORCE_SECURE
#endif

#endif // AR_RANDOMX_H
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
#ifndef FEISTEL_MSGSIZE_KEY_CIPHER_H
#define FEISTEL_MSGSIZE_KEY_CIPHER_H


#define FEISTEL_BLOCK_LENGTH 32

#if defined(__cplusplus)
Expand All @@ -10,3 +14,5 @@ void feistel_decrypt(const unsigned char *ciphertext, const size_t ciphertext_le
#if defined(__cplusplus)
}
#endif

#endif // FEISTEL_MSGSIZE_KEY_CIPHER_H
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
#ifndef RANDOMX_LONG_WITH_ENTROPY_H
#define RANDOMX_LONG_WITH_ENTROPY_H

#include "randomx.h"

#define RANDOMX_ENTROPY_SIZE (256*1024)
Expand All @@ -12,3 +15,5 @@ RANDOMX_EXPORT void randomx_decrypt_chunk(randomx_vm *machine, const unsigned ch
#if defined(__cplusplus)
}
#endif

#endif // RANDOMX_LONG_WITH_ENTROPY_H
Loading

0 comments on commit bdea11a

Please sign in to comment.