core_rpc_server: return ID of submitted block
This commit is contained in:
parent
0a1eaf26f9
commit
e8cac61f4b
|
@ -2189,7 +2189,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";
|
||||
|
@ -2212,6 +2213,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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue