mirror of
https://github.com/monero-project/monero.git
synced 2024-12-28 03:19:23 -05:00
Merge pull request #6066
d31024c2e
cryptonote: untangle dependency from miner to blockchain (moneromooo-monero)
This commit is contained in:
commit
8cc7d5b6c0
@ -102,13 +102,13 @@ namespace cryptonote
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
miner::miner(i_miner_handler* phandler, Blockchain* pbc):m_stop(1),
|
miner::miner(i_miner_handler* phandler, const get_block_hash_t &gbh):m_stop(1),
|
||||||
m_template{},
|
m_template{},
|
||||||
m_template_no(0),
|
m_template_no(0),
|
||||||
m_diffic(0),
|
m_diffic(0),
|
||||||
m_thread_index(0),
|
m_thread_index(0),
|
||||||
m_phandler(phandler),
|
m_phandler(phandler),
|
||||||
m_pbc(pbc),
|
m_gbh(gbh),
|
||||||
m_height(0),
|
m_height(0),
|
||||||
m_threads_active(0),
|
m_threads_active(0),
|
||||||
m_pausers_count(0),
|
m_pausers_count(0),
|
||||||
@ -471,12 +471,12 @@ namespace cryptonote
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
//-----------------------------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------------------------
|
||||||
bool miner::find_nonce_for_given_block(const Blockchain *pbc, block& bl, const difficulty_type& diffic, uint64_t height)
|
bool miner::find_nonce_for_given_block(const get_block_hash_t &gbh, block& bl, const difficulty_type& diffic, uint64_t height)
|
||||||
{
|
{
|
||||||
for(; bl.nonce != std::numeric_limits<uint32_t>::max(); bl.nonce++)
|
for(; bl.nonce != std::numeric_limits<uint32_t>::max(); bl.nonce++)
|
||||||
{
|
{
|
||||||
crypto::hash h;
|
crypto::hash h;
|
||||||
get_block_longhash(pbc, bl, h, height, tools::get_max_concurrency());
|
gbh(bl, height, tools::get_max_concurrency(), h);
|
||||||
|
|
||||||
if(check_hash(h, diffic))
|
if(check_hash(h, diffic))
|
||||||
{
|
{
|
||||||
@ -572,7 +572,7 @@ namespace cryptonote
|
|||||||
|
|
||||||
b.nonce = nonce;
|
b.nonce = nonce;
|
||||||
crypto::hash h;
|
crypto::hash h;
|
||||||
get_block_longhash(m_pbc, b, h, height, tools::get_max_concurrency());
|
m_gbh(b, height, tools::get_max_concurrency(), h);
|
||||||
|
|
||||||
if(check_hash(h, local_diff))
|
if(check_hash(h, local_diff))
|
||||||
{
|
{
|
||||||
|
@ -52,7 +52,7 @@ namespace cryptonote
|
|||||||
~i_miner_handler(){};
|
~i_miner_handler(){};
|
||||||
};
|
};
|
||||||
|
|
||||||
class Blockchain;
|
typedef std::function<bool(const cryptonote::block&, uint64_t, unsigned int, crypto::hash&)> get_block_hash_t;
|
||||||
|
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
/* */
|
/* */
|
||||||
@ -60,7 +60,7 @@ namespace cryptonote
|
|||||||
class miner
|
class miner
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
miner(i_miner_handler* phandler, Blockchain* pbc);
|
miner(i_miner_handler* phandler, const get_block_hash_t& gbh);
|
||||||
~miner();
|
~miner();
|
||||||
bool init(const boost::program_options::variables_map& vm, network_type nettype);
|
bool init(const boost::program_options::variables_map& vm, network_type nettype);
|
||||||
static void init_options(boost::program_options::options_description& desc);
|
static void init_options(boost::program_options::options_description& desc);
|
||||||
@ -76,7 +76,7 @@ namespace cryptonote
|
|||||||
bool on_idle();
|
bool on_idle();
|
||||||
void on_synchronized();
|
void on_synchronized();
|
||||||
//synchronous analog (for fast calls)
|
//synchronous analog (for fast calls)
|
||||||
static bool find_nonce_for_given_block(const Blockchain *pbc, block& bl, const difficulty_type& diffic, uint64_t height);
|
static bool find_nonce_for_given_block(const get_block_hash_t &gbh, block& bl, const difficulty_type& diffic, uint64_t height);
|
||||||
void pause();
|
void pause();
|
||||||
void resume();
|
void resume();
|
||||||
void do_print_hashrate(bool do_hr);
|
void do_print_hashrate(bool do_hr);
|
||||||
@ -135,7 +135,7 @@ namespace cryptonote
|
|||||||
std::list<boost::thread> m_threads;
|
std::list<boost::thread> m_threads;
|
||||||
epee::critical_section m_threads_lock;
|
epee::critical_section m_threads_lock;
|
||||||
i_miner_handler* m_phandler;
|
i_miner_handler* m_phandler;
|
||||||
Blockchain* m_pbc;
|
get_block_hash_t m_gbh;
|
||||||
account_public_address m_mine_address;
|
account_public_address m_mine_address;
|
||||||
epee::math_helper::once_a_time_seconds<5> m_update_block_template_interval;
|
epee::math_helper::once_a_time_seconds<5> m_update_block_template_interval;
|
||||||
epee::math_helper::once_a_time_seconds<2> m_update_merge_hr_interval;
|
epee::math_helper::once_a_time_seconds<2> m_update_merge_hr_interval;
|
||||||
|
@ -223,7 +223,9 @@ namespace cryptonote
|
|||||||
core::core(i_cryptonote_protocol* pprotocol):
|
core::core(i_cryptonote_protocol* pprotocol):
|
||||||
m_mempool(m_blockchain_storage),
|
m_mempool(m_blockchain_storage),
|
||||||
m_blockchain_storage(m_mempool),
|
m_blockchain_storage(m_mempool),
|
||||||
m_miner(this, &m_blockchain_storage),
|
m_miner(this, [this](const cryptonote::block &b, uint64_t height, unsigned int threads, crypto::hash &hash) {
|
||||||
|
return cryptonote::get_block_longhash(&m_blockchain_storage, b, hash, height, threads);
|
||||||
|
}),
|
||||||
m_starter_message_showed(false),
|
m_starter_message_showed(false),
|
||||||
m_target_blockchain_height(0),
|
m_target_blockchain_height(0),
|
||||||
m_checkpoints_path(""),
|
m_checkpoints_path(""),
|
||||||
|
@ -663,7 +663,9 @@ namespace cryptonote
|
|||||||
bl.minor_version = CURRENT_BLOCK_MINOR_VERSION;
|
bl.minor_version = CURRENT_BLOCK_MINOR_VERSION;
|
||||||
bl.timestamp = 0;
|
bl.timestamp = 0;
|
||||||
bl.nonce = nonce;
|
bl.nonce = nonce;
|
||||||
miner::find_nonce_for_given_block(NULL, bl, 1, 0);
|
miner::find_nonce_for_given_block([](const cryptonote::block &b, uint64_t height, unsigned int threads, crypto::hash &hash){
|
||||||
|
return cryptonote::get_block_longhash(NULL, b, hash, height, threads);
|
||||||
|
}, bl, 1, 0);
|
||||||
bl.invalidate_hashes();
|
bl.invalidate_hashes();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1833,7 +1833,9 @@ namespace cryptonote
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
b.nonce = req.starting_nonce;
|
b.nonce = req.starting_nonce;
|
||||||
miner::find_nonce_for_given_block(&(m_core.get_blockchain_storage()), b, template_res.difficulty, template_res.height);
|
miner::find_nonce_for_given_block([this](const cryptonote::block &b, uint64_t height, unsigned int threads, crypto::hash &hash) {
|
||||||
|
return cryptonote::get_block_longhash(&(m_core.get_blockchain_storage()), b, hash, height, threads);
|
||||||
|
}, b, template_res.difficulty, template_res.height);
|
||||||
|
|
||||||
submit_req.front() = string_tools::buff_to_hex_nodelimer(block_to_blob(b));
|
submit_req.front() = string_tools::buff_to_hex_nodelimer(block_to_blob(b));
|
||||||
r = on_submitblock(submit_req, submit_res, error_resp, ctx);
|
r = on_submitblock(submit_req, submit_res, error_resp, ctx);
|
||||||
|
@ -186,7 +186,9 @@ bool test_generator::construct_block(cryptonote::block& blk, uint64_t height, co
|
|||||||
|
|
||||||
// Nonce search...
|
// Nonce search...
|
||||||
blk.nonce = 0;
|
blk.nonce = 0;
|
||||||
while (!miner::find_nonce_for_given_block(NULL, blk, get_test_difficulty(hf_ver), height))
|
while (!miner::find_nonce_for_given_block([](const cryptonote::block &b, uint64_t height, unsigned int threads, crypto::hash &hash){
|
||||||
|
return cryptonote::get_block_longhash(NULL, b, hash, height, threads);
|
||||||
|
}, blk, get_test_difficulty(hf_ver), height))
|
||||||
blk.timestamp++;
|
blk.timestamp++;
|
||||||
|
|
||||||
add_block(blk, txs_weight, block_weights, already_generated_coins, hf_ver ? hf_ver.get() : 1);
|
add_block(blk, txs_weight, block_weights, already_generated_coins, hf_ver ? hf_ver.get() : 1);
|
||||||
@ -797,7 +799,9 @@ void fill_tx_sources_and_destinations(const std::vector<test_event_entry>& event
|
|||||||
void fill_nonce(cryptonote::block& blk, const difficulty_type& diffic, uint64_t height)
|
void fill_nonce(cryptonote::block& blk, const difficulty_type& diffic, uint64_t height)
|
||||||
{
|
{
|
||||||
blk.nonce = 0;
|
blk.nonce = 0;
|
||||||
while (!miner::find_nonce_for_given_block(NULL, blk, diffic, height))
|
while (!miner::find_nonce_for_given_block([](const cryptonote::block &b, uint64_t height, unsigned int threads, crypto::hash &hash){
|
||||||
|
return cryptonote::get_block_longhash(NULL, b, hash, height, threads);
|
||||||
|
}, blk, diffic, height))
|
||||||
blk.timestamp++;
|
blk.timestamp++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user