From c75230e551a778408b2e370b208aff76b74c6560 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 19 May 2026 04:07:16 +0530 Subject: feat(mining): add new mining source files and unit tests - mining_payment.c/h: hashprice calc, share validation, per-client hashrate - stratum_client.c/h: SV1 upstream pool connection - stratum_proxy.c/h: local SV1 TCP server for downstream miners - sw_miner.c/h: software SHA256d miner using mbedtls - asic_miner.c/h: ASIC detection stub (software fallback) - test_mining_payment.c: 23 unit tests for mining payment module --- main/stratum_proxy.h | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 main/stratum_proxy.h (limited to 'main/stratum_proxy.h') diff --git a/main/stratum_proxy.h b/main/stratum_proxy.h new file mode 100644 index 0000000..b940640 --- /dev/null +++ b/main/stratum_proxy.h @@ -0,0 +1,39 @@ +#ifndef STRATUM_PROXY_H +#define STRATUM_PROXY_H + +#include "esp_err.h" +#include +#include + +#define STRATUM_MAX_JOB_ID_LEN 32 +#define STRATUM_MAX_JOBS 4 + +typedef struct { + uint32_t job_id; + uint8_t prevhash[32]; + uint8_t merkle_root[32]; + uint32_t ntime; + uint32_t nbits; + uint32_t version; + uint8_t target[32]; + int target_len; + bool valid; +} stratum_job_t; + +typedef struct { + double hashrate_ghs; + uint32_t nbits; + uint64_t total_shares; + uint64_t total_accepted; + uint64_t total_rejected; + double current_hashprice; + int active_miners; +} stratum_proxy_stats_t; + +esp_err_t stratum_proxy_init(uint16_t port); +void stratum_proxy_set_job(const stratum_job_t *job); +const stratum_job_t *stratum_proxy_get_current_job(void); +void stratum_proxy_get_stats(stratum_proxy_stats_t *stats); +void stratum_proxy_stop(void); + +#endif -- cgit v1.2.3