@ -43,6 +43,15 @@ using namespace epee;
using namespace cryptonote ;
static std : : string extra_nonce_to_string ( const cryptonote : : tx_extra_nonce & extra_nonce )
{
if ( extra_nonce . nonce . size ( ) = = 9 & & extra_nonce . nonce [ 0 ] = = TX_EXTRA_NONCE_ENCRYPTED_PAYMENT_ID )
return " encrypted payment ID: " + epee : : string_tools : : buff_to_hex_nodelimer ( extra_nonce . nonce . substr ( 1 ) ) ;
if ( extra_nonce . nonce . size ( ) = = 33 & & extra_nonce . nonce [ 0 ] = = TX_EXTRA_NONCE_PAYMENT_ID )
return " plaintext payment ID: " + epee : : string_tools : : buff_to_hex_nodelimer ( extra_nonce . nonce . substr ( 1 ) ) ;
return epee : : string_tools : : buff_to_hex_nodelimer ( extra_nonce . nonce ) ;
}
static void print_extra_fields ( const std : : vector < cryptonote : : tx_extra_field > & fields )
{
std : : cout < < " tx_extra has " < < fields . size ( ) < < " field(s) " < < std : : endl ;
@ -51,7 +60,7 @@ static void print_extra_fields(const std::vector<cryptonote::tx_extra_field> &fi
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: " < < e pee: : string_tools : : buff_to_hex_nodelimer ( boost : : get < cryptonote : : tx_extra_nonce > ( fields [ n ] ) . nonce ) ;
else if ( typeid ( cryptonote : : tx_extra_nonce ) = = fields [ n ] . type ( ) ) std : : cout < < " extra nonce: " < < e xtra_nonce_to_string ( boost : : get < cryptonote : : tx_extra_nonce > ( fields [ n ] ) ) ;
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_additional_pub_keys ) = = fields [ n ] . type ( ) ) std : : cout < < " additional tx pubkeys: " < < boost : : join ( boost : : get < cryptonote : : tx_extra_additional_pub_keys > ( fields [ n ] ) . data | boost : : adaptors : : transformed ( [ ] ( const crypto : : public_key & key ) { return epee : : string_tools : : pod_to_hex ( key ) ; } ) , " , " ) ;
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 ) ;
@ -168,9 +177,12 @@ int main(int argc, char* argv[])
std : : cout < < " Parsed block: " < < std : : endl ;
std : : cout < < cryptonote : : obj_to_json_str ( block ) < < std : : endl ;
}
else if ( cryptonote : : parse_and_validate_tx_from_blob ( blob , tx ) )
else if ( cryptonote : : parse_and_validate_tx_from_blob ( blob , tx ) | | cryptonote : : parse_and_validate_tx_base_from_blob ( blob , tx ) )
{
std : : cout < < " Parsed transaction: " < < std : : endl ;
if ( tx . pruned )
std : : cout < < " Parsed pruned transaction: " < < std : : endl ;
else
std : : cout < < " Parsed transaction: " < < std : : endl ;
std : : cout < < cryptonote : : obj_to_json_str ( tx ) < < std : : endl ;
bool parsed = cryptonote : : parse_tx_extra ( tx . extra , fields ) ;