diff options
author | Riccardo Spagni <ric@spagni.net> | 2018-10-20 20:43:09 +0200 |
---|---|---|
committer | Riccardo Spagni <ric@spagni.net> | 2018-10-20 20:43:09 +0200 |
commit | 37c66361994b8a02f5c21795c209bdfb5a83a511 (patch) | |
tree | 90c8069aa97ba25afd32ba803e25c3c94c7a9d13 | |
parent | Merge pull request #4636 (diff) | |
parent | core: don't verify range proofs multiple times (diff) | |
download | monero-37c66361994b8a02f5c21795c209bdfb5a83a511.tar.xz |
Merge pull request #4638
a23c80df core: don't verify range proofs multiple times (moneromooo-monero)
-rw-r--r-- | src/cryptonote_core/cryptonote_core.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/cryptonote_core/cryptonote_core.cpp b/src/cryptonote_core/cryptonote_core.cpp index 69e3c708b..2fec6b613 100644 --- a/src/cryptonote_core/cryptonote_core.cpp +++ b/src/cryptonote_core/cryptonote_core.cpp @@ -856,16 +856,19 @@ namespace cryptonote } waiter.wait(&tpool); it = tx_blobs.begin(); + std::vector<bool> already_have(tx_blobs.size(), false); for (size_t i = 0; i < tx_blobs.size(); i++, ++it) { if (!results[i].res) continue; if(m_mempool.have_tx(results[i].hash)) { LOG_PRINT_L2("tx " << results[i].hash << "already have transaction in tx_pool"); + already_have[i] = true; } else if(m_blockchain_storage.have_tx(results[i].hash)) { LOG_PRINT_L2("tx " << results[i].hash << " already have transaction in blockchain"); + already_have[i] = true; } else { @@ -887,7 +890,7 @@ namespace cryptonote std::vector<tx_verification_batch_info> tx_info; tx_info.reserve(tx_blobs.size()); for (size_t i = 0; i < tx_blobs.size(); i++) { - if (!results[i].res) + if (!results[i].res || already_have[i]) continue; tx_info.push_back({&results[i].tx, results[i].hash, tvc[i], results[i].res}); } @@ -897,6 +900,8 @@ namespace cryptonote bool ok = true; it = tx_blobs.begin(); for (size_t i = 0; i < tx_blobs.size(); i++, ++it) { + if (already_have[i]) + continue; if (!results[i].res) { ok = false; |