diff options
author | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2018-01-28 15:22:03 +0000 |
---|---|---|
committer | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2018-01-28 15:23:05 +0000 |
commit | 30ce8c5926818f9d113de11a04cb10c4ff3335cc (patch) | |
tree | 67e40600cd2e588a44f6ed21defbba3400e9d37a /src/debug_utilities | |
parent | Merge pull request #3188 (diff) | |
download | monero-30ce8c5926818f9d113de11a04cb10c4ff3335cc.tar.xz |
cn_deserialize: check for raw tx_extra
Diffstat (limited to 'src/debug_utilities')
-rw-r--r-- | src/debug_utilities/cn_deserialize.cpp | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/src/debug_utilities/cn_deserialize.cpp b/src/debug_utilities/cn_deserialize.cpp index 4f274a66e..dfbd3b864 100644 --- a/src/debug_utilities/cn_deserialize.cpp +++ b/src/debug_utilities/cn_deserialize.cpp @@ -41,6 +41,22 @@ using namespace epee; using namespace cryptonote; +static void print_extra_fields(const std::vector<cryptonote::tx_extra_field> &fields) +{ + std::cout << "tx_extra has " << fields.size() << " field(s)" << std::endl; + for (size_t n = 0; n < fields.size(); ++n) + { + std::cout << "field " << n << ": "; + if (typeid(cryptonote::tx_extra_padding) == fields[n].type()) std::cout << "extra padding: " << boost::get<cryptonote::tx_extra_padding>(fields[n]).size << " bytes"; + else if (typeid(cryptonote::tx_extra_pub_key) == fields[n].type()) std::cout << "extra pub key: " << boost::get<cryptonote::tx_extra_pub_key>(fields[n]).pub_key; + else if (typeid(cryptonote::tx_extra_nonce) == fields[n].type()) std::cout << "extra nonce: " << epee::string_tools::buff_to_hex_nodelimer(boost::get<cryptonote::tx_extra_nonce>(fields[n]).nonce); + else if (typeid(cryptonote::tx_extra_merge_mining_tag) == fields[n].type()) std::cout << "extra merge mining tag: depth " << boost::get<cryptonote::tx_extra_merge_mining_tag>(fields[n]).depth << ", merkle root " << boost::get<cryptonote::tx_extra_merge_mining_tag>(fields[n]).merkle_root; + else if (typeid(cryptonote::tx_extra_mysterious_minergate) == fields[n].type()) std::cout << "extra minergate custom: " << epee::string_tools::buff_to_hex_nodelimer(boost::get<cryptonote::tx_extra_mysterious_minergate>(fields[n]).data); + else std::cout << "unknown"; + std::cout << std::endl; + } +} + int main(int argc, char* argv[]) { uint32_t log_level = 0; @@ -160,24 +176,18 @@ int main(int argc, char* argv[]) if (!fields.empty()) { - std::cout << "tx_extra has " << fields.size() << " field(s)" << std::endl; - for (size_t n = 0; n < fields.size(); ++n) - { - std::cout << "field " << n << ": "; - if (typeid(cryptonote::tx_extra_padding) == fields[n].type()) std::cout << "extra padding: " << boost::get<cryptonote::tx_extra_padding>(fields[n]).size << " bytes"; - else if (typeid(cryptonote::tx_extra_pub_key) == fields[n].type()) std::cout << "extra pub key: " << boost::get<cryptonote::tx_extra_pub_key>(fields[n]).pub_key; - else if (typeid(cryptonote::tx_extra_nonce) == fields[n].type()) std::cout << "extra nonce: " << epee::string_tools::buff_to_hex_nodelimer(boost::get<cryptonote::tx_extra_nonce>(fields[n]).nonce); - else if (typeid(cryptonote::tx_extra_merge_mining_tag) == fields[n].type()) std::cout << "extra merge mining tag: depth " << boost::get<cryptonote::tx_extra_merge_mining_tag>(fields[n]).depth << ", merkle root " << boost::get<cryptonote::tx_extra_merge_mining_tag>(fields[n]).merkle_root; - else if (typeid(cryptonote::tx_extra_mysterious_minergate) == fields[n].type()) std::cout << "extra minergate custom: " << epee::string_tools::buff_to_hex_nodelimer(boost::get<cryptonote::tx_extra_mysterious_minergate>(fields[n]).data); - else std::cout << "unknown"; - std::cout << std::endl; - } + print_extra_fields(fields); } else { std::cout << "No fields were found in tx_extra" << std::endl; } } + else if (cryptonote::parse_tx_extra(std::vector<uint8_t>(blob.begin(), blob.end()), fields) && !fields.empty()) + { + std::cout << "Parsed tx_extra:" << std::endl; + print_extra_fields(fields); + } else { std::cerr << "Not a recognized CN type" << std::endl; |