From 6b5e215e5a5e898ffa93feaba20a9278505bffb1 Mon Sep 17 00:00:00 2001 From: SergiySW Date: Sat, 31 Mar 2018 01:24:30 +0300 Subject: [PATCH] Check for pending blocks in change_seed action (#768) --- rai/node/wallet.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/rai/node/wallet.cpp b/rai/node/wallet.cpp index a801ef82..691e95ce 100644 --- a/rai/node/wallet.cpp +++ b/rai/node/wallet.cpp @@ -1305,6 +1305,7 @@ rai::public_key rai::wallet::change_seed (MDB_txn * transaction_a, rai::raw_key rai::raw_key prv; store.deterministic_key (prv, transaction_a, i); rai::keypair pair (prv.data.to_string ()); + // Check if account received at least 1 block auto latest (node.ledger.latest (transaction_a, pair.pub)); if (!latest.is_zero ()) { @@ -1313,6 +1314,17 @@ rai::public_key rai::wallet::change_seed (MDB_txn * transaction_a, rai::raw_key // i/64 - Check additional accounts for large wallets. I.e. 64000/64 = 1000 accounts to check n = i + 64 + (i / 64); } + else + { + // Check if there are pending blocks for account + rai::account end (pair.pub.number () + 1); + for (auto ii (node.store.pending_begin (transaction_a, rai::pending_key (pair.pub, 0))), nn (node.store.pending_begin (transaction_a, rai::pending_key (end, 0))); ii != nn; ++ii) + { + count = i; + n = i + 64 + (i / 64); + break; + } + } } for (uint32_t i (0); i < count; ++i) {