From 8ca6cfc0575a306eb3f9d4eb1545e64271708171 Mon Sep 17 00:00:00 2001 From: undeath Date: Tue, 3 Jul 2018 15:00:34 +0200 Subject: [PATCH] make sure new addresses always get imported --- jmclient/jmclient/maker.py | 8 ++++++++ jmclient/jmclient/taker.py | 11 ++++++++++- jmclient/jmclient/taker_utils.py | 11 +++++++++++ jmclient/jmclient/yieldgenerator.py | 1 + 4 files changed, 30 insertions(+), 1 deletion(-) diff --git a/jmclient/jmclient/maker.py b/jmclient/jmclient/maker.py index 0ae3117..500a50b 100644 --- a/jmclient/jmclient/maker.py +++ b/jmclient/jmclient/maker.py @@ -216,3 +216,11 @@ class Maker(object): if len(oldorder_s) > 0: self.offerlist.remove(oldorder_s[0]) self.offerlist += to_announce + + def import_new_addresses(self, addr_list): + # FIXME: same code as in taker.py + bci = jm_single().bc_interface + if not hasattr(bci, 'import_addresses'): + return + assert hasattr(bci, 'get_wallet_name') + bci.import_addresses(addr_list, bci.get_wallet_name(self.wallet)) diff --git a/jmclient/jmclient/taker.py b/jmclient/jmclient/taker.py index 43e5295..a567645 100644 --- a/jmclient/jmclient/taker.py +++ b/jmclient/jmclient/taker.py @@ -4,7 +4,6 @@ from __future__ import print_function import base64 import pprint import random -from itertools import chain import btc from jmclient.configure import jm_single, get_p2pk_vbyte, get_p2sh_vbyte @@ -184,6 +183,7 @@ class Taker(object): jlog.info("Choosing a destination from mixdepth: " + str(next_mixdepth)) self.my_cj_addr = self.wallet.get_internal_addr(next_mixdepth) jlog.info("Chose destination address: " + self.my_cj_addr) + self.import_new_addresses([self.my_cj_addr]) self.outputs = [] self.cjfee_total = 0 self.maker_txfee_contributions = 0 @@ -268,6 +268,7 @@ class Taker(object): if self.cjamount != 0: try: self.my_change_addr = self.wallet.get_internal_addr(self.mixdepth) + self.import_new_addresses([self.my_change_addr]) except: self.taker_info_callback("ABORT", "Failed to get a change address") return False @@ -806,3 +807,11 @@ class Taker(object): waittime = self.schedule[self.schedule_index][4] self.on_finished_callback(True, fromtx=fromtx, waittime=waittime, txdetails=(txd, txid)) + + def import_new_addresses(self, addr_list): + # FIXME: same code as in maker.py + bci = jm_single().bc_interface + if not hasattr(bci, 'import_addresses'): + return + assert hasattr(bci, 'get_wallet_name') + bci.import_addresses(addr_list, bci.get_wallet_name(self.wallet)) diff --git a/jmclient/jmclient/taker_utils.py b/jmclient/jmclient/taker_utils.py index a91b108..32e8a8d 100644 --- a/jmclient/jmclient/taker_utils.py +++ b/jmclient/jmclient/taker_utils.py @@ -67,6 +67,7 @@ def direct_send(wallet, amount, mixdepth, destaddr, answeryes=False, changeval = total_inputs_val - fee_est - amount outs = [{"value": amount, "address": destaddr}] change_addr = wallet.get_internal_addr(mixdepth) + import_new_addresses(wallet, [change_addr]) outs.append({"value": changeval, "address": change_addr}) #Now ready to construct transaction @@ -104,6 +105,16 @@ def direct_send(wallet, amount, mixdepth, destaddr, answeryes=False, cb(successmsg) return txid + +def import_new_addresses(wallet, addr_list): + # FIXME: same code as in maker.py and taker.py + bci = jm_single().bc_interface + if not hasattr(bci, 'import_addresses'): + return + assert hasattr(bci, 'get_wallet_name') + bci.import_addresses(addr_list, bci.get_wallet_name(wallet)) + + def get_tumble_log(logsdir): tumble_log = logging.getLogger('tumbler') tumble_log.setLevel(logging.DEBUG) diff --git a/jmclient/jmclient/yieldgenerator.py b/jmclient/jmclient/yieldgenerator.py index 4fc89ad..e3152b6 100644 --- a/jmclient/jmclient/yieldgenerator.py +++ b/jmclient/jmclient/yieldgenerator.py @@ -132,6 +132,7 @@ class YieldGeneratorBasic(YieldGenerator): cj_addr = self.wallet.get_internal_addr((mixdepth + 1) % self.wallet.max_mix_depth) change_addr = self.wallet.get_internal_addr(mixdepth) + self.import_new_addresses([cj_addr, change_addr]) utxos = self.wallet.select_utxos(mixdepth, total_amount) my_total_in = sum([va['value'] for va in utxos.values()])