tsub swaps: - fix invoice expiration - use p2wsh - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit b26ad81e69b23cadebd9e2efb8d2861927d94543 DIR parent 7d2979d776d324f7e7d061c8c4b361f74c96dcb5 HTML Author: ThomasV <thomasv@electrum.org> Date: Sat, 23 May 2020 13:32:28 +0200 sub swaps: - fix invoice expiration - use p2wsh Diffstat: M electrum/submarine_swaps.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) --- DIR diff --git a/electrum/submarine_swaps.py b/electrum/submarine_swaps.py t@@ -78,18 +78,17 @@ async def _claim_swap(lnworker, lockup_address, redeem_script, preimage, privkey lnwatcher = lnworker.lnwatcher utxos = lnwatcher.get_addr_utxo(lockup_address) delta = lnwatcher.network.get_local_height() - locktime + if is_refund and delta < 0: + print('height not reached for refund', delta, locktime) + return for txin in list(utxos.values()): fee = lnwatcher.config.estimate_fee(136, allow_fallback_to_static_rates=True) amount_sat = txin._trusted_value_sats - fee if amount_sat < dust_threshold(): - print('dust') + print('txo lower than dust threshold') continue tx = create_claim_tx(txin, redeem_script, preimage, privkey, address, amount_sat, locktime, is_refund) - if is_refund and delta < 0: - print('height not reached for refund', delta, locktime) - print(tx.serialize()) - else: - await lnwatcher.network.broadcast_transaction(tx) + await lnwatcher.network.broadcast_transaction(tx) @log_exceptions t@@ -130,7 +129,7 @@ async def normal_swap(amount_sat, wallet: 'Abstract_Wallet', network: 'Network', lnworker = wallet.lnworker privkey = os.urandom(32) pubkey = ECPrivkey(privkey).get_public_key_bytes(compressed=True) - key = await lnworker._add_request_coro(amount_sat, 'swap', expiry=3600) + key = await lnworker._add_request_coro(amount_sat, 'swap', expiry=3600*24) request = wallet.get_request(key) invoice = request['invoice'] lnaddr = lnworker._check_invoice(invoice, amount_sat) t@@ -160,8 +159,7 @@ async def normal_swap(amount_sat, wallet: 'Abstract_Wallet', network: 'Network', redeem_script = bytes.fromhex(redeem_script) parsed_script = [x for x in script_GetOp(redeem_script)] assert match_script_against_template(redeem_script, WITNESS_TEMPLATE_SWAP) - #assert script_to_p2wsh(redeem_script.hex()) == lockup_address - assert redeem_script_to_address('p2wsh-p2sh', redeem_script.hex()) == lockup_address + assert script_to_p2wsh(redeem_script.hex()) == lockup_address assert hash_160(preimage) == parsed_script[1][1] assert pubkey == parsed_script[9][1] # verify that we will have enought time to get our tx confirmed