Merge pull request #7645 from shaurya947/bitcoind-minmempoolfee
sweep+lnrpc: enforce provided fee rate is no less than relay fee
This commit is contained in:
5 files changed
+77
-46
No files matched your search
+4
-42
@@ -222,44 +222,6 @@ func stringInSlice(a string, slice []string) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
// calculateFeeRate uses either satPerByte or satPerVByte, but not both, from a
|
||||
// request to calculate the fee rate. It provides compatibility for the
|
||||
// deprecated field, satPerByte. Once the field is safe to be removed, the
|
||||
// check can then be deleted.
|
||||
func calculateFeeRate(satPerByte, satPerVByte uint64, targetConf uint32,
|
||||
estimator chainfee.Estimator) (chainfee.SatPerKWeight, error) {
|
||||
|
||||
var feeRate chainfee.SatPerKWeight
|
||||
|
||||
// We only allow using either the deprecated field or the new field.
|
||||
if satPerByte != 0 && satPerVByte != 0 {
|
||||
return feeRate, fmt.Errorf("either SatPerByte or " +
|
||||
"SatPerVByte should be set, but not both")
|
||||
}
|
||||
|
||||
// Default to satPerVByte, and overwrite it if satPerByte is set.
|
||||
satPerKw := chainfee.SatPerKVByte(satPerVByte * 1000).FeePerKWeight()
|
||||
if satPerByte != 0 {
|
||||
satPerKw = chainfee.SatPerKVByte(
|
||||
satPerByte * 1000,
|
||||
).FeePerKWeight()
|
||||
}
|
||||
|
||||
// Based on the passed fee related parameters, we'll determine an
|
||||
// appropriate fee rate for this transaction.
|
||||
feeRate, err := sweep.DetermineFeePerKw(
|
||||
estimator, sweep.FeePreference{
|
||||
ConfTarget: targetConf,
|
||||
FeeRate: satPerKw,
|
||||
},
|
||||
)
|
||||
if err != nil {
|
||||
return feeRate, err
|
||||
}
|
||||
|
||||
return feeRate, nil
|
||||
}
|
||||
|
||||
// GetAllPermissions returns all the permissions required to interact with lnd.
|
||||
func GetAllPermissions() []bakery.Op {
|
||||
allPerms := make([]bakery.Op, 0)
|
||||
@@ -1239,7 +1201,7 @@ func (r *rpcServer) SendCoins(ctx context.Context,
|
||||
in *lnrpc.SendCoinsRequest) (*lnrpc.SendCoinsResponse, error) {
|
||||
|
||||
// Calculate an appropriate fee rate for this transaction.
|
||||
feePerKw, err := calculateFeeRate(
|
||||
feePerKw, err := lnrpc.CalculateFeeRate(
|
||||
uint64(in.SatPerByte), in.SatPerVbyte, // nolint:staticcheck
|
||||
uint32(in.TargetConf), r.server.cc.FeeEstimator,
|
||||
)
|
||||
@@ -1452,7 +1414,7 @@ func (r *rpcServer) SendMany(ctx context.Context,
|
||||
in *lnrpc.SendManyRequest) (*lnrpc.SendManyResponse, error) {
|
||||
|
||||
// Calculate an appropriate fee rate for this transaction.
|
||||
feePerKw, err := calculateFeeRate(
|
||||
feePerKw, err := lnrpc.CalculateFeeRate(
|
||||
uint64(in.SatPerByte), in.SatPerVbyte, // nolint:staticcheck
|
||||
uint32(in.TargetConf), r.server.cc.FeeEstimator,
|
||||
)
|
||||
@@ -2093,7 +2055,7 @@ func (r *rpcServer) parseOpenChannelReq(in *lnrpc.OpenChannelRequest,
|
||||
}
|
||||
|
||||
// Calculate an appropriate fee rate for this transaction.
|
||||
feeRate, err := calculateFeeRate(
|
||||
feeRate, err := lnrpc.CalculateFeeRate(
|
||||
uint64(in.SatPerByte), in.SatPerVbyte, // nolint:staticcheck
|
||||
uint32(in.TargetConf), r.server.cc.FeeEstimator,
|
||||
)
|
||||
@@ -2584,7 +2546,7 @@ func (r *rpcServer) CloseChannel(in *lnrpc.CloseChannelRequest,
|
||||
// Based on the passed fee related parameters, we'll determine
|
||||
// an appropriate fee rate for the cooperative closure
|
||||
// transaction.
|
||||
feeRate, err := calculateFeeRate(
|
||||
feeRate, err := lnrpc.CalculateFeeRate(
|
||||
uint64(in.SatPerByte), in.SatPerVbyte, // nolint:staticcheck
|
||||
uint32(in.TargetConf), r.server.cc.FeeEstimator,
|
||||
)
|
||||
|
||||
Reference in new issue
Block a user