diff --git a/jmclient/jmclient/wallet_utils.py b/jmclient/jmclient/wallet_utils.py index 7b9f2c7..296e935 100644 --- a/jmclient/jmclient/wallet_utils.py +++ b/jmclient/jmclient/wallet_utils.py @@ -775,7 +775,7 @@ def wallet_fetch_history(wallet, options): def print_row(index, time, tx_type, amount, delta, balance, cj_n, total_fees, utxo_count, mixdepth_src, mixdepth_dst, txid): data = [index, datetime.fromtimestamp(time).strftime("%Y-%m-%d %H:%M"), - tx_type, btc.sat_to_str(amount), btc.sat_to_str_p(delta), + tx_type, btc.sat_to_str(abs(amount)), btc.sat_to_str_p(delta), btc.sat_to_str(balance), skip_n1(cj_n), sat_to_str_na(total_fees), '% 3d' % utxo_count, skip_n1(mixdepth_src), skip_n1(mixdepth_dst)] if options.verbosity % 2 == 0: data += [txid] @@ -787,7 +787,7 @@ def wallet_fetch_history(wallet, options): 'utxo-count', 'mixdepth-from', 'mixdepth-to'] if options.verbosity % 2 == 0: field_names += ['txid'] if options.csv: - jmprint('Bumping verbosity level to 4 due to --csv flag', "debug") + #jmprint('Bumping verbosity level to 4 due to --csv flag', "debug") options.verbosity = 4 if options.verbosity > 0: jmprint(s().join(field_names), "info") if options.verbosity <= 2: cj_batch = [0]*8 + [[]]*2 @@ -888,22 +888,33 @@ def wallet_fetch_history(wallet, options): fees = 0 delta_balance = our_output_value - our_input_value mixdepth_src = wallet.get_script_mixdepth(list(our_input_scripts)[0]) - elif len(our_input_scripts) > 0 and len(our_output_scripts) == 2: - #payment to self + elif len(our_input_scripts) > 0 and len(our_output_scripts) == 2 and is_coinjoin: out_value = sum([output_script_values[a] for a in our_output_scripts]) - if not is_coinjoin: - jmprint('this is wrong TODO handle non-coinjoin internal', "warning") - tx_type = 'cj internal' amount = cj_amount delta_balance = out_value - our_input_value mixdepth_src = wallet.get_script_mixdepth(list(our_input_scripts)[0]) + tx_type = 'cj internal' cj_script = list(set([a for a, v in output_script_values.items() if v == cj_amount]).intersection(our_output_scripts))[0] mixdepth_dst = wallet.get_script_mixdepth(cj_script) + elif len(our_input_scripts) > 0 and len(our_output_scripts) == len(output_script_values): + out_value = sum([output_script_values[a] for a in our_output_scripts]) + amount = sum([output_script_values[a] for a in our_output_scripts]) + delta_balance = out_value - our_input_value + mixdepth_src = wallet.get_script_mixdepth(list(our_input_scripts)[0]) + tx_type = 'internal ' + mixdepth_dst = wallet.get_script_mixdepth(list(our_output_scripts)[0]) else: - tx_type = 'unknown type' - jmprint('our utxos: ' + str(len(our_input_scripts)) \ - + ' in, ' + str(len(our_output_scripts)) + ' out') + tx_type = 'unknown ' + out_value = sum([output_script_values[a] for a in our_output_scripts]) + amount = out_value + delta_balance = out_value - our_input_value + mixdepth_src = wallet.get_script_mixdepth( + list(our_input_scripts)[0]) + mixdepth_dst = wallet.get_script_mixdepth( + list(our_output_scripts)[0]) + #jmprint('our utxos: ' + str(len(our_input_scripts)) \ + # + ' in, ' + str(len(our_output_scripts)) + ' out') if is_confirmed: balance += delta_balance @@ -925,7 +936,7 @@ def wallet_fetch_history(wallet, options): cj_batch[7] += utxo_count cj_batch[8] += [mixdepth_src] cj_batch[9] += [mixdepth_dst] - elif tx_type != 'unknown type': + else: if n > 0: # print the previously-accumulated batch print_row('N='+"%2d"%n, cj_batch[1]/n, 'cj batch ', @@ -937,8 +948,7 @@ def wallet_fetch_history(wallet, options): print_row(index, blocktime, tx_type, amount, delta_balance, balance, cj_n, fees, utxo_count, mixdepth_src, mixdepth_dst, tx['txid']) - elif options.verbosity >= 5 or \ - (options.verbosity >= 3 and tx_type != 'unknown type'): + elif options.verbosity >= 3: print_row(index, blocktime, tx_type, amount, delta_balance, balance, cj_n, fees, utxo_count, mixdepth_src, mixdepth_dst, tx['txid']) @@ -959,6 +969,9 @@ def wallet_fetch_history(wallet, options): cj_batch[3], cj_batch[4], cj_batch[5]/n, cj_batch[6], cj_batch[7]/n, min(cj_batch[8]), max(cj_batch[9]), '...') + # don't display summaries if csv export + if options.csv: + return '' bestblockhash = jm_single().bc_interface.get_best_block_hash() now = jm_single().bc_interface.get_block_time(bestblockhash)