mirror of
https://github.com/lightninglabs/loop.git
synced 2026-08-19 13:17:50 +02:00
Add a dated fee budget to our swap suggestions. This budget only applies to automatically dispatched swaps (which will be added in later commits). We choose to apply the fee budget to our suggestions so that they perfectly replicate what the autolooper would do. The budget has a start date so that it can be refreshed once it has been used up over a period (rather than having to endlessly increase it).
52 lines
1.4 KiB
Go
52 lines
1.4 KiB
Go
package labels
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
const (
|
|
// MaxLength is the maximum length we allow for labels.
|
|
MaxLength = 500
|
|
|
|
// Reserved is used as a prefix to separate labels that are created by
|
|
// loopd from those created by users.
|
|
Reserved = "[reserved]"
|
|
|
|
// autoOut is the label used for loop out swaps that are automatically
|
|
// dispatched.
|
|
autoOut = "autoloop-out"
|
|
)
|
|
|
|
var (
|
|
// ErrLabelTooLong is returned when a label exceeds our length limit.
|
|
ErrLabelTooLong = errors.New("label exceeds maximum length")
|
|
|
|
// ErrReservedPrefix is returned when a label contains the prefix
|
|
// which is reserved for internally produced labels.
|
|
ErrReservedPrefix = errors.New("label contains reserved prefix")
|
|
)
|
|
|
|
// AutoOutLabel returns a label with the reserved prefix that identifies
|
|
// automatically dispatched loop outs.
|
|
func AutoOutLabel() string {
|
|
return fmt.Sprintf("%v: %v", Reserved, autoOut)
|
|
}
|
|
|
|
// Validate checks that a label is of appropriate length and is not in our list
|
|
// of reserved labels.
|
|
func Validate(label string) error {
|
|
if len(label) > MaxLength {
|
|
return ErrLabelTooLong
|
|
}
|
|
|
|
// Check if our label begins with our reserved prefix. We don't mind if
|
|
// it has our reserved prefix in another case, we just need to be able
|
|
// to reserve a subset of labels with this prefix.
|
|
if strings.HasPrefix(label, Reserved) {
|
|
return ErrReservedPrefix
|
|
}
|
|
|
|
return nil
|
|
}
|