Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type ChanActivityScore ¶
type ChanActivityScore float64
ChanActivityScore holds "how much activity" a channel received through some period of time.
The basic equation for determining the "activity" score for a channel is
atoms_sent / capacity / lifetime_hours
The interpretation for this equation is that the activity score is the percentage of the channel capacity sent through the channel during its entire lifetime.
func (ChanActivityScore) ToPercent ¶
func (s ChanActivityScore) ToPercent() float64
toPercent returns the activity score as a percentage.
type Config ¶
type Config struct {
ChainParams *chaincfg.Params
RootDir string
// Dcrlnd Connection Options
LNRPCHost string
LNTLSCertPath string
LNMacaroonPath string
LNNodeAddrs []string
Log slog.Logger
// Max number of channels the underlying dcrlnd instance can have as
// pending.
MaxPendingChans uint
// Policy config
MinChanSize uint64
MaxChanSize uint64
MaxNbChannels uint
MinWalletBalance dcrutil.Amount
CloseCheckInterval time.Duration
MinChanLifetime time.Duration
CreateKey []byte
InvoiceExpiration time.Duration
IgnoreChannels map[string]struct{}
IgnoreNodes map[string]struct{}
// ChanInvoiceFeeRate is the fee rate to charge for creating a channel.
// in atoms/channel-size-atoms.
ChanInvoiceFeeRate float64
}
Config holds the server config.
type ManagedChannel ¶
type ManagedChannel struct {
// Lifetime of the channel since it has opened.
Lifetime time.Duration
ChanPoint string
Sid lnwire.ShortChannelID
RemotePubkey string
Capacity dcrutil.Amount
LocalBalance dcrutil.Amount
RemoteBalance dcrutil.Amount
TotalAtomsSent dcrutil.Amount
// HasMinLifetime is true when this channel has the minimum lifetime
// required to be eligible for closing.
HasMinLifetime bool
// Score of the channel (activity % within its lifetime).
Score ChanActivityScore
// WillClose whether this channel is likely to be closed in the next
// round of management.
WillClose bool
}
ManagedChannel is information about channels managed by the LP.
type ManagementInfo ¶
type ManagementInfo struct {
// WalletBalance is the amount available (confirmed + unconfirmed) in
// the on-chain wallet.
WalletBalance dcrutil.Amount
// LimboBalance is the amount that is pending to be reclaimed in
// already closed channels.
LimboBalance dcrutil.Amount
// TotalBalance available to open channels (both confirmed and pending
// to be reclaimed).
TotalBalance dcrutil.Amount
// MinWalletBalance minimum amount of funds that must be available to
// open new channels. When the total balance is lower than this amount,
// channels will start to be closed.
MinWalletBalance dcrutil.Amount
// BlockHeight is the current block height of the wallet.
BlockHeight uint32
// Channels is the list of channels managed by the LP server.
Channels []ManagedChannel
// UnmanagedChannels are channels that are NOT eligible for closing by
// the LP server.
UnmanagedChannels []UnmanagedChannel
// NeedsManagement is true when the channels need to be managed to
// reclaim some funds.
NeedsManagement bool
// Reclaimed is the (approximate) amount that will be reclaimed after
// closing some channels. This does not take into account various
// transaction fees that will need to be paid.
Reclaimed dcrutil.Amount
}
ManagementInfo is the full set of information taken into account when managing channels.
type Server ¶
type Server struct {
// contains filtered or unexported fields
}
Server is a server instance.
func (*Server) CreateInvoice ¶
func (s *Server) CreateInvoice(ctx context.Context, node rpc.NodeID, chanSize uint64) (string, error)
CreateInvoice creates an invoice that, once paid, will trigger the underlying node to open a channel back to the specified client.
func (*Server) FetchManagedChannels ¶
func (s *Server) FetchManagedChannels(ctx context.Context) (res ManagementInfo, err error)
FetchManagedChannels returns the list of channels managed by the server.