From 1715dbf3fe7115abadfce1eae51651637dc243c1 Mon Sep 17 00:00:00 2001 From: lbqds Date: Fri, 16 Aug 2024 10:53:33 +0800 Subject: [PATCH 1/2] Update mining protocol --- src/constants.h | 1 + src/main.cu | 10 +++++++++- src/messages.h | 17 +++++++++++++++++ src/worker.h | 3 ++- 4 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/constants.h b/src/constants.h index 2ca7d7b..7319e77 100644 --- a/src/constants.h +++ b/src/constants.h @@ -7,5 +7,6 @@ #define parallel_mining_works_per_gpu 4 #define max_worker_num (max_gpu_num * parallel_mining_works_per_gpu) #define mining_steps 5000 +#define mining_protocol_version 1 #endif // ALEPHIUM_CONSTANTS_H diff --git a/src/main.cu b/src/main.cu index 41ab539..552346f 100644 --- a/src/main.cu +++ b/src/main.cu @@ -273,7 +273,15 @@ void on_read(uv_stream_t *server, ssize_t nread, const uv_buf_t *buf) break; case SUBMIT_RESULT: - LOG("submitted: %d -> %d: %d \n", message->submit_result->from_group, message->submit_result->to_group, message->submit_result->status); + char *block_hash_hex = bytes_to_hex(message->submit_result->block_hash, 32); + LOG( + "submitted: %d -> %d, %s: %d \n", + message->submit_result->from_group, + message->submit_result->to_group, + block_hash_hex, + message->submit_result->status + ); + free(block_hash_hex); break; } free_server_message_except_jobs(message); diff --git a/src/messages.h b/src/messages.h index ae069b8..871b660 100644 --- a/src/messages.h +++ b/src/messages.h @@ -9,6 +9,7 @@ #include #include "log.h" +#include "constants.h" typedef struct blob_t { uint8_t *blob; @@ -79,6 +80,7 @@ typedef struct job_t { blob_t header_blob; blob_t txs_blob; blob_t target; + int height; } job_t; void free_job(job_t *job) { @@ -104,6 +106,7 @@ void free_jobs(jobs_t *jobs) typedef struct submit_result_t { int from_group; int to_group; + uint8_t block_hash[32]; bool status; } submit_result_t; @@ -218,6 +221,7 @@ void extract_job(uint8_t **bytes, job_t *job) extract_blob(bytes, &job->header_blob); extract_blob(bytes, &job->txs_blob); extract_blob(bytes, &job->target); + job->height = extract_size(bytes); } void extract_jobs(uint8_t **bytes, jobs_t *jobs) @@ -234,10 +238,17 @@ void extract_jobs(uint8_t **bytes, jobs_t *jobs) } } +void extract_block_hash(uint8_t **bytes, uint8_t *block_hash) +{ + memcpy(block_hash, *bytes, 32); + *bytes = *bytes + 32; +} + void extract_submit_result(uint8_t **bytes, submit_result_t *result) { result->from_group = extract_size(bytes); result->to_group = extract_size(bytes); + extract_block_hash(bytes, result->block_hash); result->status = extract_bool(bytes); } @@ -259,6 +270,12 @@ server_message_t *decode_server_message(blob_t *blob) return NULL; // not enough bytes for decoding } + uint8_t version = extract_byte(&pos); + if (version != mining_protocol_version) { + LOG("Invalid protocol version %d, expect %d\n", version, mining_protocol_version); + exit(1); + } + server_message_t *server_message = (server_message_t *)malloc(sizeof(server_message_t)); switch (extract_byte(&pos)) { diff --git a/src/worker.h b/src/worker.h index 960d939..b4cc112 100644 --- a/src/worker.h +++ b/src/worker.h @@ -184,9 +184,10 @@ ssize_t write_new_block(mining_worker_t *worker, uint8_t *write_buf) { uint8_t *write_pos = write_buf; ssize_t block_size = 24 + job->header_blob.len + job->txs_blob.len; - ssize_t message_size = 1 + 4 + block_size; + ssize_t message_size = 1 + 1 + 4 + block_size; write_size(&write_pos, message_size); + write_byte(&write_pos, mining_protocol_version); // version write_byte(&write_pos, 0); // message type write_size(&write_pos, block_size); write_bytes(&write_pos, nonce, 24); From 3c6103a4289b044bf48bafc4b8cf73633e71f944 Mon Sep 17 00:00:00 2001 From: h0ngcha0 Date: Wed, 28 Aug 2024 14:01:03 +0200 Subject: [PATCH 2/2] Fix Dockerfile --- Dockerfile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 26a9cfa..4123d7f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,17 +1,17 @@ -FROM nvidia/cuda:11.0-devel-ubuntu20.04 AS builder +FROM nvidia/cuda:11.0.3-devel-ubuntu20.04 AS builder WORKDIR /src RUN apt update && \ - DEBIAN_FRONTEND="noninteractive" apt-get -y install cmake tzdata + DEBIAN_FRONTEND="noninteractive" apt-get -y install cmake tzdata curl -RUN curl -L https://github.com/conan-io/conan/releases/latest/download/conan-ubuntu-64.deb -o out.deb && \ - DEBIAN_FRONTEND=sudo apt-get -y install ./out.deb +RUN curl -L https://github.com/conan-io/conan/releases/download/1.65.0/conan-ubuntu-64.deb -o out.deb && \ + DEBIAN_FRONTEND=sudo apt-get -y install ./out.deb COPY ./ ./ RUN ./make.sh -FROM nvidia/cuda:11.0-base +FROM nvidia/cuda:11.0.3-base-ubuntu20.04 RUN apt update && \ DEBIAN_FRONTEND="noninteractive" apt-get -y install tzdata