{"id":16153724,"url":"https://github.com/moneroexamples/memory-pool","last_synced_at":"2025-04-30T05:21:24.967Z","repository":{"id":70343563,"uuid":"55823858","full_name":"moneroexamples/memory-pool","owner":"moneroexamples","description":"Show transactions in memory pool","archived":false,"fork":false,"pushed_at":"2016-04-11T01:03:53.000Z","size":251,"stargazers_count":4,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-30T13:02:40.999Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/moneroexamples.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-04-09T03:22:56.000Z","updated_at":"2021-06-05T17:59:14.000Z","dependencies_parsed_at":"2023-07-06T13:31:23.372Z","dependency_job_id":null,"html_url":"https://github.com/moneroexamples/memory-pool","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moneroexamples%2Fmemory-pool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moneroexamples%2Fmemory-pool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moneroexamples%2Fmemory-pool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moneroexamples%2Fmemory-pool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/moneroexamples","download_url":"https://codeload.github.com/moneroexamples/memory-pool/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251645982,"owners_count":21620846,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-10T01:14:17.963Z","updated_at":"2025-04-30T05:21:24.938Z","avatar_url":"https://github.com/moneroexamples.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Show transactions in memory pool\n\nIn this example, it is shown how to query Monero daemon using RPC call\nto get transactions in memory pool, and to display their details.\n\n## Prerequisites\n\nThe code was written and tested on Ubuntu 16.04 Beta x86_64.\n\nInstruction for Monero compilation:\n - [Ubuntu 16.04 x86_64](https://github.com/moneroexamples/compile-monero-09-on-ubuntu-16-04/)\n\nThe Monero C++ development environment was set as shown in the above link.\n\nObviously, running and synchronized Monero deamon/node is also required.\n\n\n## C++ code\nThe main part of the example is `main.cpp`.\n\n```c++\n// define a checker to test if a structure has \"tx_blob\"\n// member variable. I use modified daemon with few extra\n// bits and pieces here and there. One of them is\n// tx_blob in cryptonote::tx_info structure\n// thus I check if I run my version, or just\n// generic one\nDEFINE_MEMBER_CHECKER(tx_blob);\n\n// define getter to get tx_blob, i.e., get_tx_blob function\n// as string if exists. the getter return empty string if\n// tx_blob does not exist\nDEFINE_MEMBER_GETTER(tx_blob, string);\n\nint main(int ac, const char* av[]) {\n\n    // get command line options\n    xmreg::CmdLineOptions opts {ac, av};\n\n    auto help_opt = opts.get_option\u003cbool\u003e(\"help\");\n\n    // if help was chosen, display help text and finish\n    if (*help_opt)\n    {\n        return 0;\n    }\n\n    auto daemon_address_opt = opts.get_option\u003cstring\u003e(\"address\");\n    auto testnet_opt        = opts.get_option\u003cbool\u003e(\"testnet\");\n    auto detailed_opt       = opts.get_option\u003cbool\u003e(\"detailed\");\n\n    // check if we have tx_blob member in tx_info structure\n    bool HAVE_TX_BLOB {HAS_MEMBER(cryptonote::tx_info, tx_blob)};\n\n    // perform RPC call to deamon to get\n    // its transaction pull\n    boost::mutex m_daemon_rpc_mutex;\n\n    request req;\n    response res;\n\n    http_simple_client m_http_client;\n\n    m_daemon_rpc_mutex.lock();\n\n    bool r = epee::net_utils::invoke_http_json_remote_command2(\n              *daemon_address_opt + \"/get_transaction_pool\",\n              req, res, m_http_client, 200000);\n\n    m_daemon_rpc_mutex.unlock();\n\n    if (!r)\n    {\n        cerr \u003c\u003c \"Error connecting to Monero deamon at \"\n             \u003c\u003c *daemon_address_opt \u003c\u003c endl;\n        return 1;\n    }\n\n    print(\"Number of transactions in memory pool: {:d}\\n\",\n          res.transactions.size());\n\n    // for each transaction in the memory pool\n    for (size_t i = 0; i \u003c res.transactions.size(); ++i)\n    {\n        // get transaction info of the tx in the mempool\n        cryptonote::tx_info _tx_info = res.transactions.at(i);\n\n        // display basic info\n        print(\"Tx hash: {:s}\\n\", _tx_info.id_hash);\n\n        print(\"Fee: {:0.10f} xmr, size {:d} bytes\\n\",\n               XMR_AMOUNT(_tx_info.fee),\n              _tx_info.blob_size);\n\n        print(\"Receive time: {:s}\\n\",\n              xmreg::timestamp_to_str(_tx_info.receive_time));\n\n\n        // if we have tx blob disply more.\n        // this info can also be obtained from json that is\n        // normally returned by the RCP call (see below in detailed view)\n        if (HAVE_TX_BLOB)\n        {\n            // get tx_blob if exists\n            string tx_blob = get_tx_blob(_tx_info);\n\n            if (tx_blob.empty())\n            {\n                cerr \u003c\u003c \"tx_blob is empty. Probably its not a custom deamon.\" \u003c\u003c endl;\n                continue;\n            }\n\n            cryptonote::transaction tx;\n\n            if (!cryptonote::parse_and_validate_tx_from_blob(\n                    tx_blob, tx))\n            {\n                cerr \u003c\u003c \"Cant parse tx from blob\" \u003c\u003c endl;\n                continue;\n            }\n\n            print(\"No of inputs {:d} (mixin {:d}) for total {:0.10f} xmr\\n\",\n                  tx.vin.size(),\n                  xmreg::get_mixin_no(tx),\n                  XMR_AMOUNT(xmreg::sum_money_in_inputs(tx)));\n\n            // get key images\n            vector\u003ccryptonote::txin_to_key\u003e key_imgs\n                    = xmreg::get_key_images(tx);\n\n            print(\"Input key images:\\n\");\n\n            for (const auto\u0026 kimg: key_imgs)\n            {\n                print(\" - {:s}, {:0.8f} xmr\\n\",\n                      kimg.k_image,\n                      XMR_AMOUNT(kimg.amount));\n            }\n\n            print(\"No of outputs {:d} for total {:0.10f} xmr\\n\",\n                  tx.vout.size(),\n                  XMR_AMOUNT(xmreg::sum_money_in_outputs(tx)));\n\n            // get outputs\n            vector\u003cpair\u003ccryptonote::txout_to_key, uint64_t\u003e\u003e outputs =\n                    xmreg::get_ouputs(tx);\n\n            print(\"Outputs:\\n\");\n\n            for (const auto\u0026 txout: outputs)\n            {\n                print(\" - {:s}, {:0.10f} xmr\\n\",\n                      txout.first.key,\n                      XMR_AMOUNT(txout.second));\n            }\n\n        }\n        else\n        {\n            // if dont have tx_block, then just use json of tx\n            // to get the details.\n\n            rapidjson::Document json;\n\n            if (json.Parse(_tx_info.tx_json.c_str()).HasParseError())\n            {\n                cerr \u003c\u003c \"Failed to parse JSON\" \u003c\u003c endl;\n                continue;\n            }\n\n            // get information about inputs\n            const rapidjson::Value\u0026 vin = json[\"vin\"];\n\n\n            if (vin.IsArray())\n            {\n                // get total xmr in inputs\n                uint64_t total_xml {0};\n\n                for (rapidjson::SizeType i = 0; i \u003c vin.Size(); ++i)\n                {\n                    if (vin[i].HasMember(\"key\"))\n                    {\n                        total_xml +=  vin[i][\"key\"][\"amount\"].GetUint64();\n                    }\n                }\n\n                print(\"No of inputs {:d} (mixin {:d}) for total {:0.10f} xmr\\n\",\n                      vin.Size(), vin[0][\"key\"][\"key_offsets\"].Size(),\n                      XMR_AMOUNT(total_xml));\n\n                // print out individual key images\n                print(\"Input key images:\\n\");\n\n                for (rapidjson::SizeType i = 0; i \u003c vin.Size(); ++i)\n                {\n                    if (vin[i].HasMember(\"key\"))\n                    {\n                         print(\" - {:s}, {:0.10f} xmr\\n\",\n                              vin[i][\"key\"][\"k_image\"].GetString(),\n                              XMR_AMOUNT(vin[i][\"key\"][\"amount\"].GetUint64()));\n                    }\n                }\n            }\n\n            // get information about outputs\n            const rapidjson::Value\u0026 vout = json[\"vout\"];\n\n            if (vout.IsArray())\n            {\n\n                // get total xmr in outputs\n                uint64_t total_xml {0};\n\n                for (rapidjson::SizeType i = 0; i \u003c vout.Size(); ++i)\n                {\n                        total_xml +=  vout[i][\"amount\"].GetUint64();\n                }\n\n                print(\"No of outputs {:d} for total {:0.10f} xmr\\n\",\n                      vout.Size(), XMR_AMOUNT(total_xml));\n\n                // print out individual output public keys\n                print(\"Outputs:\\n\");\n\n                for (rapidjson::SizeType i = 0; i \u003c vout.Size(); ++i)\n                {\n                    print(\" - {:s}, {:0.10f} xmr\\n\",\n                          vout[i][\"target\"][\"key\"].GetString(),\n                          XMR_AMOUNT(vout[i][\"amount\"].GetUint64()));\n                }\n            }\n\n            cout \u003c\u003c endl;\n\n        } // else if (HAVE_TX_BLOB)\n\n        if (*detailed_opt)\n        {\n            cout\u003c\u003c \"kept_by_block: \" \u003c\u003c (_tx_info.kept_by_block ? 'T' : 'F') \u003c\u003c std::endl\n                \u003c\u003c \"max_used_block_height: \" \u003c\u003c _tx_info.max_used_block_height \u003c\u003c std::endl\n                \u003c\u003c \"max_used_block_id: \" \u003c\u003c _tx_info.max_used_block_id_hash \u003c\u003c std::endl\n                \u003c\u003c \"last_failed_height: \" \u003c\u003c _tx_info.last_failed_height \u003c\u003c std::endl\n                \u003c\u003c \"last_failed_id: \" \u003c\u003c _tx_info.last_failed_id_hash \u003c\u003c endl\n                \u003c\u003c \"json: \" \u003c\u003c _tx_info.tx_json\n                \u003c\u003c std::endl;\n\n            // key images are also returned by RPC call\n            // so just for the sake of the example, we print them\n            // as well\n            if (!res.spent_key_images.empty())\n            {\n                size_t key_imgs_no = res.spent_key_images.size();\n\n                for (size_t ki = 0; ki \u003c key_imgs_no; ++ki)\n                {\n                    cryptonote::spent_key_image_info kinfo\n                            = res.spent_key_images.at(ki);\n\n                    cout \u003c\u003c \"key image value: \" \u003c\u003c kinfo.id_hash \u003c\u003c endl;\n                    for (const string\u0026 tx_hash: kinfo.txs_hashes)\n                    {\n                        print(\" - tx hash: {:s}\\n\", tx_hash);\n                    }\n                }\n            }\n        } // if (*detailed_opt)\n\n        cout \u003c\u003c endl;\n\n    }\n\n    cout \u003c\u003c \"\\nEnd of program.\" \u003c\u003c endl;\n\n    return 0;\n}\n```\n## Program options\n\n```bash\n./mpool -h\nmpool, show information about transactions in memory pool:\n  -h [ --help ] [=arg(=1)] (=0)         produce help message\n  -a [ --address ] arg (=http:://127.0.0.1:18081)\n                                        monero daemon address\n  -d [ --detailed ] [=arg(=1)] (=0)     show more detailed info about\n                                        transatcions\n  --testnet [=arg(=1)] (=0)             is the address from testnet network\n```\n\n## Example  output 1\nDefault output with just one transaction in the mempool.\n```bash\n./mpool\nNumber of transactions in memory pool: 1\n\nTx hash: 3d32acc7359c1fd8ac585f927582d0e4f5a0ce97733da3f2cfcabe11b28912e1\nFee: 0.0100000000 xmr, size 459 bytes\nReceive time: 2016-04-08 10:07:03\nNo of inputs 1 (mixin 2) for total 300.0000000000 xmr\nInput key images:\n - a2e1f563129bddc921ae9058d115db18e4af684a4c20ae836b6cdc0abc736a03, 300.0000000000 xmr\nNo of outputs 6 for total 299.9900000000 xmr\nOutputs:\n - 6d5101198a9a7a04587d3ae0741baa09328ddf66fbf4ffb2b95311795c0e75e5, 0.0900000000 xmr\n - 84d90734310ca002423397724970186d258474dc901a0324bb01e34329c2faef, 0.1000000000 xmr\n - 64c7b60af446ddfa5712d52b912722e19f3111d38b4afb3d369c174a1bd4a9b1, 0.8000000000 xmr\n - 483549d6b184688c5fc2a96bf6298d956ee053e257d4a2f27ce58bbbaa37da1e, 9.0000000000 xmr\n - fb21d786e2bea604245385d027286f6e19c228e43e1c9fde5771a3b427339cae, 90.0000000000 xmr\n - 7c79c51259a57a23bd2994f5f0fe6d32501f0b3f9cef478e7fa78926b5b27b11, 200.0000000000 xmr\n```\n\n## Example  output 2\nDefault output with more than one transactions in mempool.\n```bash\n./mpool\nNumber of transactions in memory pool: 2\n\nTx hash: 3d32acc7359c1fd8ac585f927582d0e4f5a0ce97733da3f2cfcabe11b28912e1\nFee: 0.0100000000 xmr, size 459 bytes\nReceive time: 2016-04-08 10:07:03\nNo of inputs 1 (mixin 2) for total 300.0000000000 xmr\nInput key images:\n - a2e1f563129bddc921ae9058d115db18e4af684a4c20ae836b6cdc0abc736a03, 300.0000000000 xmr\nNo of outputs 6 for total 299.9900000000 xmr\nOutputs:\n - 6d5101198a9a7a04587d3ae0741baa09328ddf66fbf4ffb2b95311795c0e75e5, 0.0900000000 xmr\n - 84d90734310ca002423397724970186d258474dc901a0324bb01e34329c2faef, 0.1000000000 xmr\n - 64c7b60af446ddfa5712d52b912722e19f3111d38b4afb3d369c174a1bd4a9b1, 0.8000000000 xmr\n - 483549d6b184688c5fc2a96bf6298d956ee053e257d4a2f27ce58bbbaa37da1e, 9.0000000000 xmr\n - fb21d786e2bea604245385d027286f6e19c228e43e1c9fde5771a3b427339cae, 90.0000000000 xmr\n - 7c79c51259a57a23bd2994f5f0fe6d32501f0b3f9cef478e7fa78926b5b27b11, 200.0000000000 xmr\n\n\nTx hash: bcdd2147b21ca4f77ba9c68ab1b7a84951552182528dc2cdfabafc09e8bc168e\nFee: 0.1000000000 xmr, size 1194 bytes\nReceive time: 2016-04-08 14:55:14\nNo of inputs 1 (mixin 3) for total 100.0000000000 xmr\nInput key images:\n - fa97ccd850f0594f23180af914aef05628f75fac275a5122c7d31feb25bbb52a, 100.0000000000 xmr\nNo of outputs 24 for total 99.9000000000 xmr\nOutputs:\n - 6f0f79a82a9666d1fda8d9e28e2b93aff735d57efa6bb2e0f1260bfcaad42ad6, 0.0000000000 xmr\n - cfd2ddca469f223fe45cea16e6d4d5c4e548866157e7e1ccc4ebca0b0d857f40, 0.0000000000 xmr\n - 434cc293c9402c2aa6943521ab02f7657ae1879f131ec260d155dfd5eb9ea8c1, 0.0000000000 xmr\n - 431f643b1452ad1788abb29b9aa9f052cac5e32841f61530786113a4e52a2807, 0.0000000001 xmr\n - 167f8f7681fc25e8e08c623f1ce0f8852b9335fe94c64c1fa38546fa3bc731cf, 0.0000000004 xmr\n - e420e388ec66d6d7ccdecc7cb3d485e3f6a57e9525df330810a7e8b556944da6, 0.0000000005 xmr\n - dfaeb1a5cf1d846283c31c86b99b6a51b3b958f15b22e0ae311abccaa3ebaa0d, 0.0000000040 xmr\n - 70e448c8243dd73894a069cd9eeed329061aed4a25491d5676e5c71c401ebf55, 0.0000000050 xmr\n - cb46ec49617fa192f6d6f8531b359a27d22a09832fbb353d1417587d0d2d924f, 0.0000000900 xmr\n - 9d9b82993a02489ddb71bb2c722afed77799977e6d93810769567966232fb9fb, 0.0000002000 xmr\n - f44fee23dd911a80fd41e309947ad41273a91bb2906bbd4f40c27264853996ec, 0.0000007000 xmr\n - e798306cd30a7f014b31634b35478ea311acdc9e5014131c99011c288b7e31fd, 0.0000090000 xmr\n - e49641e98a2651982e827793fe11df7c22715c1d8e50ffbc2035c36114f3c1dc, 0.0000300000 xmr\n - b1e18916ec80780ad73d1100c43944f28f839d4126c69783dae2bc2874782c69, 0.0000600000 xmr\n - b3746068c3c2c0eca654edb664eba48d99eb6626cafd2b5b6951d05e06a5d779, 0.0002000000 xmr\n - fca87eddc12111de205b18180cef18bc1385be513683cc021e3ff75f7fd96994, 0.0007000000 xmr\n - 8afd9f65b376fc1990e1ee147b260d66ea5bf15b444fa1bcdd87bbaf6407373c, 0.0010000000 xmr\n - 365ede1f576540774c50979400452f391092ec38375e5ee05e4f15567b4634c9, 0.0080000000 xmr\n - c982dfa44ac2ce4494a56c8890e529f08ab9dbb3496a93004c2c7d9b5e7ae7ad, 0.0400000000 xmr\n - e43b7631d38d58a60c919982146c709173cb5894528e6369b60a2e7e4316070c, 0.0500000000 xmr\n - 01bdfaac0a4e3c41e3fe87b43b7f10ce15f53c634c8d5b8dd848dd79f1555938, 0.2000000000 xmr\n - a0cd363df72b8e0d1d23b1927fef52d24f92277c202bb573be32456403603788, 0.6000000000 xmr\n - d2a165776bc0a5ccfc8088d5fe9818c937c756f8b06c42791f94484357109cb8, 9.0000000000 xmr\n - 1a4271b6ae3ecaf52686f9b7ff47a5197a383a9caed8b75ac0f68e89172f68f6, 90.0000000000 xmr\n```\n\n## Example  output 3\nDetailed output with more than one transactions in mempool.\n```bash\n./mpool -d\nNumber of transactions in memory pool: 3\n\nTx hash: 142aec28ff8020131b738bcc3d60c73baa6a4287269499855b7f92dd15ebf2f1\nFee: 0.1000000000 xmr, size 586 bytes\nReceive time: 2016-04-11 08:56:43\nNo of inputs 1 (mixin 3) for total 80.0000000000 xmr\nInput key images:\n - de54af59ca664b8d158b9a8b7c6e4a8483e1875308c3be5a4ccbf8745337db77, 80.0000000000 xmr\nNo of outputs 7 for total 79.9000000000 xmr\nOutputs:\n - aa555ddc8aa70efcfa5108dea7133ea6e113577a8fb6a9a965640dc98d722e00, 0.0100000000 xmr\n - 74ff68e9e76e6f36e73d7777abd5bda7f4b304f0b41d0245ff0968f674557457, 0.0900000000 xmr\n - ad2bcff6d435b2b402e930eac3b3b2cbee8e86ecd13191627296ab7de14b10cf, 0.3000000000 xmr\n - b4563a1598a40c87300c1bb1ba424479907d9134d2ec2256e9345f6c63c47a22, 0.5000000000 xmr\n - 340d16b9349b69a799ea205ab06a088bef926f498e64df27737fbd058dd7844e, 2.0000000000 xmr\n - 09f2998fc8694f8f85b9c76145454b8a53e8869f77ae29cfb46213f287a5984e, 7.0000000000 xmr\n - 7fc6b9edc88397daff9f92688f867814c22299cba8e0573ba5c0e2c5c5a0051a, 70.0000000000 xmr\n\nkept_by_block: F\nmax_used_block_height: 1022689\nmax_used_block_id: 81a23ad616d14c8cca6f6b123d4a3563a8e856cdbe47395f1fb9e60fb6e1860a\nlast_failed_height: 0\nlast_failed_id: 0000000000000000000000000000000000000000000000000000000000000000\njson: {\n  \"version\": 1,\n  \"unlock_time\": 0,\n  \"vin\": [ {\n      \"key\": {\n        \"amount\": 80000000000000,\n        \"key_offsets\": [ 756, 5740, 6562\n        ],\n        \"k_image\": \"de54af59ca664b8d158b9a8b7c6e4a8483e1875308c3be5a4ccbf8745337db77\"\n      }\n    }\n  ],\n  \"vout\": [ {\n      \"amount\": 10000000000,\n      \"target\": {\n        \"key\": \"aa555ddc8aa70efcfa5108dea7133ea6e113577a8fb6a9a965640dc98d722e00\"\n      }\n    }, {\n      \"amount\": 90000000000,\n      \"target\": {\n        \"key\": \"74ff68e9e76e6f36e73d7777abd5bda7f4b304f0b41d0245ff0968f674557457\"\n      }\n    }, {\n      \"amount\": 300000000000,\n      \"target\": {\n        \"key\": \"ad2bcff6d435b2b402e930eac3b3b2cbee8e86ecd13191627296ab7de14b10cf\"\n      }\n    }, {\n      \"amount\": 500000000000,\n      \"target\": {\n        \"key\": \"b4563a1598a40c87300c1bb1ba424479907d9134d2ec2256e9345f6c63c47a22\"\n      }\n    }, {\n      \"amount\": 2000000000000,\n      \"target\": {\n        \"key\": \"340d16b9349b69a799ea205ab06a088bef926f498e64df27737fbd058dd7844e\"\n      }\n    }, {\n      \"amount\": 7000000000000,\n      \"target\": {\n        \"key\": \"09f2998fc8694f8f85b9c76145454b8a53e8869f77ae29cfb46213f287a5984e\"\n      }\n    }, {\n      \"amount\": 70000000000000,\n      \"target\": {\n        \"key\": \"7fc6b9edc88397daff9f92688f867814c22299cba8e0573ba5c0e2c5c5a0051a\"\n      }\n    }\n  ],\n  \"extra\": [ 2, 33, 0, 60, 226, 87, 179, 17, 229, 172, 248, 73, 153, 47, 90, 103, 81, 136, 232, 167, 15, 102, 253, 160, 72, 179, 248, 147, 130, 89, 161, 57, 142, 170, 139, 1, 12, 168, 253, 204, 59, 34, 221, 252, 28, 248, 117, 198, 186, 212, 32, 33, 180, 53, 104, 213, 81, 34, 209, 50, 152, 139, 25, 114, 159, 164, 231, 243\n  ],\n  \"signatures\": [ \"9f2bf0d73163b999d3db387df6deb539c86250a91754aada8e0205fdffa2a000d772591a7d3464b139f7ab129249721942d5774befbb8605e38f6a8c7f6bb00fb6ae2e46cea2233a39bdd2e27a06ea27de539aeb879f8f132745d370ca1137063ccfa83d9b1cd633063845367fa93a64fc83dfbfc412d0bca25fca1ec249ae061cf6c1b94ff3c12e7024e09e68e39fe8dee04e384d71b80060302a832ae93d0bc3f5034ecf79fa49629c7df0bed392f5cce7628cca49d34ac9f081f59970be05\"]\n}\nkey image value: de54af59ca664b8d158b9a8b7c6e4a8483e1875308c3be5a4ccbf8745337db77\n - tx hash: 142aec28ff8020131b738bcc3d60c73baa6a4287269499855b7f92dd15ebf2f1\nkey image value: fa97ccd850f0594f23180af914aef05628f75fac275a5122c7d31feb25bbb52a\n - tx hash: bcdd2147b21ca4f77ba9c68ab1b7a84951552182528dc2cdfabafc09e8bc168e\nkey image value: a2e1f563129bddc921ae9058d115db18e4af684a4c20ae836b6cdc0abc736a03\n - tx hash: 3d32acc7359c1fd8ac585f927582d0e4f5a0ce97733da3f2cfcabe11b28912e1\n\nTx hash: 3d32acc7359c1fd8ac585f927582d0e4f5a0ce97733da3f2cfcabe11b28912e1\nFee: 0.0100000000 xmr, size 459 bytes\nReceive time: 2016-04-08 10:07:03\nNo of inputs 1 (mixin 2) for total 300.0000000000 xmr\nInput key images:\n - a2e1f563129bddc921ae9058d115db18e4af684a4c20ae836b6cdc0abc736a03, 300.0000000000 xmr\nNo of outputs 6 for total 299.9900000000 xmr\nOutputs:\n - 6d5101198a9a7a04587d3ae0741baa09328ddf66fbf4ffb2b95311795c0e75e5, 0.0900000000 xmr\n - 84d90734310ca002423397724970186d258474dc901a0324bb01e34329c2faef, 0.1000000000 xmr\n - 64c7b60af446ddfa5712d52b912722e19f3111d38b4afb3d369c174a1bd4a9b1, 0.8000000000 xmr\n - 483549d6b184688c5fc2a96bf6298d956ee053e257d4a2f27ce58bbbaa37da1e, 9.0000000000 xmr\n - fb21d786e2bea604245385d027286f6e19c228e43e1c9fde5771a3b427339cae, 90.0000000000 xmr\n - 7c79c51259a57a23bd2994f5f0fe6d32501f0b3f9cef478e7fa78926b5b27b11, 200.0000000000 xmr\n\nkept_by_block: T\nmax_used_block_height: 0\nmax_used_block_id: 0000000000000000000000000000000000000000000000000000000000000000\nlast_failed_height: 1020861\nlast_failed_id: 3713edf56b46d006bebb230764512a7747a46ddc648b0ea5d276011e6a238bed\njson: {\n  \"version\": 1,\n  \"unlock_time\": 0,\n  \"vin\": [ {\n      \"key\": {\n        \"amount\": 300000000000000,\n        \"key_offsets\": [ 5412, 2551\n        ],\n        \"k_image\": \"a2e1f563129bddc921ae9058d115db18e4af684a4c20ae836b6cdc0abc736a03\"\n      }\n    }\n  ],\n  \"vout\": [ {\n      \"amount\": 90000000000,\n      \"target\": {\n        \"key\": \"6d5101198a9a7a04587d3ae0741baa09328ddf66fbf4ffb2b95311795c0e75e5\"\n      }\n    }, {\n      \"amount\": 100000000000,\n      \"target\": {\n        \"key\": \"84d90734310ca002423397724970186d258474dc901a0324bb01e34329c2faef\"\n      }\n    }, {\n      \"amount\": 800000000000,\n      \"target\": {\n        \"key\": \"64c7b60af446ddfa5712d52b912722e19f3111d38b4afb3d369c174a1bd4a9b1\"\n      }\n    }, {\n      \"amount\": 9000000000000,\n      \"target\": {\n        \"key\": \"483549d6b184688c5fc2a96bf6298d956ee053e257d4a2f27ce58bbbaa37da1e\"\n      }\n    }, {\n      \"amount\": 90000000000000,\n      \"target\": {\n        \"key\": \"fb21d786e2bea604245385d027286f6e19c228e43e1c9fde5771a3b427339cae\"\n      }\n    }, {\n      \"amount\": 200000000000000,\n      \"target\": {\n        \"key\": \"7c79c51259a57a23bd2994f5f0fe6d32501f0b3f9cef478e7fa78926b5b27b11\"\n      }\n    }\n  ],\n  \"extra\": [ 1, 245, 112, 123, 239, 74, 41, 77, 30, 172, 168, 6, 158, 207, 179, 77, 42, 107, 21, 47, 133, 218, 72, 188, 56, 104, 131, 59, 185, 241, 186, 13, 57, 2, 9, 1, 52, 8, 78, 20, 150, 45, 25, 249\n  ],\n  \"signatures\": [ \"cfa64d926b17024c906cc5b007a2832a5cd47ad93cd000975ded0722f36be706329bf2364e1ff61f1aa444132a9f5cab028492441c8b5721af2330c6fa211704b9555b53b947023b5c9479c766989da475405d94e215971d9c1e613e119c7d02421b3616fafd370adc694975cc1e2cb548d220e7d271a52839f7a7b86945e10d\"]\n}\nkey image value: de54af59ca664b8d158b9a8b7c6e4a8483e1875308c3be5a4ccbf8745337db77\n - tx hash: 142aec28ff8020131b738bcc3d60c73baa6a4287269499855b7f92dd15ebf2f1\nkey image value: fa97ccd850f0594f23180af914aef05628f75fac275a5122c7d31feb25bbb52a\n - tx hash: bcdd2147b21ca4f77ba9c68ab1b7a84951552182528dc2cdfabafc09e8bc168e\nkey image value: a2e1f563129bddc921ae9058d115db18e4af684a4c20ae836b6cdc0abc736a03\n - tx hash: 3d32acc7359c1fd8ac585f927582d0e4f5a0ce97733da3f2cfcabe11b28912e1\n\nTx hash: bcdd2147b21ca4f77ba9c68ab1b7a84951552182528dc2cdfabafc09e8bc168e\nFee: 0.1000000000 xmr, size 1194 bytes\nReceive time: 2016-04-08 14:55:14\nNo of inputs 1 (mixin 3) for total 100.0000000000 xmr\nInput key images:\n - fa97ccd850f0594f23180af914aef05628f75fac275a5122c7d31feb25bbb52a, 100.0000000000 xmr\nNo of outputs 24 for total 99.9000000000 xmr\nOutputs:\n - 6f0f79a82a9666d1fda8d9e28e2b93aff735d57efa6bb2e0f1260bfcaad42ad6, 0.0000000000 xmr\n - cfd2ddca469f223fe45cea16e6d4d5c4e548866157e7e1ccc4ebca0b0d857f40, 0.0000000000 xmr\n - 434cc293c9402c2aa6943521ab02f7657ae1879f131ec260d155dfd5eb9ea8c1, 0.0000000000 xmr\n - 431f643b1452ad1788abb29b9aa9f052cac5e32841f61530786113a4e52a2807, 0.0000000001 xmr\n - 167f8f7681fc25e8e08c623f1ce0f8852b9335fe94c64c1fa38546fa3bc731cf, 0.0000000004 xmr\n - e420e388ec66d6d7ccdecc7cb3d485e3f6a57e9525df330810a7e8b556944da6, 0.0000000005 xmr\n - dfaeb1a5cf1d846283c31c86b99b6a51b3b958f15b22e0ae311abccaa3ebaa0d, 0.0000000040 xmr\n - 70e448c8243dd73894a069cd9eeed329061aed4a25491d5676e5c71c401ebf55, 0.0000000050 xmr\n - cb46ec49617fa192f6d6f8531b359a27d22a09832fbb353d1417587d0d2d924f, 0.0000000900 xmr\n - 9d9b82993a02489ddb71bb2c722afed77799977e6d93810769567966232fb9fb, 0.0000002000 xmr\n - f44fee23dd911a80fd41e309947ad41273a91bb2906bbd4f40c27264853996ec, 0.0000007000 xmr\n - e798306cd30a7f014b31634b35478ea311acdc9e5014131c99011c288b7e31fd, 0.0000090000 xmr\n - e49641e98a2651982e827793fe11df7c22715c1d8e50ffbc2035c36114f3c1dc, 0.0000300000 xmr\n - b1e18916ec80780ad73d1100c43944f28f839d4126c69783dae2bc2874782c69, 0.0000600000 xmr\n - b3746068c3c2c0eca654edb664eba48d99eb6626cafd2b5b6951d05e06a5d779, 0.0002000000 xmr\n - fca87eddc12111de205b18180cef18bc1385be513683cc021e3ff75f7fd96994, 0.0007000000 xmr\n - 8afd9f65b376fc1990e1ee147b260d66ea5bf15b444fa1bcdd87bbaf6407373c, 0.0010000000 xmr\n - 365ede1f576540774c50979400452f391092ec38375e5ee05e4f15567b4634c9, 0.0080000000 xmr\n - c982dfa44ac2ce4494a56c8890e529f08ab9dbb3496a93004c2c7d9b5e7ae7ad, 0.0400000000 xmr\n - e43b7631d38d58a60c919982146c709173cb5894528e6369b60a2e7e4316070c, 0.0500000000 xmr\n - 01bdfaac0a4e3c41e3fe87b43b7f10ce15f53c634c8d5b8dd848dd79f1555938, 0.2000000000 xmr\n - a0cd363df72b8e0d1d23b1927fef52d24f92277c202bb573be32456403603788, 0.6000000000 xmr\n - d2a165776bc0a5ccfc8088d5fe9818c937c756f8b06c42791f94484357109cb8, 9.0000000000 xmr\n - 1a4271b6ae3ecaf52686f9b7ff47a5197a383a9caed8b75ac0f68e89172f68f6, 90.0000000000 xmr\n\nkept_by_block: T\nmax_used_block_height: 1020945\nmax_used_block_id: 19a0de1b5f3d1c46b12ae44ebb8194992b89a6df628510cf9cb221aa1b57af6c\nlast_failed_height: 0\nlast_failed_id: 0000000000000000000000000000000000000000000000000000000000000000\njson: {\n  \"version\": 1,\n  \"unlock_time\": 0,\n  \"vin\": [ {\n      \"key\": {\n        \"amount\": 100000000000000,\n        \"key_offsets\": [ 38, 2380, 30028\n        ],\n        \"k_image\": \"fa97ccd850f0594f23180af914aef05628f75fac275a5122c7d31feb25bbb52a\"\n      }\n    }\n  ],\n  \"vout\": [ {\n      \"amount\": 4,\n      \"target\": {\n        \"key\": \"6f0f79a82a9666d1fda8d9e28e2b93aff735d57efa6bb2e0f1260bfcaad42ad6\"\n      }\n    }, {\n      \"amount\": 6,\n      \"target\": {\n        \"key\": \"cfd2ddca469f223fe45cea16e6d4d5c4e548866157e7e1ccc4ebca0b0d857f40\"\n      }\n    }, {\n      \"amount\": 20,\n      \"target\": {\n        \"key\": \"434cc293c9402c2aa6943521ab02f7657ae1879f131ec260d155dfd5eb9ea8c1\"\n      }\n    }, {\n      \"amount\": 70,\n      \"target\": {\n        \"key\": \"431f643b1452ad1788abb29b9aa9f052cac5e32841f61530786113a4e52a2807\"\n      }\n    }, {\n      \"amount\": 400,\n      \"target\": {\n        \"key\": \"167f8f7681fc25e8e08c623f1ce0f8852b9335fe94c64c1fa38546fa3bc731cf\"\n      }\n    }, {\n      \"amount\": 500,\n      \"target\": {\n        \"key\": \"e420e388ec66d6d7ccdecc7cb3d485e3f6a57e9525df330810a7e8b556944da6\"\n      }\n    }, {\n      \"amount\": 4000,\n      \"target\": {\n        \"key\": \"dfaeb1a5cf1d846283c31c86b99b6a51b3b958f15b22e0ae311abccaa3ebaa0d\"\n      }\n    }, {\n      \"amount\": 5000,\n      \"target\": {\n        \"key\": \"70e448c8243dd73894a069cd9eeed329061aed4a25491d5676e5c71c401ebf55\"\n      }\n    }, {\n      \"amount\": 90000,\n      \"target\": {\n        \"key\": \"cb46ec49617fa192f6d6f8531b359a27d22a09832fbb353d1417587d0d2d924f\"\n      }\n    }, {\n      \"amount\": 200000,\n      \"target\": {\n        \"key\": \"9d9b82993a02489ddb71bb2c722afed77799977e6d93810769567966232fb9fb\"\n      }\n    }, {\n      \"amount\": 700000,\n      \"target\": {\n        \"key\": \"f44fee23dd911a80fd41e309947ad41273a91bb2906bbd4f40c27264853996ec\"\n      }\n    }, {\n      \"amount\": 9000000,\n      \"target\": {\n        \"key\": \"e798306cd30a7f014b31634b35478ea311acdc9e5014131c99011c288b7e31fd\"\n      }\n    }, {\n      \"amount\": 30000000,\n      \"target\": {\n        \"key\": \"e49641e98a2651982e827793fe11df7c22715c1d8e50ffbc2035c36114f3c1dc\"\n      }\n    }, {\n      \"amount\": 60000000,\n      \"target\": {\n        \"key\": \"b1e18916ec80780ad73d1100c43944f28f839d4126c69783dae2bc2874782c69\"\n      }\n    }, {\n      \"amount\": 200000000,\n      \"target\": {\n        \"key\": \"b3746068c3c2c0eca654edb664eba48d99eb6626cafd2b5b6951d05e06a5d779\"\n      }\n    }, {\n      \"amount\": 700000000,\n      \"target\": {\n        \"key\": \"fca87eddc12111de205b18180cef18bc1385be513683cc021e3ff75f7fd96994\"\n      }\n    }, {\n      \"amount\": 1000000000,\n      \"target\": {\n        \"key\": \"8afd9f65b376fc1990e1ee147b260d66ea5bf15b444fa1bcdd87bbaf6407373c\"\n      }\n    }, {\n      \"amount\": 8000000000,\n      \"target\": {\n        \"key\": \"365ede1f576540774c50979400452f391092ec38375e5ee05e4f15567b4634c9\"\n      }\n    }, {\n      \"amount\": 40000000000,\n      \"target\": {\n        \"key\": \"c982dfa44ac2ce4494a56c8890e529f08ab9dbb3496a93004c2c7d9b5e7ae7ad\"\n      }\n    }, {\n      \"amount\": 50000000000,\n      \"target\": {\n        \"key\": \"e43b7631d38d58a60c919982146c709173cb5894528e6369b60a2e7e4316070c\"\n      }\n    }, {\n      \"amount\": 200000000000,\n      \"target\": {\n        \"key\": \"01bdfaac0a4e3c41e3fe87b43b7f10ce15f53c634c8d5b8dd848dd79f1555938\"\n      }\n    }, {\n      \"amount\": 600000000000,\n      \"target\": {\n        \"key\": \"a0cd363df72b8e0d1d23b1927fef52d24f92277c202bb573be32456403603788\"\n      }\n    }, {\n      \"amount\": 9000000000000,\n      \"target\": {\n        \"key\": \"d2a165776bc0a5ccfc8088d5fe9818c937c756f8b06c42791f94484357109cb8\"\n      }\n    }, {\n      \"amount\": 90000000000000,\n      \"target\": {\n        \"key\": \"1a4271b6ae3ecaf52686f9b7ff47a5197a383a9caed8b75ac0f68e89172f68f6\"\n      }\n    }\n  ],\n  \"extra\": [ 1, 240, 237, 201, 86, 95, 204, 131, 192, 76, 61, 209, 70, 202, 33, 172, 41, 172, 181, 122, 176, 176, 5, 156, 56, 59, 244, 62, 6, 97, 9, 94, 131, 2, 33, 0, 253, 214, 166, 25, 99, 149, 74, 126, 107, 233, 224, 123, 232, 176, 6, 99, 164, 208, 193, 161, 133, 64, 190, 144, 23, 23, 162, 123, 124, 232, 34, 97\n  ],\n  \"signatures\": [ \"6d5053ee928b2d2975ed855e2cd8b0745fba53bb571da84845d281354219610b92526fe330b84f58c7b569a0ca1c426b0d579a452fc7a42886d4b79bfaa33d0de74a1906934bcffaa51de21446bc93b81bf0115f5139e09c56bee9ca814212003d784aedf4e36bfd414c6e9afb7f844e294486df1e514d2a3febff7f679a67099c9d972a70130bf611e8e4608ad8601e98c117c7bdc34382750e6a948dddbe0d4c866c1c05df2b2685488ff7f83a0a808d44c4a84e53ba812326218599872206\"]\n}\nkey image value: de54af59ca664b8d158b9a8b7c6e4a8483e1875308c3be5a4ccbf8745337db77\n - tx hash: 142aec28ff8020131b738bcc3d60c73baa6a4287269499855b7f92dd15ebf2f1\nkey image value: fa97ccd850f0594f23180af914aef05628f75fac275a5122c7d31feb25bbb52a\n - tx hash: bcdd2147b21ca4f77ba9c68ab1b7a84951552182528dc2cdfabafc09e8bc168e\nkey image value: a2e1f563129bddc921ae9058d115db18e4af684a4c20ae836b6cdc0abc736a03\n - tx hash: 3d32acc7359c1fd8ac585f927582d0e4f5a0ce97733da3f2cfcabe11b28912e1\n```\n\n\n## Compile this example\n\nIf so then to download and compile this example, the following\nsteps can be executed:\n\n```bash\n# download the source code\ngit clone https://github.com/moneroexamples/memory-pool.git\n\n# enter the downloaded sourced code folder\ncd memory-pool\n\n# create the makefile\ncmake .\n\n# compile\nmake\n```\n\nThe Monero C++ development environment was set as shown in the following link:\n- [Ubuntu 16.04 x86_64](https://github.com/moneroexamples/compile-monero-09-on-ubuntu-16-04/)\n\n## How can you help?\n\nConstructive criticism, code and website edits are always good. They can be made through github.\n\nSome Monero are also welcome:\n```\n48daf1rG3hE1Txapcsxh6WXNe9MLNKtu7W7tKTivtSoVLHErYzvdcpea2nSTgGkz66RFP4GKVAsTV14v6G3oddBTHfxP6tU\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoneroexamples%2Fmemory-pool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmoneroexamples%2Fmemory-pool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoneroexamples%2Fmemory-pool/lists"}