loop: add fee ppm to autoloop cli

pull/340/head
carla 3 years ago
parent 90561f8ac7
commit 299a0a4ff9
No known key found for this signature in database
GPG Key ID: 4CA7FE54A6213C91

@ -212,6 +212,11 @@ var setParamsCommand = cli.Command{
Usage: "the limit placed on our estimated sweep fee " +
"in sat/vByte.",
},
cli.IntFlag{
Name: "feepercent",
Usage: "the maximum percentage of swap amount to be " +
"used across all fee categories",
},
cli.Float64Flag{
Name: "maxswapfee",
Usage: "the maximum percentage of swap volume we are " +
@ -307,8 +312,11 @@ func setParams(ctx *cli.Context) error {
return err
}
var flagSet bool
var flagSet, categoriesSet, feePercentSet bool
// Update our existing parameters with the values provided by cli flags.
// Our fee categories and fee percentage are exclusive, so track which
// flags are set to ensure that we don't have nonsensical overlap.
if ctx.IsSet("maxswapfee") {
feeRate := ctx.Float64("maxswapfee")
params.MaxSwapFeePpm, err = ppmFromPercentage(feeRate)
@ -317,6 +325,7 @@ func setParams(ctx *cli.Context) error {
}
flagSet = true
categoriesSet = true
}
if ctx.IsSet("sweeplimit") {
@ -324,6 +333,18 @@ func setParams(ctx *cli.Context) error {
params.SweepFeeRateSatPerVbyte = uint64(satPerVByte)
flagSet = true
categoriesSet = true
}
if ctx.IsSet("feepercent") {
feeRate := ctx.Float64("feepercent")
params.FeePpm, err = ppmFromPercentage(feeRate)
if err != nil {
return err
}
flagSet = true
feePercentSet = true
}
if ctx.IsSet("maxroutingfee") {
@ -334,6 +355,7 @@ func setParams(ctx *cli.Context) error {
}
flagSet = true
categoriesSet = true
}
if ctx.IsSet("maxprepayfee") {
@ -344,16 +366,19 @@ func setParams(ctx *cli.Context) error {
}
flagSet = true
categoriesSet = true
}
if ctx.IsSet("maxprepay") {
params.MaxPrepaySat = ctx.Uint64("maxprepay")
flagSet = true
categoriesSet = true
}
if ctx.IsSet("maxminer") {
params.MaxMinerFeeSat = ctx.Uint64("maxminer")
flagSet = true
categoriesSet = true
}
if ctx.IsSet("sweepconf") {
@ -400,6 +425,29 @@ func setParams(ctx *cli.Context) error {
return fmt.Errorf("at least one flag required to set params")
}
switch {
// Fail if fee params for both types of fee limit are set, since they
// cannot be used in conjunction.
case feePercentSet && categoriesSet:
return fmt.Errorf("feepercent cannot be set with specific " +
"fee category flags")
// If we are updating to fee percentage, we unset all other fee related
// params so that users do not need to manually unset them.
case feePercentSet:
params.SweepFeeRateSatPerVbyte = 0
params.MaxMinerFeeSat = 0
params.MaxPrepayRoutingFeePpm = 0
params.MaxPrepaySat = 0
params.MaxRoutingFeePpm = 0
params.MaxSwapFeePpm = 0
// If we are setting any of our fee categories, unset fee percentage
// so that it does not need to be manually updated.
case categoriesSet:
params.FeePpm = 0
}
// Update our parameters to our mutated values.
_, err = client.SetLiquidityParams(
context.Background(), &looprpc.SetLiquidityParamsRequest{

Loading…
Cancel
Save