Skip to content

Commit

Permalink
daemon: add +meta print_tx parameter
Browse files Browse the repository at this point in the history
prints size, weight and (if mined) height
  • Loading branch information
moneromooo-monero committed Nov 4, 2019
1 parent ff94771 commit 7ba3119
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 4 deletions.
9 changes: 6 additions & 3 deletions src/daemon/command_parser_executor.cpp
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -244,12 +244,15 @@ bool t_command_parser_executor::print_block(const std::vector<std::string>& args


bool t_command_parser_executor::print_transaction(const std::vector<std::string>& args) bool t_command_parser_executor::print_transaction(const std::vector<std::string>& args)
{ {
bool include_metadata = false;
bool include_hex = false; bool include_hex = false;
bool include_json = false; bool include_json = false;


// Assumes that optional flags come after mandatory argument <transaction_hash> // Assumes that optional flags come after mandatory argument <transaction_hash>
for (unsigned int i = 1; i < args.size(); ++i) { for (unsigned int i = 1; i < args.size(); ++i) {
if (args[i] == "+hex") if (args[i] == "+meta")
include_metadata = true;
else if (args[i] == "+hex")
include_hex = true; include_hex = true;
else if (args[i] == "+json") else if (args[i] == "+json")
include_json = true; include_json = true;
Expand All @@ -261,15 +264,15 @@ bool t_command_parser_executor::print_transaction(const std::vector<std::string>
} }
if (args.empty()) if (args.empty())
{ {
std::cout << "expected: print_tx <transaction_hash> [+hex] [+json]" << std::endl; std::cout << "expected: print_tx <transaction_hash> [+meta] [+hex] [+json]" << std::endl;
return true; return true;
} }


const std::string& str_hash = args.front(); const std::string& str_hash = args.front();
crypto::hash tx_hash; crypto::hash tx_hash;
if (parse_hash256(str_hash, tx_hash)) if (parse_hash256(str_hash, tx_hash))
{ {
m_executor.print_transaction(tx_hash, include_hex, include_json); m_executor.print_transaction(tx_hash, include_metadata, include_hex, include_json);
} }


return true; return true;
Expand Down
24 changes: 24 additions & 0 deletions src/daemon/rpc_command_executor.cpp
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -939,6 +939,7 @@ bool t_rpc_command_executor::print_block_by_height(uint64_t height, bool include
} }


bool t_rpc_command_executor::print_transaction(crypto::hash transaction_hash, bool t_rpc_command_executor::print_transaction(crypto::hash transaction_hash,
bool include_metadata,
bool include_hex, bool include_hex,
bool include_json) { bool include_json) {
cryptonote::COMMAND_RPC_GET_TRANSACTIONS::request req; cryptonote::COMMAND_RPC_GET_TRANSACTIONS::request req;
Expand Down Expand Up @@ -981,6 +982,29 @@ bool t_rpc_command_executor::print_transaction(crypto::hash transaction_hash,
const std::string &as_hex = (1 == res.txs.size()) ? res.txs.front().as_hex : res.txs_as_hex.front(); const std::string &as_hex = (1 == res.txs.size()) ? res.txs.front().as_hex : res.txs_as_hex.front();
const std::string &pruned_as_hex = (1 == res.txs.size()) ? res.txs.front().pruned_as_hex : ""; const std::string &pruned_as_hex = (1 == res.txs.size()) ? res.txs.front().pruned_as_hex : "";
const std::string &prunable_as_hex = (1 == res.txs.size()) ? res.txs.front().prunable_as_hex : ""; const std::string &prunable_as_hex = (1 == res.txs.size()) ? res.txs.front().prunable_as_hex : "";
// Print metadata if requested
if (include_metadata)
{
if (!res.txs.front().in_pool)
{
tools::msg_writer() << "Block timestamp: " << res.txs.front().block_timestamp << " (" << tools::get_human_readable_timestamp(res.txs.front().block_timestamp) << ")";
}
cryptonote::blobdata blob;
if (epee::string_tools::parse_hexstr_to_binbuff(pruned_as_hex + prunable_as_hex, blob))
{
cryptonote::transaction tx;
if (cryptonote::parse_and_validate_tx_from_blob(blob, tx))
{
tools::msg_writer() << "Size: " << blob.size();
tools::msg_writer() << "Weight: " << cryptonote::get_transaction_weight(tx);
}
else
tools::fail_msg_writer() << "Error parsing transaction blob";
}
else
tools::fail_msg_writer() << "Error parsing transaction from hex";
}

// Print raw hex if requested // Print raw hex if requested
if (include_hex) if (include_hex)
{ {
Expand Down
2 changes: 1 addition & 1 deletion src/daemon/rpc_command_executor.h
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ class t_rpc_command_executor final {


bool print_block_by_height(uint64_t height, bool include_hex); bool print_block_by_height(uint64_t height, bool include_hex);


bool print_transaction(crypto::hash transaction_hash, bool include_hex, bool include_json); bool print_transaction(crypto::hash transaction_hash, bool include_metadata, bool include_hex, bool include_json);


bool is_key_image_spent(const crypto::key_image &ki); bool is_key_image_spent(const crypto::key_image &ki);


Expand Down

0 comments on commit 7ba3119

Please sign in to comment.