aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorluigi1111 <luigi1111w@gmail.com>2023-08-17 10:17:46 -0500
committerluigi1111 <luigi1111w@gmail.com>2023-08-17 10:17:46 -0500
commit30ba5a52801b1b8aa6e4f2f59a7ecd711a66459a (patch)
tree7ad85f9bea680ee5f0d58334a0ff6d631ef38480
parentMerge pull request #8882 (diff)
parentcore_rpc_server: return ID of submitted block (diff)
downloadmonero-30ba5a52801b1b8aa6e4f2f59a7ecd711a66459a.tar.xz
Merge pull request #8890
e8cac61 core_rpc_server: return ID of submitted block (jeffro256)
-rw-r--r--src/rpc/core_rpc_server.cpp4
-rw-r--r--src/rpc/core_rpc_server_commands_defs.h5
-rwxr-xr-xtests/functional_tests/mining.py10
3 files changed, 17 insertions, 2 deletions
diff --git a/src/rpc/core_rpc_server.cpp b/src/rpc/core_rpc_server.cpp
index 0adf0b65e..03e9ec494 100644
--- a/src/rpc/core_rpc_server.cpp
+++ b/src/rpc/core_rpc_server.cpp
@@ -2216,7 +2216,8 @@ namespace cryptonote
// Fixing of high orphan issue for most pools
// Thanks Boolberry!
block b;
- if(!parse_and_validate_block_from_blob(blockblob, b))
+ crypto::hash blk_id;
+ if(!parse_and_validate_block_from_blob(blockblob, b, blk_id))
{
error_resp.code = CORE_RPC_ERROR_CODE_WRONG_BLOCKBLOB;
error_resp.message = "Wrong block blob";
@@ -2239,6 +2240,7 @@ namespace cryptonote
error_resp.message = "Block not accepted";
return false;
}
+ res.block_id = epee::string_tools::pod_to_hex(blk_id);
res.status = CORE_RPC_STATUS_OK;
return true;
}
diff --git a/src/rpc/core_rpc_server_commands_defs.h b/src/rpc/core_rpc_server_commands_defs.h
index 7f1581d0c..819d77c1f 100644
--- a/src/rpc/core_rpc_server_commands_defs.h
+++ b/src/rpc/core_rpc_server_commands_defs.h
@@ -88,7 +88,7 @@ namespace cryptonote
// advance which version they will stop working with
// Don't go over 32767 for any of these
#define CORE_RPC_VERSION_MAJOR 3
-#define CORE_RPC_VERSION_MINOR 12
+#define CORE_RPC_VERSION_MINOR 13
#define MAKE_CORE_RPC_VERSION(major,minor) (((major)<<16)|(minor))
#define CORE_RPC_VERSION MAKE_CORE_RPC_VERSION(CORE_RPC_VERSION_MAJOR, CORE_RPC_VERSION_MINOR)
@@ -1115,8 +1115,11 @@ namespace cryptonote
struct response_t: public rpc_response_base
{
+ std::string block_id;
+
BEGIN_KV_SERIALIZE_MAP()
KV_SERIALIZE_PARENT(rpc_response_base)
+ KV_SERIALIZE(block_id)
END_KV_SERIALIZE_MAP()
};
typedef epee::misc_utils::struct_init<response_t> response;
diff --git a/tests/functional_tests/mining.py b/tests/functional_tests/mining.py
index e98037811..242c58dbe 100755
--- a/tests/functional_tests/mining.py
+++ b/tests/functional_tests/mining.py
@@ -36,6 +36,7 @@ import math
import monotonic
import util_resources
import multiprocessing
+import string
"""Test daemon mining RPC calls
@@ -52,6 +53,11 @@ Control the behavior with these environment variables:
from framework.daemon import Daemon
from framework.wallet import Wallet
+def assert_non_null_hash(s):
+ assert len(s) == 64 # correct length
+ assert all((c in string.hexdigits for c in s)) # is parseable as hex
+ assert s != ('0' * 64) # isn't null hash
+
class MiningTest():
def run_test(self):
self.reset()
@@ -250,6 +256,8 @@ class MiningTest():
block_hash = hashes[i]
assert len(block_hash) == 64
res = daemon.submitblock(blocks[i])
+ submitted_block_id = res.block_id
+ assert_non_null_hash(submitted_block_id)
res = daemon.get_height()
assert res.height == height + i + 1
assert res.hash == block_hash
@@ -346,6 +354,8 @@ class MiningTest():
t0 = time.time()
for h in range(len(block_hashes)):
res = daemon.submitblock(blocks[h])
+ submitted_block_id = res.block_id
+ assert_non_null_hash(submitted_block_id)
t0 = time.time() - t0
res = daemon.get_info()
assert height == res.height