lightningd: don't complain about bad funding PSBT for elements.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
Rusty Russell 2021-03-16 10:28:58 +10:30
parent 22e1107581
commit b563cafd83
2 changed files with 11 additions and 8 deletions

View file

@ -1031,9 +1031,11 @@ static struct command_result *json_fundchannel_complete(struct command *cmd,
return command_fail(cmd, FUNDING_PSBT_INVALID, return command_fail(cmd, FUNDING_PSBT_INVALID,
"No output to open channel"); "No output to open channel");
if (!amount_sat_eq(amount_sat(funding_psbt->tx->outputs /* Can't really check amounts for elements. */
[*funding_txout_num].satoshi), if (!chainparams->is_elements
fc->funding)) && !amount_sat_eq(amount_sat(funding_psbt->tx->outputs
[*funding_txout_num].satoshi),
fc->funding))
return command_fail(cmd, FUNDING_PSBT_INVALID, return command_fail(cmd, FUNDING_PSBT_INVALID,
"Output to open channel is %"PRIu64"sat," "Output to open channel is %"PRIu64"sat,"
" should be %s", " should be %s",

View file

@ -1094,11 +1094,12 @@ def test_funding_external_wallet_corners(node_factory, bitcoind):
with pytest.raises(RpcError, match=r'Already funding channel'): with pytest.raises(RpcError, match=r'Already funding channel'):
l1.rpc.fundchannel(l2.info['id'], amount) l1.rpc.fundchannel(l2.info['id'], amount)
# Can't complete with incorrect amount. # Can't complete with incorrect amount (unchecked on Elements)
wrongamt = l1.rpc.txprepare([{start['funding_address']: amount - 1}]) if TEST_NETWORK == 'regtest':
with pytest.raises(RpcError, match=r'Output to open channel is .*, should be .*'): wrongamt = l1.rpc.txprepare([{start['funding_address']: amount - 1}])
l1.rpc.fundchannel_complete(l2.info['id'], wrongamt['psbt']) with pytest.raises(RpcError, match=r'Output to open channel is .*, should be .*'):
l1.rpc.txdiscard(wrongamt['txid']) l1.rpc.fundchannel_complete(l2.info['id'], wrongamt['psbt'])
l1.rpc.txdiscard(wrongamt['txid'])
# Can't complete with incorrect address. # Can't complete with incorrect address.
wrongaddr = l1.rpc.txprepare([{l1.rpc.newaddr()['bech32']: amount}]) wrongaddr = l1.rpc.txprepare([{l1.rpc.newaddr()['bech32']: amount}])