diff options
author | luigi1111 <luigi1111w@gmail.com> | 2023-08-17 10:17:46 -0500 |
---|---|---|
committer | luigi1111 <luigi1111w@gmail.com> | 2023-08-17 10:17:46 -0500 |
commit | 30ba5a52801b1b8aa6e4f2f59a7ecd711a66459a (patch) | |
tree | 7ad85f9bea680ee5f0d58334a0ff6d631ef38480 | |
parent | Merge pull request #8882 (diff) | |
parent | core_rpc_server: return ID of submitted block (diff) | |
download | monero-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.cpp | 4 | ||||
-rw-r--r-- | src/rpc/core_rpc_server_commands_defs.h | 5 | ||||
-rwxr-xr-x | tests/functional_tests/mining.py | 10 |
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 |