MCPcopy Create free account
hub / github.com/bcndev/bytecoin / remove_from_pool

Method remove_from_pool

src/Core/BlockChainState.cpp:829–859  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

827}
828
829void BlockChainState::remove_from_pool(Hash tid) {
830 auto tit = m_memory_state_tx.find(tid);
831 if (tit == m_memory_state_tx.end())
832 return;
833 bool all_erased = true;
834 const Transaction &tx = tit->second.tx;
835 for (const auto &input : tx.inputs) {
836 if (const auto *in = boost::get<InputKey>(&input)) {
837 if (m_memory_state_ki_tx.erase(in->key_image) != 1)
838 all_erased = false;
839 }
840 }
841 const size_t my_size = tit->second.binary_tx.size();
842 const Amount my_fee_per_byte = tit->second.fee_per_byte();
843 if (m_memory_state_fee_tx.erase(std::make_pair(my_fee_per_byte, tid)) != 1)
844 all_erased = false;
845 // if (m_memory_state_fee_tx[my_fee_per_byte].empty())
846 // m_memory_state_fee_tx.erase(my_fee_per_byte);
847 m_memory_state_total_size -= my_size;
848 m_memory_state_tx.erase(tit);
849 invariant(all_erased, "remove_memory_pool failed to erase everything");
850 // We do not increment m_tx_pool_version, because removing tx from pool is
851 // always followed by reset or increment
852 auto min_size = m_memory_state_fee_tx.empty()
853 ? 0
854 : m_memory_state_tx.at(m_memory_state_fee_tx.begin()->second).binary_tx.size();
855 auto min_fee_per_byte = m_memory_state_fee_tx.empty() ? 0 : m_memory_state_fee_tx.begin()->first;
856 m_log(logging::INFO) << "Removed transaction with hash=" << tid << " size=" << my_size << " current_pool_size=("
857 << m_memory_state_total_size - min_size << "+" << min_size << ")=" << m_memory_state_total_size
858 << " count=" << m_memory_state_tx.size() << " min fee/byte=" << min_fee_per_byte;
859}
860
861// Called only on transactions which passed validate_tx_semantic()
862// if double spend, conflict_height is set to actual conflict height

Callers

nothing calls this directly

Calls 7

fee_per_byteMethod · 0.80
atMethod · 0.80
endMethod · 0.45
eraseMethod · 0.45
sizeMethod · 0.45
emptyMethod · 0.45
beginMethod · 0.45

Tested by

no test coverage detected