package itest import ( "github.com/btcsuite/btcd/btcutil" "github.com/lightningnetwork/lnd/funding" "github.com/lightningnetwork/lnd/lntest" "github.com/lightningnetwork/lnd/lnwallet" ) // testWumboChannels tests that only a node that signals wumbo channel // acceptances will allow a wumbo channel to be created. Additionally, if a // node is running with mini channels only enabled, then they should reject any // inbound wumbo channel requests. func testWumboChannels(ht *lntest.HarnessTest) { // With all the channel types exercised, we'll now make sure the wumbo // signalling support works properly. // // We'll make two new nodes, with one of them signalling support for // wumbo channels while the other doesn't. wumboNode := ht.NewNode("wumbo", []string{"--protocol.wumbo-channels"}) miniNode := ht.NewNode("mini", nil) // We'll send coins to the wumbo node, as it'll be the one imitating // the channel funding. ht.FundCoins(btcutil.SatoshiPerBitcoin, wumboNode) // Next we'll connect both nodes, then attempt to make a wumbo channel // funding request to the mini node we created above. The wumbo request // should fail as the node isn't advertising wumbo channels. ht.EnsureConnected(wumboNode, miniNode) chanAmt := funding.MaxBtcFundingAmount + 1 // The test should indicate a failure due to the channel being too // large. ht.OpenChannelAssertErr( wumboNode, miniNode, lntest.OpenChannelParams{Amt: chanAmt}, lnwallet.ErrChanTooLarge(chanAmt, funding.MaxBtcFundingAmount), ) // We'll now make another wumbo node to accept our wumbo channel // funding. wumboNode2 := ht.NewNode( "wumbo2", []string{"--protocol.wumbo-channels"}, ) // Creating a wumbo channel between these two nodes should succeed. ht.EnsureConnected(wumboNode, wumboNode2) chanPoint := ht.OpenChannel( wumboNode, wumboNode2, lntest.OpenChannelParams{Amt: chanAmt}, ) ht.CloseChannel(wumboNode, chanPoint) }