rpc: do not misidentify coinbase txes as pruned
This commit is contained in:
parent
9367b432f6
commit
934b798c74
|
@ -1009,7 +1009,17 @@ namespace cryptonote
|
|||
CHECK_AND_ASSERT_MES(tx_hash == std::get<0>(tx), false, "mismatched tx hash");
|
||||
e.tx_hash = *txhi++;
|
||||
e.prunable_hash = epee::string_tools::pod_to_hex(std::get<2>(tx));
|
||||
if (req.split || req.prune || std::get<3>(tx).empty())
|
||||
|
||||
// coinbase txes do not have signatures to prune, so they appear to be pruned if looking just at prunable data being empty
|
||||
bool pruned = std::get<3>(tx).empty();
|
||||
if (pruned)
|
||||
{
|
||||
cryptonote::transaction t;
|
||||
if (cryptonote::parse_and_validate_tx_base_from_blob(std::get<1>(tx), t) && is_coinbase(t))
|
||||
pruned = false;
|
||||
}
|
||||
|
||||
if (req.split || req.prune || pruned)
|
||||
{
|
||||
// use splitted form with pruned and prunable (filled only when prune=false and the daemon has it), leaving as_hex as empty
|
||||
e.pruned_as_hex = string_tools::buff_to_hex_nodelimer(std::get<1>(tx));
|
||||
|
|
Loading…
Reference in New Issue