diff --git a/lnwallet/btcwallet/btcwallet.go b/lnwallet/btcwallet/btcwallet.go index b52ba488..97211533 100644 --- a/lnwallet/btcwallet/btcwallet.go +++ b/lnwallet/btcwallet/btcwallet.go @@ -217,7 +217,7 @@ func (b *BtcWallet) Stop() error { func (b *BtcWallet) ConfirmedBalance(confs int32) (btcutil.Amount, error) { var balance btcutil.Amount - witnessOutputs, err := b.ListUnspentWitness(confs) + witnessOutputs, err := b.ListUnspentWitness(confs, math.MaxInt32) if err != nil { return 0, err } @@ -299,9 +299,9 @@ func (b *BtcWallet) UnlockOutpoint(o wire.OutPoint) { // controls which pay to witness programs either directly or indirectly. // // This is a part of the WalletController interface. -func (b *BtcWallet) ListUnspentWitness(minConfs int32) ([]*lnwallet.Utxo, error) { +func (b *BtcWallet) ListUnspentWitness(minConfs, maxConfs int32) ( + []*lnwallet.Utxo, error) { // First, grab all the unfiltered currently unspent outputs. - maxConfs := int32(math.MaxInt32) unspentOutputs, err := b.wallet.ListUnspent(minConfs, maxConfs, nil) if err != nil { return nil, err diff --git a/lnwallet/interface.go b/lnwallet/interface.go index 81bff102..7d9ea3f0 100644 --- a/lnwallet/interface.go +++ b/lnwallet/interface.go @@ -160,11 +160,13 @@ type WalletController interface { feeRate SatPerKWeight) (*chainhash.Hash, error) // ListUnspentWitness returns all unspent outputs which are version 0 - // witness programs. The 'confirms' parameter indicates the minimum - // number of confirmations an output needs in order to be returned by - // this method. Passing -1 as 'confirms' indicates that even - // unconfirmed outputs should be returned. - ListUnspentWitness(confirms int32) ([]*Utxo, error) + // witness programs. The 'minconfirms' and 'maxconfirms' parameters + // indicate the minimum and maximum number of confirmations an output + // needs in order to be returned by this method. Passing -1 as + // 'minconfirms' indicates that even unconfirmed outputs should be + // returned. Using MaxInt32 as 'maxconfirms' implies returning all + // outputs with at least 'minconfirms'. + ListUnspentWitness(minconfirms, maxconfirms int32) ([]*Utxo, error) // ListTransactionDetails returns a list of all transactions which are // relevant to the wallet. diff --git a/lnwallet/wallet.go b/lnwallet/wallet.go index c0218957..28320d5e 100644 --- a/lnwallet/wallet.go +++ b/lnwallet/wallet.go @@ -5,6 +5,7 @@ import ( "crypto/sha256" "errors" "fmt" + "math" "net" "sync" "sync/atomic" @@ -1276,7 +1277,7 @@ func (l *LightningWallet) selectCoinsAndChange(feeRate SatPerKWeight, // Find all unlocked unspent witness outputs that satisfy the minimum // number of confirmations required. - coins, err := l.ListUnspentWitness(minConfs) + coins, err := l.ListUnspentWitness(minConfs, math.MaxInt32) if err != nil { return err } diff --git a/mock.go b/mock.go index 6fd7e9f3..51f10e46 100644 --- a/mock.go +++ b/mock.go @@ -234,7 +234,8 @@ func (*mockWalletController) SendOutputs(outputs []*wire.TxOut, // ListUnspentWitness is called by the wallet when doing coin selection. We just // need one unspent for the funding transaction. -func (m *mockWalletController) ListUnspentWitness(confirms int32) ([]*lnwallet.Utxo, error) { +func (m *mockWalletController) ListUnspentWitness(minconfirms, + maxconfirms int32) ([]*lnwallet.Utxo, error) { utxo := &lnwallet.Utxo{ AddressType: lnwallet.WitnessPubKey, Value: btcutil.Amount(10 * btcutil.SatoshiPerBitcoin),