tx_pool: mine stem txes in fake chain mode
This fixes the functional tests, since txes would not be mined after being sent to the daemon (they'd be waiting for the dandelion timeout first)
This commit is contained in:
parent
9f93a1b632
commit
332d60719a
@ -650,7 +650,7 @@ namespace cryptonote
|
||||
r = m_blockchain_storage.init(db.release(), m_nettype, m_offline, regtest ? ®test_test_options : test_options, fixed_difficulty, get_checkpoints);
|
||||
CHECK_AND_ASSERT_MES(r, false, "Failed to initialize blockchain storage");
|
||||
|
||||
r = m_mempool.init(max_txpool_weight);
|
||||
r = m_mempool.init(max_txpool_weight, m_nettype == FAKECHAIN);
|
||||
CHECK_AND_ASSERT_MES(r, false, "Failed to initialize memory pool");
|
||||
|
||||
// now that we have a valid m_blockchain_storage, we can clean out any
|
||||
|
@ -116,7 +116,7 @@ namespace cryptonote
|
||||
}
|
||||
//---------------------------------------------------------------------------------
|
||||
//---------------------------------------------------------------------------------
|
||||
tx_memory_pool::tx_memory_pool(Blockchain& bchs): m_blockchain(bchs), m_txpool_max_weight(DEFAULT_TXPOOL_MAX_WEIGHT), m_txpool_weight(0), m_cookie(0)
|
||||
tx_memory_pool::tx_memory_pool(Blockchain& bchs): m_blockchain(bchs), m_cookie(0), m_txpool_max_weight(DEFAULT_TXPOOL_MAX_WEIGHT), m_txpool_weight(0), m_mine_stem_txes(false)
|
||||
{
|
||||
|
||||
}
|
||||
@ -1351,13 +1351,18 @@ namespace cryptonote
|
||||
for (; sorted_it != m_txs_by_fee_and_receive_time.end(); ++sorted_it)
|
||||
{
|
||||
txpool_tx_meta_t meta;
|
||||
if (!m_blockchain.get_txpool_tx_meta(sorted_it->second, meta) || !meta.matches(relay_category::legacy))
|
||||
if (!m_blockchain.get_txpool_tx_meta(sorted_it->second, meta))
|
||||
{
|
||||
MERROR(" failed to find tx meta");
|
||||
continue;
|
||||
}
|
||||
LOG_PRINT_L2("Considering " << sorted_it->second << ", weight " << meta.weight << ", current block weight " << total_weight << "/" << max_total_weight << ", current coinbase " << print_money(best_coinbase));
|
||||
LOG_PRINT_L2("Considering " << sorted_it->second << ", weight " << meta.weight << ", current block weight " << total_weight << "/" << max_total_weight << ", current coinbase " << print_money(best_coinbase) << ", relay method " << (unsigned)meta.get_relay_method());
|
||||
|
||||
if (!meta.matches(relay_category::legacy) && !(m_mine_stem_txes && meta.get_relay_method() == relay_method::stem))
|
||||
{
|
||||
LOG_PRINT_L2(" tx relay method is " << (unsigned)meta.get_relay_method());
|
||||
continue;
|
||||
}
|
||||
if (meta.pruned)
|
||||
{
|
||||
LOG_PRINT_L2(" tx is pruned");
|
||||
@ -1522,7 +1527,7 @@ namespace cryptonote
|
||||
return n_removed;
|
||||
}
|
||||
//---------------------------------------------------------------------------------
|
||||
bool tx_memory_pool::init(size_t max_txpool_weight)
|
||||
bool tx_memory_pool::init(size_t max_txpool_weight, bool mine_stem_txes)
|
||||
{
|
||||
CRITICAL_REGION_LOCAL(m_transactions_lock);
|
||||
CRITICAL_REGION_LOCAL1(m_blockchain);
|
||||
@ -1578,6 +1583,7 @@ namespace cryptonote
|
||||
lock.commit();
|
||||
}
|
||||
|
||||
m_mine_stem_txes = mine_stem_txes;
|
||||
m_cookie = 0;
|
||||
|
||||
// Ignore deserialization error
|
||||
|
@ -205,10 +205,11 @@ namespace cryptonote
|
||||
* @brief loads pool state (if any) from disk, and initializes pool
|
||||
*
|
||||
* @param max_txpool_weight the max weight in bytes
|
||||
* @param mine_stem_txes whether to mine txes in stem relay mode
|
||||
*
|
||||
* @return true
|
||||
*/
|
||||
bool init(size_t max_txpool_weight = 0);
|
||||
bool init(size_t max_txpool_weight = 0, bool mine_stem_txes = false);
|
||||
|
||||
/**
|
||||
* @brief attempts to save the transaction pool state to disk
|
||||
@ -603,6 +604,7 @@ private:
|
||||
|
||||
size_t m_txpool_max_weight;
|
||||
size_t m_txpool_weight;
|
||||
bool m_mine_stem_txes;
|
||||
|
||||
mutable std::unordered_map<crypto::hash, std::tuple<bool, tx_verification_context, uint64_t, crypto::hash>> m_input_cache;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user