mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-20 23:54:22 +01:00
pytest: neaten fund_channel scid extraction.
We used to have a bug where decoderawtransaction would fail, fixed in
fedcfd661 (pytest: hand 'True' to decoderawtransaction so it doesn't
get confused.).
So we can remove the fallback decode, and might as well extract the
ugliness into a helper function.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
committed by
neil saitug
parent
a00c357854
commit
4c57bf002e
@@ -83,6 +83,18 @@ def wait_channel_quiescent(n1, n2):
|
|||||||
wait_for(lambda: only_one(only_one(n2.rpc.listpeers(n1.info['id'])['peers'])['channels'])['htlcs'] == [])
|
wait_for(lambda: only_one(only_one(n2.rpc.listpeers(n1.info['id'])['peers'])['channels'])['htlcs'] == [])
|
||||||
|
|
||||||
|
|
||||||
|
def get_tx_p2wsh_outnum(bitcoind, tx, amount):
|
||||||
|
"""Get output number of this tx which is p2wsh of amount"""
|
||||||
|
decoded = bitcoind.rpc.decoderawtransaction(tx, True)
|
||||||
|
|
||||||
|
for out in decoded['vout']:
|
||||||
|
if out['scriptPubKey']['type'] == 'witness_v0_scripthash':
|
||||||
|
if out['value'] == Decimal(amount) / 10**8:
|
||||||
|
return out['n']
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
class TailableProc(object):
|
class TailableProc(object):
|
||||||
"""A monitorable process that we can start, stop and tail.
|
"""A monitorable process that we can start, stop and tail.
|
||||||
|
|
||||||
@@ -519,19 +531,8 @@ class LightningNode(object):
|
|||||||
self.bitcoin.generate_block(1)
|
self.bitcoin.generate_block(1)
|
||||||
|
|
||||||
# Hacky way to find our output.
|
# Hacky way to find our output.
|
||||||
scid = None
|
scid = "{}x1x{}".format(self.bitcoin.rpc.getblockcount(),
|
||||||
decoded = self.bitcoin.rpc.decoderawtransaction(tx, True)
|
get_tx_p2wsh_outnum(self.bitcoin, tx, amount))
|
||||||
|
|
||||||
for out in decoded['vout']:
|
|
||||||
if out['scriptPubKey']['type'] == 'witness_v0_scripthash':
|
|
||||||
if out['value'] == Decimal(amount) / 10**8:
|
|
||||||
scid = "{}x1x{}".format(self.bitcoin.rpc.getblockcount(), out['n'])
|
|
||||||
break
|
|
||||||
|
|
||||||
if not scid:
|
|
||||||
# Intermittent decoding failure. See if it decodes badly twice?
|
|
||||||
decoded2 = self.bitcoin.rpc.decoderawtransaction(tx)
|
|
||||||
raise ValueError("Can't find {} payment in {} (1={} 2={})".format(amount, tx, decoded, decoded2))
|
|
||||||
|
|
||||||
if wait_for_active:
|
if wait_for_active:
|
||||||
# We wait until gossipd sees both local updates, as well as status NORMAL,
|
# We wait until gossipd sees both local updates, as well as status NORMAL,
|
||||||
|
|||||||
Reference in New Issue
Block a user