@ -1777,7 +1777,7 @@ bool simple_wallet::show_incoming_transfers(const std::vector<std::string>& args
}
std : : string verbose_string ;
if ( verbose )
verbose_string = ( boost : : format ( " %68s%68s " ) % td . get_public_key ( ) % td . m_key_image ) . str ( ) ;
verbose_string = ( boost : : format ( " %68s%68s " ) % td . get_public_key ( ) % ( td . m_key_image _known ? epee : : string_tools : : pod_to_hex ( td . m_key_image ) : std : : string ( ' ? ' , 64 ) ) ) . str ( ) ;
message_writer ( td . m_spent ? epee : : log_space : : console_color_magenta : epee : : log_space : : console_color_green , false ) < <
boost : : format ( " %21s%8s%12s%8s%16u%68s%s " ) %
print_money ( td . amount ( ) ) %
@ -2774,7 +2774,7 @@ bool simple_wallet::sweep_all(const std::vector<std::string> &args_)
return true ;
}
//----------------------------------------------------------------------------------------------------
bool simple_wallet : : accept_loaded_tx ( const std : : function < size_t ( ) > get_num_txes , const std : : function < const tools : : wallet2 : : tx_construction_data & ( size_t ) > & get_tx )
bool simple_wallet : : accept_loaded_tx ( const std : : function < size_t ( ) > get_num_txes , const std : : function < const tools : : wallet2 : : tx_construction_data & ( size_t ) > & get_tx , const std : : string & extra_message )
{
// gather info to ask the user
uint64_t amount = 0 , amount_to_dests = 0 , change = 0 ;
@ -2847,19 +2847,25 @@ bool simple_wallet::accept_loaded_tx(const std::function<size_t()> get_num_txes,
change_string + = tr ( " no change " ) ;
uint64_t fee = amount - amount_to_dests ;
std : : string prompt_str = ( boost : : format ( tr ( " Loaded %lu transactions, for %s, fee %s, %s, %s, with min mixin %lu. Is this okay? (Y/Yes/N/No)" ) ) % ( unsigned long ) get_num_txes ( ) % print_money ( amount ) % print_money ( fee ) % dest_string % change_string % ( unsigned long ) min_mixin ) . str ( ) ;
std : : string prompt_str = ( boost : : format ( tr ( " Loaded %lu transactions, for %s, fee %s, %s, %s, with min mixin %lu. %s Is this okay? (Y/Yes/N/No)" ) ) % ( unsigned long ) get_num_txes ( ) % print_money ( amount ) % print_money ( fee ) % dest_string % change_string % ( unsigned long ) min_mixin % extra_message ) . str ( ) ;
std : : string accepted = command_line : : input_line ( prompt_str ) ;
return is_it_true ( accepted ) ;
}
//----------------------------------------------------------------------------------------------------
bool simple_wallet : : accept_loaded_tx ( const tools : : wallet2 : : unsigned_tx_set & txs )
{
return accept_loaded_tx ( [ & txs ] ( ) { return txs . txes . size ( ) ; } , [ & txs ] ( size_t n ) - > const tools : : wallet2 : : tx_construction_data & { return txs . txes [ n ] ; } ) ;
std : : string extra_message ;
if ( ! txs . transfers . empty ( ) )
extra_message = ( boost : : format ( " %u outputs to import. " ) % ( unsigned ) txs . transfers . size ( ) ) . str ( ) ;
return accept_loaded_tx ( [ & txs ] ( ) { return txs . txes . size ( ) ; } , [ & txs ] ( size_t n ) - > const tools : : wallet2 : : tx_construction_data & { return txs . txes [ n ] ; } , extra_message ) ;
}
//----------------------------------------------------------------------------------------------------
bool simple_wallet : : accept_loaded_tx ( const tools : : wallet2 : : signed_tx_set & txs )
{
return accept_loaded_tx ( [ & txs ] ( ) { return txs . ptx . size ( ) ; } , [ & txs ] ( size_t n ) - > const tools : : wallet2 : : tx_construction_data & { return txs . ptx [ n ] . construction_data ; } ) ;
std : : string extra_message ;
if ( ! txs . key_images . empty ( ) )
extra_message = ( boost : : format ( " %u key images to import. " ) % ( unsigned ) txs . key_images . size ( ) ) . str ( ) ;
return accept_loaded_tx ( [ & txs ] ( ) { return txs . ptx . size ( ) ; } , [ & txs ] ( size_t n ) - > const tools : : wallet2 : : tx_construction_data & { return txs . ptx [ n ] . construction_data ; } , extra_message ) ;
}
//----------------------------------------------------------------------------------------------------
bool simple_wallet : : sign_transfer ( const std : : vector < std : : string > & args_ )
@ -2870,9 +2876,10 @@ bool simple_wallet::sign_transfer(const std::vector<std::string> &args_)
return true ;
}
std : : vector < tools : : wallet2 : : pending_tx > ptx ;
try
{
bool r = m_wallet - > sign_tx ( " unsigned_monero_tx " , " signed_monero_tx " , [ & ] ( const tools : : wallet2 : : unsigned_tx_set & tx ) { return accept_loaded_tx ( tx ) ; } ) ;
bool r = m_wallet - > sign_tx ( " unsigned_monero_tx " , " signed_monero_tx " , ptx , [ & ] ( const tools : : wallet2 : : unsigned_tx_set & tx ) { return accept_loaded_tx ( tx ) ; } ) ;
if ( ! r )
{
fail_msg_writer ( ) < < tr ( " Failed to sign transaction " ) ;
@ -2885,7 +2892,14 @@ bool simple_wallet::sign_transfer(const std::vector<std::string> &args_)
return true ;
}
success_msg_writer ( true ) < < tr ( " Transaction successfully signed to file: " ) < < " signed_monero_tx " ;
std : : string txids_as_text ;
for ( const auto & t : ptx )
{
if ( ! txids_as_text . empty ( ) )
txids_as_text + = ( " , " ) ;
txids_as_text + = epee : : string_tools : : pod_to_hex ( get_transaction_hash ( t . tx ) ) ;
}
success_msg_writer ( true ) < < tr ( " Transaction successfully signed to file " ) < < " signed_monero_tx " < < " , txid " < < txids_as_text ;
return true ;
}
//----------------------------------------------------------------------------------------------------