lnwallet: add new helper functions to scale confirmations based on amt
This commit is contained in:
1 parent
eb7fbd47d3
commit
9e74916118
1 file changed
+58
@@ -0,0 +1,58 @@
|
||||
package lnwallet
|
||||
|
||||
import (
|
||||
"github.com/btcsuite/btcd/btcutil"
|
||||
"github.com/lightningnetwork/lnd/lnwire"
|
||||
)
|
||||
|
||||
const (
|
||||
// minRequiredConfs is the minimum number of confirmations we'll
|
||||
// require for channel operations.
|
||||
minRequiredConfs = 1
|
||||
|
||||
// maxRequiredConfs is the maximum number of confirmations we'll
|
||||
// require for channel operations.
|
||||
maxRequiredConfs = 6
|
||||
|
||||
// maxChannelSize is the maximum expected channel size in satoshis.
|
||||
// This matches MaxBtcFundingAmount (0.16777215 BTC).
|
||||
maxChannelSize = 16777215
|
||||
)
|
||||
|
||||
// ScaleNumConfs returns a linearly scaled number of confirmations based on the
|
||||
// provided channel amount and push amount (for funding transactions). The push
|
||||
// amount represents additional risk when receiving funds.
|
||||
func ScaleNumConfs(chanAmt btcutil.Amount, pushAmt lnwire.MilliSatoshi) uint16 {
|
||||
// For wumbo channels, always require maximum confirmations.
|
||||
if chanAmt > maxChannelSize {
|
||||
return maxRequiredConfs
|
||||
}
|
||||
|
||||
// Calculate total stake: channel amount + push amount. The push amount
|
||||
// represents value at risk for the receiver.
|
||||
maxChannelSizeMsat := lnwire.NewMSatFromSatoshis(maxChannelSize)
|
||||
stake := lnwire.NewMSatFromSatoshis(chanAmt) + pushAmt
|
||||
|
||||
// Scale confirmations linearly based on stake.
|
||||
conf := uint64(maxRequiredConfs) * uint64(stake) /
|
||||
uint64(maxChannelSizeMsat)
|
||||
|
||||
// Bound the result between minRequiredConfs and maxRequiredConfs.
|
||||
if conf < minRequiredConfs {
|
||||
conf = minRequiredConfs
|
||||
}
|
||||
if conf > maxRequiredConfs {
|
||||
conf = maxRequiredConfs
|
||||
}
|
||||
|
||||
return uint16(conf)
|
||||
}
|
||||
|
||||
// FundingConfsForAmounts returns the number of confirmations to wait for a
|
||||
// funding transaction, taking into account both the channel amount and any
|
||||
// pushed amount (which represents additional risk).
|
||||
func FundingConfsForAmounts(chanAmt btcutil.Amount,
|
||||
pushAmt lnwire.MilliSatoshi) uint16 {
|
||||
|
||||
return ScaleNumConfs(chanAmt, pushAmt)
|
||||
}
|
||||
Reference in new issue
Block a user