mirror of
https://github.com/monero-project/monero.git
synced 2025-07-22 14:50:50 -04:00
new flush_txpool command, and associated RPC call
It can flush a particular tx, or the whole pool (the RPC command can flush a list of transactions too)
This commit is contained in:
parent
6288295f8e
commit
bf6d1474c0
12 changed files with 175 additions and 0 deletions
|
@ -2386,6 +2386,25 @@ void Blockchain::return_tx_to_pool(const std::vector<transaction> &txs)
|
|||
}
|
||||
}
|
||||
//------------------------------------------------------------------
|
||||
bool Blockchain::flush_txes_from_pool(const std::list<crypto::hash> &txids)
|
||||
{
|
||||
bool res = true;
|
||||
for (const auto &txid: txids)
|
||||
{
|
||||
cryptonote::transaction tx;
|
||||
size_t blob_size;
|
||||
uint64_t fee;
|
||||
bool relayed;
|
||||
LOG_PRINT_L1("Removing txid " << txid << " from the pool");
|
||||
if(!m_tx_pool.take_tx(txid, tx, blob_size, fee, relayed))
|
||||
{
|
||||
LOG_PRINT_L0("Failed to remove txid " << txid << " from the pool");
|
||||
res = false;
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
//------------------------------------------------------------------
|
||||
// Needs to validate the block and acquire each transaction from the
|
||||
// transaction mem_pool, then pass the block and transactions to
|
||||
// m_db->add_block()
|
||||
|
|
|
@ -164,6 +164,8 @@ namespace cryptonote
|
|||
|
||||
bool get_hard_fork_voting_info(uint8_t version, uint32_t &window, uint32_t &votes, uint32_t &threshold, uint64_t &earliest_height, uint8_t &voting) const;
|
||||
|
||||
bool flush_txes_from_pool(const std::list<crypto::hash> &txids);
|
||||
|
||||
bool for_all_key_images(std::function<bool(const crypto::key_image&)>) const;
|
||||
bool for_all_blocks(std::function<bool(uint64_t, const crypto::hash&, const block&)>) const;
|
||||
bool for_all_transactions(std::function<bool(const crypto::hash&, const cryptonote::transaction&)>) const;
|
||||
|
|
|
@ -1892,6 +1892,25 @@ void blockchain_storage::set_enforce_dns_checkpoints(bool enforce_checkpoints)
|
|||
m_enforce_dns_checkpoints = enforce_checkpoints;
|
||||
}
|
||||
//------------------------------------------------------------------
|
||||
bool blockchain_storage::flush_txes_from_pool(const std::list<crypto::hash> &txids)
|
||||
{
|
||||
bool res = true;
|
||||
for (const auto &txid: txids)
|
||||
{
|
||||
cryptonote::transaction tx;
|
||||
size_t blob_size;
|
||||
uint64_t fee;
|
||||
bool relayed;
|
||||
LOG_PRINT_L1("Removing txid " << txid << " from the pool");
|
||||
if(!m_tx_pool->take_tx(txid, tx, blob_size, fee, relayed))
|
||||
{
|
||||
LOG_PRINT_L0("Failed to remove txid " << txid << " from the pool");
|
||||
res = false;
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
//------------------------------------------------------------------
|
||||
bool blockchain_storage::for_all_key_images(std::function<bool(const crypto::key_image&)> f) const
|
||||
{
|
||||
for (key_images_container::const_iterator i = m_spent_keys.begin(); i != m_spent_keys.end(); ++i) {
|
||||
|
|
|
@ -130,6 +130,7 @@ namespace cryptonote
|
|||
bool is_storing_blockchain()const{return m_is_blockchain_storing;}
|
||||
uint64_t block_difficulty(size_t i) const;
|
||||
double get_avg_block_size( size_t count) const;
|
||||
bool flush_txes_from_pool(const std::list<crypto::hash> &txids);
|
||||
|
||||
template<class t_ids_container, class t_blocks_container, class t_missed_container>
|
||||
bool get_blocks(const t_ids_container& block_ids, t_blocks_container& blocks, t_missed_container& missed_bs) const
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue