electrum

Electrum Bitcoin wallet
git clone https://git.parazyd.org/electrum
Log | Files | Refs | Submodules

commit 15ab48aaa8b291777086c95658f4808443c8a289
parent 3dabb94046cd94e145ee19f38cf6a0b36a6edcf9
Author: ThomasV <thomasv@electrum.org>
Date:   Thu,  5 Oct 2017 20:08:16 +0200

fix sweep

Diffstat:
Mlib/bitcoin.py | 2+-
Mlib/commands.py | 2+-
Mlib/wallet.py | 9+++++----
3 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/lib/bitcoin.py b/lib/bitcoin.py @@ -509,7 +509,7 @@ def deserialize_privkey(key): compressed = len(vch) == 34 return txin_type, vch[1:33], compressed else: - return False + raise BaseException("cannot deserialize", key) def regenerate_key(pk): assert len(pk) == 32 diff --git a/lib/commands.py b/lib/commands.py @@ -388,7 +388,7 @@ class Commands: privkey to a destination address. The transaction is not broadcasted.""" tx_fee = satoshis(tx_fee) - privkeys = privkey if type(privkey) is list else [privkey] + privkeys = privkey.split() self.nocheck = nocheck dest = self._resolver(destination) tx = self.wallet.sweep(privkeys, self.network, self.config, dest, tx_fee, imax) diff --git a/lib/wallet.py b/lib/wallet.py @@ -874,15 +874,16 @@ class Abstract_Wallet(PrintError): def sweep(self, privkeys, network, config, recipient, fee=None, imax=100): inputs = [] keypairs = {} - for privkey in privkeys: - pubkey = public_key_from_private_key(privkey) - address = address_from_private_key(privkey) + for sec in privkeys: + txin_type, privkey, compressed = bitcoin.deserialize_privkey(sec) + pubkey = bitcoin.public_key_from_private_key(privkey, compressed) + address = bitcoin.pubkey_to_address(txin_type, pubkey) u = network.synchronous_get(('blockchain.address.listunspent', [address])) pay_script = bitcoin.address_to_script(address) for item in u: if len(inputs) >= imax: break - item['type'] = 'p2pkh' + item['type'] = txin_type item['scriptPubKey'] = pay_script item['redeemPubkey'] = pubkey item['address'] = address