mirror of
https://github.com/monero-project/monero.git
synced 2025-07-24 20:55:21 -04:00
Add mempool output to daemon via command and RPC
This is for the "print_pool" command and "get_transaction_pool" RPC method. Add mempool's spent key images to the results.
This commit is contained in:
parent
41f0a8fe4d
commit
b76857f9d9
7 changed files with 107 additions and 17 deletions
|
@ -654,6 +654,11 @@ namespace cryptonote
|
|||
return true;
|
||||
}
|
||||
//-----------------------------------------------------------------------------------------------
|
||||
bool core::get_pool_transactions_and_spent_keys_info(std::vector<tx_info>& tx_infos, std::vector<spent_key_image_info>& key_image_infos) const
|
||||
{
|
||||
return m_mempool.get_transactions_and_spent_keys_info(tx_infos, key_image_infos);
|
||||
}
|
||||
//-----------------------------------------------------------------------------------------------
|
||||
bool core::get_short_chain_history(std::list<crypto::hash>& ids)
|
||||
{
|
||||
return m_blockchain_storage.get_short_chain_history(ids);
|
||||
|
|
|
@ -108,6 +108,7 @@ namespace cryptonote
|
|||
void set_enforce_dns_checkpoints(bool enforce_dns);
|
||||
|
||||
bool get_pool_transactions(std::list<transaction>& txs);
|
||||
bool get_pool_transactions_and_spent_keys_info(std::vector<tx_info>& tx_infos, std::vector<spent_key_image_info>& key_image_infos) const;
|
||||
size_t get_pool_transactions_count();
|
||||
size_t get_blockchain_total_transactions();
|
||||
//bool get_outs(uint64_t amount, std::list<crypto::public_key>& pkeys);
|
||||
|
|
|
@ -276,6 +276,40 @@ namespace cryptonote
|
|||
BOOST_FOREACH(const auto& tx_vt, m_transactions)
|
||||
txs.push_back(tx_vt.second.tx);
|
||||
}
|
||||
//------------------------------------------------------------------
|
||||
bool tx_memory_pool::get_transactions_and_spent_keys_info(std::vector<tx_info>& tx_infos, std::vector<spent_key_image_info>& key_image_infos) const
|
||||
{
|
||||
CRITICAL_REGION_LOCAL(m_transactions_lock);
|
||||
for (const auto& tx_vt : m_transactions)
|
||||
{
|
||||
tx_info txi;
|
||||
const tx_details& txd = tx_vt.second;
|
||||
txi.id_hash = epee::string_tools::pod_to_hex(tx_vt.first);
|
||||
txi.tx_json = obj_to_json_str(*const_cast<transaction*>(&txd.tx));
|
||||
txi.blob_size = txd.blob_size;
|
||||
txi.fee = txd.fee;
|
||||
txi.kept_by_block = txd.kept_by_block;
|
||||
txi.max_used_block_height = txd.max_used_block_height;
|
||||
txi.max_used_block_id_hash = epee::string_tools::pod_to_hex(txd.max_used_block_id);
|
||||
txi.last_failed_height = txd.last_failed_height;
|
||||
txi.last_failed_id_hash = epee::string_tools::pod_to_hex(txd.last_failed_id);
|
||||
txi.receive_time = txd.receive_time;
|
||||
tx_infos.push_back(txi);
|
||||
}
|
||||
|
||||
for (const key_images_container::value_type& kee : m_spent_key_images) {
|
||||
const crypto::key_image& k_image = kee.first;
|
||||
const std::unordered_set<crypto::hash>& kei_image_set = kee.second;
|
||||
spent_key_image_info ki;
|
||||
ki.id_hash = epee::string_tools::pod_to_hex(k_image);
|
||||
for (const crypto::hash& tx_id_hash : kei_image_set)
|
||||
{
|
||||
ki.txs_hashes.push_back(epee::string_tools::pod_to_hex(tx_id_hash));
|
||||
}
|
||||
key_image_infos.push_back(ki);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------------
|
||||
bool tx_memory_pool::get_transaction(const crypto::hash& id, transaction& tx) const
|
||||
{
|
||||
|
|
|
@ -43,6 +43,7 @@
|
|||
#include "cryptonote_basic_impl.h"
|
||||
#include "verification_context.h"
|
||||
#include "crypto/hash.h"
|
||||
#include "rpc/core_rpc_server_commands_defs.h"
|
||||
|
||||
namespace cryptonote
|
||||
{
|
||||
|
@ -81,6 +82,7 @@ namespace cryptonote
|
|||
bool deinit();
|
||||
bool fill_block_template(block &bl, size_t median_size, uint64_t already_generated_coins, size_t &total_size, uint64_t &fee);
|
||||
void get_transactions(std::list<transaction>& txs) const;
|
||||
bool get_transactions_and_spent_keys_info(std::vector<tx_info>& tx_infos, std::vector<spent_key_image_info>& key_image_infos) const;
|
||||
bool get_transaction(const crypto::hash& h, transaction& tx) const;
|
||||
size_t get_transactions_count() const;
|
||||
std::string print_pool(bool short_format) const;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue