@ -8,6 +8,7 @@ import (
"sync"
"time"
"github.com/btcsuite/btcd/chaincfg"
"github.com/btcsuite/btcutil"
"github.com/lightninglabs/lndclient"
"github.com/lightninglabs/loop"
@ -35,6 +36,11 @@ const (
)
var (
// errIncorrectChain is returned when the format of the
// destination address provided does not match the active chain.
errIncorrectChain = errors . New ( "invalid address format for the " +
"active chain" )
// errConfTargetTooLow is returned when the chosen confirmation target
// is below the allowed minimum.
errConfTargetTooLow = errors . New ( "confirmation target too low" )
@ -82,8 +88,9 @@ func (s *swapClientServer) LoopOut(ctx context.Context,
}
}
sweepConfTarget , err := validateLoopOutRequest ( in . SweepConfTarget ,
in . Label )
sweepConfTarget , err := validateLoopOutRequest (
s . lnd . ChainParams , in . SweepConfTarget , sweepAddr , in . Label ,
)
if err != nil {
return nil , err
}
@ -922,9 +929,17 @@ func validateLoopInRequest(htlcConfTarget int32, external bool) (int32, error) {
return validateConfTarget ( htlcConfTarget , loop . DefaultHtlcConfTarget )
}
// validateLoopOutRequest validates the confirmation target and label of the
// loop out request.
func validateLoopOutRequest ( confTarget int32 , label string ) ( int32 , error ) {
// validateLoopOutRequest validates the confirmation target, destination
// address and label of the loop out request.
func validateLoopOutRequest ( chainParams * chaincfg . Params , confTarget int32 ,
sweepAddr btcutil . Address , label string ) ( int32 , error ) {
// Check that the provided destination address has the correct format
// for the active network.
if ! sweepAddr . IsForNet ( chainParams ) {
return 0 , fmt . Errorf ( "%w: Current active network is %s" ,
errIncorrectChain , chainParams . Name )
}
// Check that the label is valid.
if err := labels . Validate ( label ) ; err != nil {
return 0 , err