aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjeffro256 <jeffro256@tutanota.com>2023-06-02 22:00:11 -0500
committerjeffro256 <jeffro256@tutanota.com>2023-06-30 15:32:49 -0500
commit842478c5a922aa67dc0cf51f71128c42587021ec (patch)
treee99282c4b1b402f0c39694bd17aff2bfd4fbcab0
parentMerge pull request #8846 (diff)
downloadmonero-842478c5a922aa67dc0cf51f71128c42587021ec.tar.xz
core_rpc_server: return ID of submitted block
-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 d9d851d47..22cb43125 100644
--- a/src/rpc/core_rpc_server.cpp
+++ b/src/rpc/core_rpc_server.cpp
@@ -2115,7 +2115,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";
@@ -2138,6 +2139,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 c1285d300..b69c244fc 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)
@@ -1068,8 +1068,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 f1aa15c14..f1e0978fb 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