ttests: sweeping p2pk - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 170f41f50df31c29f2117f3d4742391e19575c8d DIR parent 73a3d473cc917111b27cf42beaa78358da2c9876 HTML Author: SomberNight <somber.night@protonmail.com> Date: Mon, 18 Jun 2018 20:06:17 +0200 ttests: sweeping p2pk Diffstat: M lib/tests/test_wallet_vertical.py | 25 ++++++++++++++++++++++++- M lib/transaction.py | 1 + 2 files changed, 25 insertions(+), 1 deletion(-) --- DIR diff --git a/lib/tests/test_wallet_vertical.py b/lib/tests/test_wallet_vertical.py t@@ -8,7 +8,7 @@ import lib from lib import storage, bitcoin, keystore, constants from lib.transaction import Transaction from lib.simple_config import SimpleConfig -from lib.wallet import TX_HEIGHT_UNCONFIRMED, TX_HEIGHT_UNCONF_PARENT +from lib.wallet import TX_HEIGHT_UNCONFIRMED, TX_HEIGHT_UNCONF_PARENT, sweep from lib.util import bfh, bh2u from plugins.trustedcoin import trustedcoin t@@ -948,6 +948,29 @@ class TestWalletSending(TestCaseForTestnet): wallet.receive_tx_callback(tx.txid(), tx, TX_HEIGHT_UNCONFIRMED) self.assertEqual((0, funding_output_value - 50000, 0), wallet.get_balance()) + @needs_test_with_all_ecc_implementations + def test_sweep_p2pk(self): + + class NetworkMock: + relay_fee = 1000 + def get_local_height(self): return 1325785 + def listunspent_for_scripthash(self, scripthash): + if scripthash == '460e4fb540b657d775d84ff4955c9b13bd954c2adc26a6b998331343f85b6a45': + return [{'tx_hash': 'ac24de8b58e826f60bd7b9ba31670bdfc3e8aedb2f28d0e91599d741569e3429', 'tx_pos': 1, 'height': 1325785, 'value': 1000000}] + else: + return [] + + privkeys = ['93NQ7CFbwTPyKDJLXe97jczw33fiLijam2SCZL3Uinz1NSbHrTu', ] + network = NetworkMock() + dest_addr = 'tb1q3ws2p0qjk5vrravv065xqlnkckvzcpclk79eu2' + tx = sweep(privkeys, network, config=None, recipient=dest_addr, fee=5000) + + tx_copy = Transaction(tx.serialize()) + self.assertEqual('010000000129349e5641d79915e9d0282fdbaee8c3df0b6731bab9d70bf626e8588bde24ac010000004847304402206bf0d0a93abae0d5873a62ebf277a5dd2f33837821e8b93e74d04e19d71b578002201a6d729bc159941ef5c4c9e5fe13ece9fc544351ba531b00f68ba549c8b38a9a01fdffffff01b82e0f00000000001600148ba0a0bc12b51831f58c7ea8607e76c5982c071fd93a1400', + str(tx_copy)) + self.assertEqual('7f827fc5256c274fd1094eb7e020c8ded0baf820356f61aa4f14a9093b0ea0ee', tx_copy.txid()) + self.assertEqual('7f827fc5256c274fd1094eb7e020c8ded0baf820356f61aa4f14a9093b0ea0ee', tx_copy.wtxid()) + class TestWalletOfflineSigning(TestCaseForTestnet): DIR diff --git a/lib/transaction.py b/lib/transaction.py t@@ -1137,6 +1137,7 @@ class Transaction: if type == TYPE_ADDRESS: addr = x elif type == TYPE_PUBKEY: + # TODO do we really want this conversion? it's not really that address after all addr = bitcoin.public_key_to_p2pkh(bfh(x)) else: addr = 'SCRIPT ' + x