Skip to content

Commit

Permalink
dual-fund: Fail if you try to buy a liquidity ad w/o dualfunding on
Browse files Browse the repository at this point in the history
Fixes #5271

In-Collaboration-With: Base58 'n Coding Seminar Participants

Changelog-Changed: `fundchannel` now errors if you try to buy a liquidity ad but dont' have `experimental-dual-fund` enabled
  • Loading branch information
niftynei committed Jul 8, 2022
1 parent 0374fc1 commit 7b3f12e
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 1 deletion.
10 changes: 9 additions & 1 deletion plugins/spender/multifundchannel.c
Original file line number Diff line number Diff line change
Expand Up @@ -1616,8 +1616,16 @@ connect_ok(struct command *cmd,
dest->their_features,
OPT_DUAL_FUND))
dest->protocol = OPEN_CHANNEL;
else if (!amount_sat_zero(dest->request_amt) || !(!dest->rates)) {
/* Return an error */
fail_destination_msg(dest, FUNDING_V2_NOT_SUPPORTED,
"Tried to buy a liquidity ad"
" but we(?) don't have"
" experimental-dual-fund"
" enabled");
} else
dest->state = MULTIFUNDCHANNEL_CONNECTED;

dest->state = MULTIFUNDCHANNEL_CONNECTED;
return connect_done(dest);
}

Expand Down
19 changes: 19 additions & 0 deletions tests/test_opening.py
Original file line number Diff line number Diff line change
Expand Up @@ -1391,3 +1391,22 @@ def test_zeroconf_forward(node_factory, bitcoind):
wait_for(lambda: len(l3.rpc.listchannels()['channels']) == 4)
inv = l1.rpc.invoice(42, 'back1', 'desc')['bolt11']
l3.rpc.pay(inv)


@pytest.mark.openchannel('v1')
def test_buy_liquidity_ad_no_v2(node_factory, bitcoind):
""" Test that you can't actually request amt for a
node that doesn' support v2 opens """

l1, l2, = node_factory.get_nodes(2)
amount = 500000
feerate = 2000

l1.fundwallet(amount * 100)
l1.rpc.connect(l2.info['id'], 'localhost', l2.port)

# l1 leases a channel from l2
with pytest.raises(RpcError, match=r"Tried to buy a liquidity ad but we[(][?][)] don't have experimental-dual-fund enabled"):
l1.rpc.fundchannel(l2.info['id'], amount, request_amt=amount,
feerate='{}perkw'.format(feerate),
compact_lease='029a002d000000004b2003e8')

0 comments on commit 7b3f12e

Please sign in to comment.