core: cache tx hashes of failing semantics txes

This commit is contained in:
moneromooo-monero 2017-01-22 16:13:31 +00:00
parent 71ac698b78
commit f098989396
No known key found for this signature in database
GPG Key ID: 686F07454D6CEFC3
2 changed files with 10 additions and 0 deletions

View File

@ -487,6 +487,13 @@ namespace cryptonote
} }
//std::cout << "!"<< tx.vin.size() << std::endl; //std::cout << "!"<< tx.vin.size() << std::endl;
if (bad_semantics_txes.find(tx_hash) != bad_semantics_txes.end())
{
LOG_PRINT_L1("Transaction already seen with bad semantics, rejected");
tvc.m_verifivation_failed = true;
return false;
}
uint8_t version = m_blockchain_storage.get_current_hard_fork_version(); uint8_t version = m_blockchain_storage.get_current_hard_fork_version();
const size_t max_tx_version = version == 1 ? 1 : 2; const size_t max_tx_version = version == 1 ? 1 : 2;
if (tx.version == 0 || tx.version > max_tx_version) if (tx.version == 0 || tx.version > max_tx_version)
@ -522,6 +529,7 @@ namespace cryptonote
if(!check_tx_semantic(tx, keeped_by_block)) if(!check_tx_semantic(tx, keeped_by_block))
{ {
LOG_PRINT_L1("WRONG TRANSACTION BLOB, Failed to check tx " << tx_hash << " semantic, rejected"); LOG_PRINT_L1("WRONG TRANSACTION BLOB, Failed to check tx " << tx_hash << " semantic, rejected");
bad_semantics_txes.insert(tx_hash);
tvc.m_verifivation_failed = true; tvc.m_verifivation_failed = true;
return false; return false;
} }

View File

@ -824,6 +824,8 @@ namespace cryptonote
size_t block_sync_size; size_t block_sync_size;
time_t start_time; time_t start_time;
std::unordered_set<crypto::hash> bad_semantics_txes;
}; };
} }