Merge pull request #1605
7c3f79cb
core: early out in handle_incoming_tx if already in pool or blockchain (moneromooo-monero)6cc7d261
ringct: reorder a bit to check quicker tests first (moneromooo-monero)
This commit is contained in:
commit
ee45b7a6db
2 changed files with 29 additions and 17 deletions
|
@ -496,6 +496,18 @@ namespace cryptonote
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(m_mempool.have_tx(tx_hash))
|
||||||
|
{
|
||||||
|
LOG_PRINT_L2("tx " << tx_hash << "already have transaction in tx_pool");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(m_blockchain_storage.have_tx(tx_hash))
|
||||||
|
{
|
||||||
|
LOG_PRINT_L2("tx " << tx_hash << " already have transaction in blockchain");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if(!check_tx_syntax(tx))
|
if(!check_tx_syntax(tx))
|
||||||
{
|
{
|
||||||
LOG_PRINT_L1("WRONG TRANSACTION BLOB, Failed to check tx " << tx_hash << " syntax, rejected");
|
LOG_PRINT_L1("WRONG TRANSACTION BLOB, Failed to check tx " << tx_hash << " syntax, rejected");
|
||||||
|
|
|
@ -797,23 +797,6 @@ namespace rct {
|
||||||
tools::thread_group threadpool(tools::thread_group::optimal_with_max(threads));
|
tools::thread_group threadpool(tools::thread_group::optimal_with_max(threads));
|
||||||
|
|
||||||
if (semantics) {
|
if (semantics) {
|
||||||
results.clear();
|
|
||||||
results.resize(rv.outPk.size());
|
|
||||||
tools::task_region(threadpool, [&] (tools::task_region_handle& region) {
|
|
||||||
for (size_t i = 0; i < rv.outPk.size(); i++) {
|
|
||||||
region.run([&, i] {
|
|
||||||
results[i] = verRange(rv.outPk[i].mask, rv.p.rangeSigs[i]);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
for (size_t i = 0; i < results.size(); ++i) {
|
|
||||||
if (!results[i]) {
|
|
||||||
LOG_PRINT_L1("Range proof verified failed for output " << i);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
key sumOutpks = identity();
|
key sumOutpks = identity();
|
||||||
for (size_t i = 0; i < rv.outPk.size(); i++) {
|
for (size_t i = 0; i < rv.outPk.size(); i++) {
|
||||||
addKeys(sumOutpks, sumOutpks, rv.outPk[i].mask);
|
addKeys(sumOutpks, sumOutpks, rv.outPk[i].mask);
|
||||||
|
@ -833,6 +816,23 @@ namespace rct {
|
||||||
LOG_PRINT_L1("Sum check failed");
|
LOG_PRINT_L1("Sum check failed");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
results.clear();
|
||||||
|
results.resize(rv.outPk.size());
|
||||||
|
tools::task_region(threadpool, [&] (tools::task_region_handle& region) {
|
||||||
|
for (size_t i = 0; i < rv.outPk.size(); i++) {
|
||||||
|
region.run([&, i] {
|
||||||
|
results[i] = verRange(rv.outPk[i].mask, rv.p.rangeSigs[i]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
for (size_t i = 0; i < results.size(); ++i) {
|
||||||
|
if (!results[i]) {
|
||||||
|
LOG_PRINT_L1("Range proof verified failed for output " << i);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
const key message = get_pre_mlsag_hash(rv);
|
const key message = get_pre_mlsag_hash(rv);
|
||||||
|
|
Loading…
Reference in a new issue