From de7a690d5947f0cfe4fa1be69ff47ee5da092596 Mon Sep 17 00:00:00 2001 From: moneromooo-monero Date: Thu, 31 May 2018 16:45:43 +0100 Subject: [PATCH 1/3] wallet2: don't ask for pruned txes yet, we still parse the entire tx --- src/wallet/wallet2.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp index b28539c18..a5244451b 100755 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp @@ -5647,7 +5647,7 @@ bool wallet2::find_and_save_rings(bool force) for (size_t slice = 0; slice < txs_hashes.size(); slice += SLICE_SIZE) { req.decode_as_json = false; - req.prune = true; + req.prune = false; req.txs_hashes.clear(); size_t ntxes = slice + SLICE_SIZE > txs_hashes.size() ? txs_hashes.size() - slice : SLICE_SIZE; for (size_t s = slice; s < slice + ntxes; ++s) From 8ec79e0cef1dee1d250bd2708f5abf2aeb7964d2 Mon Sep 17 00:00:00 2001 From: wowario Date: Fri, 1 Jun 2018 07:16:28 +0300 Subject: [PATCH 2/3] bump minor version for pruned blocks --- src/wallet/wallet2.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp index a5244451b..ab95cf549 100755 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp @@ -1663,7 +1663,7 @@ void wallet2::pull_blocks(uint64_t start_height, uint64_t &blocks_start_height, } else { - if (rpc_version >= MAKE_CORE_RPC_VERSION(1, 7)) + if (rpc_version >= MAKE_CORE_RPC_VERSION(1, 20)) { MDEBUG("Daemon is recent enough, asking for pruned blocks"); req.prune = true; From 7ebca508e162747a42786c552ee338080447f091 Mon Sep 17 00:00:00 2001 From: moneromooo-monero Date: Wed, 4 Apr 2018 11:40:31 +0100 Subject: [PATCH 3/3] wallet2: request transactions in slices when scanning for known rings This avoid massive memory consumption for huge wallets --- src/wallet/wallet2.cpp | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp index ab95cf549..d4e045a70 100755 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp @@ -5620,24 +5620,7 @@ bool wallet2::find_and_save_rings(bool force) txs_hashes.push_back(txid); } - MDEBUG("Found " << std::to_string(req.txs_hashes.size()) << " transactions"); - - // get those transactions from the daemon - req.decode_as_json = false; - req.prune = true; - bool r; - { - const boost::lock_guard lock{m_daemon_rpc_mutex}; - r = epee::net_utils::invoke_http_json("/gettransactions", req, res, m_http_client, rpc_timeout); - } - THROW_WALLET_EXCEPTION_IF(!r, error::no_connection_to_daemon, "gettransactions"); - THROW_WALLET_EXCEPTION_IF(res.status == CORE_RPC_STATUS_BUSY, error::daemon_busy, "gettransactions"); - THROW_WALLET_EXCEPTION_IF(res.status != CORE_RPC_STATUS_OK, error::wallet_internal_error, "gettransactions"); - THROW_WALLET_EXCEPTION_IF(res.txs.size() != req.txs_hashes.size(), error::wallet_internal_error, - "daemon returned wrong response for gettransactions, wrong txs count = " + - std::to_string(res.txs.size()) + ", expected " + std::to_string(req.txs_hashes.size())); - - MDEBUG("Scanning " << res.txs.size() << " transactions"); + MDEBUG("Found " << std::to_string(txs_hashes.size()) << " transactions"); crypto::chacha_key key; generate_chacha_key_from_secret_keys(key);