From d1fee3348263e2fe82a8edb8bad6963128a6597f Mon Sep 17 00:00:00 2001 From: SChernykh Date: Wed, 15 Nov 2023 18:51:32 +0100 Subject: [PATCH] Added a fake merge mining node --- src/merge_mining_client.cpp | 1 + src/util.h | 5 +++-- tests/src/mm_server.py | 30 ++++++++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 tests/src/mm_server.py diff --git a/src/merge_mining_client.cpp b/src/merge_mining_client.cpp index 340d86a..f7d42a2 100644 --- a/src/merge_mining_client.cpp +++ b/src/merge_mining_client.cpp @@ -73,6 +73,7 @@ MergeMiningClient::MergeMiningClient(p2pool* pool, const std::string& host, cons uv_loop_close(&m_loop); throw std::exception(); } + m_timer.data = this; err = uv_thread_create(&m_loopThread, loop, this); if (err) { diff --git a/src/util.h b/src/util.h index cdbbfdc..e534f54 100644 --- a/src/util.h +++ b/src/util.h @@ -123,9 +123,10 @@ static FORCEINLINE bool from_hex(const char* s, size_t len, std::vector return false; } - std::vector result(len / 2); + len /= 2; + std::vector result(len); - for (uint32_t i = 0; i < HASH_SIZE; ++i) { + for (uint32_t i = 0; i < len; ++i) { uint8_t d[2]; if (!from_hex(s[i * 2], d[0]) || !from_hex(s[i * 2 + 1], d[1])) { return false; diff --git a/tests/src/mm_server.py b/tests/src/mm_server.py new file mode 100644 index 0000000..e3ef6fb --- /dev/null +++ b/tests/src/mm_server.py @@ -0,0 +1,30 @@ +import http.server +import socketserver +import json + +class Server(http.server.BaseHTTPRequestHandler): + def do_POST(self): + length = int(self.headers['content-length']) + request = self.rfile.read(length) + print(request.decode('utf-8')) + request = json.loads(request) + + self.send_response(200) + self.send_header('Content-type', 'application/json') + self.end_headers() + + response = {'jsonrpc':'2.0','id':'0'} + + if request['method'] == 'merge_mining_get_chain_id': + response['result'] = {'chain_id':'0f28c4960d96647e77e7ab6d13b85bd16c7ca56f45df802cdc763a5e5c0c7863'} + elif request['method'] == 'merge_mining_get_job': + response['result'] = {'aux_blob':'4c6f72656d20697073756d','aux_diff':123456,'aux_hash':'f6952d6eef555ddd87aca66e56b91530222d6e318414816f3ba7cf5bf694bf0f'} + elif request['method'] == 'merge_mining_submit_solution': + response['result'] = {'status':'accepted'} + + response = json.dumps(response); + print(response) + self.wfile.write(response.encode('utf-8')) + +httpd = socketserver.TCPServer(('', 8000), Server) +httpd.serve_forever()