mirror of
https://github.com/lightningnetwork/lnd.git
synced 2024-11-19 18:10:34 +01:00
fdcd726f9a
This commit updates call-sites to use the proper dust limits for various script types. This also updates the default dust limit used in the funding flow to be 354 satoshis instead of 573 satoshis.
51 lines
1.4 KiB
Go
51 lines
1.4 KiB
Go
package lnwallet
|
|
|
|
import (
|
|
"github.com/btcsuite/btcd/mempool"
|
|
"github.com/btcsuite/btcd/wire"
|
|
"github.com/btcsuite/btcutil"
|
|
"github.com/lightningnetwork/lnd/input"
|
|
)
|
|
|
|
// DustLimitForSize retrieves the dust limit for a given pkscript size. Given
|
|
// the size, it automatically determines whether the script is a witness script
|
|
// or not. It calls btcd's GetDustThreshold method under the hood. It must be
|
|
// called with a proper size parameter or else a panic occurs.
|
|
func DustLimitForSize(scriptSize int) btcutil.Amount {
|
|
var (
|
|
dustlimit btcutil.Amount
|
|
pkscript []byte
|
|
)
|
|
|
|
// With the size of the script, determine which type of pkscript to
|
|
// create. This will be used in the call to GetDustThreshold. We pass
|
|
// in an empty byte slice since the contents of the script itself don't
|
|
// matter.
|
|
switch scriptSize {
|
|
case input.P2WPKHSize:
|
|
pkscript, _ = input.WitnessPubKeyHash([]byte{})
|
|
|
|
case input.P2WSHSize:
|
|
pkscript, _ = input.WitnessScriptHash([]byte{})
|
|
|
|
case input.P2SHSize:
|
|
pkscript, _ = input.GenerateP2SH([]byte{})
|
|
|
|
case input.P2PKHSize:
|
|
pkscript, _ = input.GenerateP2PKH([]byte{})
|
|
|
|
case input.UnknownWitnessSize:
|
|
pkscript, _ = input.GenerateUnknownWitness()
|
|
|
|
default:
|
|
panic("invalid script size")
|
|
}
|
|
|
|
// Call GetDustThreshold with a TxOut containing the generated
|
|
// pkscript.
|
|
txout := &wire.TxOut{PkScript: pkscript}
|
|
dustlimit = btcutil.Amount(mempool.GetDustThreshold(txout))
|
|
|
|
return dustlimit
|
|
}
|