mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-08-04 02:36:17 +02:00
multi: replace DefaultDustLimit with script-specific DustLimitForSize
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.
This commit is contained in:
@@ -1,13 +1,50 @@
|
||||
package lnwallet
|
||||
|
||||
import (
|
||||
"github.com/btcsuite/btcd/mempool"
|
||||
"github.com/btcsuite/btcd/wire"
|
||||
"github.com/btcsuite/btcutil"
|
||||
"github.com/btcsuite/btcwallet/wallet/txrules"
|
||||
"github.com/lightningnetwork/lnd/input"
|
||||
)
|
||||
|
||||
// DefaultDustLimit is used to calculate the dust HTLC amount which will be
|
||||
// send to other node during funding process.
|
||||
func DefaultDustLimit() btcutil.Amount {
|
||||
return txrules.GetDustThreshold(input.P2WSHSize, txrules.DefaultRelayFeePerKb)
|
||||
// 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
|
||||
}
|
||||
|
Reference in New Issue
Block a user