mirror of
https://github.com/lightninglabs/loop.git
synced 2026-08-13 12:33:03 +02:00
Include https://github.com/lightninglabs/lndclient/pull/280 multi: migrate to btcd v2 modules + add WalletKit.SubmitPackage Migrate Loop imports and update Aperture and Taproot Assets to compatible revisions so this commit remains green on its own.
68 lines
1.8 KiB
Go
68 lines
1.8 KiB
Go
package liquidity
|
|
|
|
import (
|
|
"github.com/btcsuite/btcd/btcutil/v2"
|
|
"github.com/lightninglabs/loop"
|
|
"github.com/lightningnetwork/lnd/lnwire"
|
|
"github.com/lightningnetwork/lnd/routing/route"
|
|
)
|
|
|
|
// Compile-time assertion that loopOutSwapSuggestion satisfies the
|
|
// swapSuggestion interface.
|
|
var _ swapSuggestion = (*loopOutSwapSuggestion)(nil)
|
|
|
|
// loopOutSwapSuggestion is an implementation of the swapSuggestion interface
|
|
// implemented to allow us to abstract away from the details of a specific
|
|
// swap.
|
|
type loopOutSwapSuggestion struct {
|
|
loop.OutRequest
|
|
}
|
|
|
|
// amount returns the amount being swapped.
|
|
func (l *loopOutSwapSuggestion) amount() btcutil.Amount {
|
|
return l.OutRequest.Amount
|
|
}
|
|
|
|
// fees returns the maximum fees we could possibly pay for this swap.
|
|
func (l *loopOutSwapSuggestion) fees() btcutil.Amount {
|
|
return worstCaseOutFees(
|
|
l.OutRequest.MaxPrepayRoutingFee, l.OutRequest.MaxSwapRoutingFee,
|
|
l.OutRequest.MaxSwapFee, l.OutRequest.MaxMinerFee,
|
|
)
|
|
}
|
|
|
|
// channels returns the set of channels the loop out swap is restricted to.
|
|
func (l *loopOutSwapSuggestion) channels() []lnwire.ShortChannelID {
|
|
channels := make(
|
|
[]lnwire.ShortChannelID, len(l.OutRequest.OutgoingChanSet),
|
|
)
|
|
|
|
for i, id := range l.OutRequest.OutgoingChanSet {
|
|
channels[i] = lnwire.NewShortChanIDFromInt(id)
|
|
}
|
|
|
|
return channels
|
|
}
|
|
|
|
// peers returns the set of peers that the loop out swap is restricted to.
|
|
func (l *loopOutSwapSuggestion) peers(
|
|
knownChans map[uint64]route.Vertex) []route.Vertex {
|
|
|
|
peers := make(map[route.Vertex]struct{}, len(knownChans))
|
|
|
|
for _, channel := range l.OutRequest.OutgoingChanSet {
|
|
peer, ok := knownChans[channel]
|
|
if !ok {
|
|
log.Warnf("peer for channel: %v unknown", channel)
|
|
}
|
|
|
|
peers[peer] = struct{}{}
|
|
}
|
|
|
|
peerList := make([]route.Vertex, 0, len(peers))
|
|
for peer := range peers {
|
|
peerList = append(peerList, peer)
|
|
}
|
|
|
|
return peerList
|
|
}
|