From 94089a8788afc81e73876f799142d8ae56fb96c2 Mon Sep 17 00:00:00 2001 From: j-berman Date: Tue, 21 Apr 2026 12:04:31 -0700 Subject: [PATCH] cryptonote_basic: pruned hash return bool --- src/cryptonote_basic/cryptonote_format_utils.cpp | 10 +++++----- src/cryptonote_basic/cryptonote_format_utils.h | 2 +- .../cryptonote_protocol_handler.inl | 2 +- src/wallet/wallet2.cpp | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/cryptonote_basic/cryptonote_format_utils.cpp b/src/cryptonote_basic/cryptonote_format_utils.cpp index 7e4a35c23..e4ef2b1e3 100644 --- a/src/cryptonote_basic/cryptonote_format_utils.cpp +++ b/src/cryptonote_basic/cryptonote_format_utils.cpp @@ -1313,10 +1313,10 @@ namespace cryptonote return res; } //--------------------------------------------------------------- - crypto::hash get_pruned_transaction_hash(const transaction& t, const crypto::hash &pruned_data_hash) + bool get_pruned_transaction_hash(const transaction& t, const crypto::hash &pruned_data_hash, crypto::hash &res) { // v1 transactions hash the entire blob - CHECK_AND_ASSERT_THROW_MES(t.version > 1, "Hash for pruned v1 tx cannot be calculated"); + CHECK_AND_ASSERT_MES(t.version > 1, false, "Hash for pruned v1 tx cannot be calculated"); // v2 transactions hash different parts together, than hash the set of those hashes crypto::hash hashes[3]; @@ -1333,7 +1333,7 @@ namespace cryptonote const size_t inputs = t.vin.size(); const size_t outputs = t.vout.size(); bool r = tt.rct_signatures.serialize_rctsig_base(ba, inputs, outputs); - CHECK_AND_ASSERT_THROW_MES(r, "Failed to serialize rct signatures base"); + CHECK_AND_ASSERT_MES(r, false, "Failed to serialize rct signatures base"); cryptonote::get_blob_hash(ss.str(), hashes[1]); } @@ -1344,9 +1344,9 @@ namespace cryptonote hashes[2] = pruned_data_hash; // the tx hash is the hash of the 3 hashes - crypto::hash res = cn_fast_hash(hashes, sizeof(hashes)); + res = cn_fast_hash(hashes, sizeof(hashes)); t.set_hash(res); - return res; + return true; } //--------------------------------------------------------------- bool calculate_transaction_hash(const transaction& t, crypto::hash& res, size_t* blob_size) diff --git a/src/cryptonote_basic/cryptonote_format_utils.h b/src/cryptonote_basic/cryptonote_format_utils.h index 64383ca94..19e8cc201 100644 --- a/src/cryptonote_basic/cryptonote_format_utils.h +++ b/src/cryptonote_basic/cryptonote_format_utils.h @@ -118,7 +118,7 @@ namespace cryptonote bool calculate_transaction_prunable_hash(const transaction& t, const cryptonote::blobdata_ref *blob, crypto::hash& res); crypto::hash get_transaction_prunable_hash(const transaction& t, const cryptonote::blobdata_ref *blob = NULL); bool calculate_transaction_hash(const transaction& t, crypto::hash& res, size_t* blob_size); - crypto::hash get_pruned_transaction_hash(const transaction& t, const crypto::hash &pruned_data_hash); + bool get_pruned_transaction_hash(const transaction& t, const crypto::hash &pruned_data_hash, crypto::hash& res); blobdata get_block_hashing_blob(const block& b); bool calculate_block_hash(const block& b, crypto::hash& res, const blobdata_ref *blob = NULL); diff --git a/src/cryptonote_protocol/cryptonote_protocol_handler.inl b/src/cryptonote_protocol/cryptonote_protocol_handler.inl index bcf447113..662618d12 100644 --- a/src/cryptonote_protocol/cryptonote_protocol_handler.inl +++ b/src/cryptonote_protocol/cryptonote_protocol_handler.inl @@ -119,7 +119,7 @@ namespace cryptonote if (is_pruned) { if ((parse_success = cryptonote::parse_and_validate_tx_base_from_blob(tx_entry.blob, tx))) - tx_hash = cryptonote::get_pruned_transaction_hash(tx, tx_entry.prunable_hash); + parse_success = cryptonote::get_pruned_transaction_hash(tx, tx_entry.prunable_hash, tx_hash); } else { diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp index 1f70f2291..ba757d9b3 100644 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp @@ -984,7 +984,7 @@ bool get_pruned_tx(const cryptonote::COMMAND_RPC_GET_TRANSACTIONS::entry &entry, // only v2 txes can calculate their txid after pruned if (bd[0] > 1) { - tx_hash = cryptonote::get_pruned_transaction_hash(tx, ph); + CHECK_AND_ASSERT_MES(cryptonote::get_pruned_transaction_hash(tx, ph, tx_hash), false, "Failed to get pruned tx hash"); } else {