diff options
| author | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2018-09-16 18:30:39 +0000 |
|---|---|---|
| committer | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2018-10-08 10:18:01 +0000 |
| commit | 6844ae1b8d6b9fcbe4fda5ac5cb0e5a4242d850a (patch) | |
| tree | 8efa8e5f8973ec451d657096bcad4abff2d12017 /src/cryptonote_basic | |
| parent | bb30a7236725e456138f055f96a634c75ce2b491 (diff) | |
| download | monzero-core-6844ae1b8d6b9fcbe4fda5ac5cb0e5a4242d850a.tar.gz monzero-core-6844ae1b8d6b9fcbe4fda5ac5cb0e5a4242d850a.tar.xz monzero-core-6844ae1b8d6b9fcbe4fda5ac5cb0e5a4242d850a.zip | |
tx_pool: avoid parsing a whole tx if only the prefix is needed
Diffstat (limited to 'src/cryptonote_basic')
| -rw-r--r-- | src/cryptonote_basic/cryptonote_format_utils.cpp | 10 | ||||
| -rw-r--r-- | src/cryptonote_basic/cryptonote_format_utils.h | 1 |
2 files changed, 11 insertions, 0 deletions
diff --git a/src/cryptonote_basic/cryptonote_format_utils.cpp b/src/cryptonote_basic/cryptonote_format_utils.cpp index 5fcfa33f6..9e9c12605 100644 --- a/src/cryptonote_basic/cryptonote_format_utils.cpp +++ b/src/cryptonote_basic/cryptonote_format_utils.cpp @@ -199,6 +199,16 @@ namespace cryptonote return true; } //--------------------------------------------------------------- + bool parse_and_validate_tx_prefix_from_blob(const blobdata& tx_blob, transaction_prefix& tx) + { + std::stringstream ss; + ss << tx_blob; + binary_archive<false> ba(ss); + bool r = ::serialization::serialize_noeof(ba, tx); + CHECK_AND_ASSERT_MES(r, false, "Failed to parse transaction prefix from blob"); + return true; + } + //--------------------------------------------------------------- bool parse_and_validate_tx_from_blob(const blobdata& tx_blob, transaction& tx, crypto::hash& tx_hash, crypto::hash& tx_prefix_hash) { std::stringstream ss; diff --git a/src/cryptonote_basic/cryptonote_format_utils.h b/src/cryptonote_basic/cryptonote_format_utils.h index bf71eb591..725c75f4e 100644 --- a/src/cryptonote_basic/cryptonote_format_utils.h +++ b/src/cryptonote_basic/cryptonote_format_utils.h @@ -48,6 +48,7 @@ namespace cryptonote //--------------------------------------------------------------- void get_transaction_prefix_hash(const transaction_prefix& tx, crypto::hash& h); crypto::hash get_transaction_prefix_hash(const transaction_prefix& tx); + bool parse_and_validate_tx_prefix_from_blob(const blobdata& tx_blob, transaction_prefix& tx); bool parse_and_validate_tx_from_blob(const blobdata& tx_blob, transaction& tx, crypto::hash& tx_hash, crypto::hash& tx_prefix_hash); bool parse_and_validate_tx_from_blob(const blobdata& tx_blob, transaction& tx); bool parse_and_validate_tx_base_from_blob(const blobdata& tx_blob, transaction& tx); |
