chanacceptor

package
v0.15.5-beta Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 7, 2022 License: MIT Imports: 16 Imported by: 0

Documentation

Index

Constants

View Source
const Subsystem = "CHAC"

Subsystem defines the logging code for this subsystem.

Variables

This section is empty.

Functions

func DisableLog

func DisableLog()

DisableLog disables all library log output. Logging output is disabled by default until UseLogger is called.

func UseLogger

func UseLogger(logger btclog.Logger)

UseLogger uses a specified Logger to output package logging info. This should be used in preference to SetLogWriter if the caller is also using btclog.

Types

type ChainedAcceptor

type ChainedAcceptor struct {
	// contains filtered or unexported fields
}

ChainedAcceptor represents a conjunction of ChannelAcceptor results.

func NewChainedAcceptor

func NewChainedAcceptor() *ChainedAcceptor

NewChainedAcceptor initializes a ChainedAcceptor.

func (*ChainedAcceptor) Accept

Accept evaluates the results of all ChannelAcceptors in the acceptors map and returns the conjunction of all these predicates.

NOTE: Part of the ChannelAcceptor interface.

func (*ChainedAcceptor) AddAcceptor

func (c *ChainedAcceptor) AddAcceptor(acceptor ChannelAcceptor) uint64

AddAcceptor adds a ChannelAcceptor to this ChainedAcceptor.

NOTE: Part of the MultiplexAcceptor interface.

func (*ChainedAcceptor) RemoveAcceptor

func (c *ChainedAcceptor) RemoveAcceptor(id uint64)

RemoveAcceptor removes a ChannelAcceptor from this ChainedAcceptor given an ID.

NOTE: Part of the MultiplexAcceptor interface.

type ChanAcceptError

type ChanAcceptError struct {
	// contains filtered or unexported fields
}

ChanAcceptError is an error that it returned when an external channel acceptor rejects a channel. Note that this error type is whitelisted and will be delivered to the peer initiating a channel.

type ChannelAcceptRequest

type ChannelAcceptRequest struct {
	// Node is the public key of the node requesting to open a channel.
	Node *btcec.PublicKey

	// OpenChanMsg is the actual OpenChannel protocol message that the peer
	// sent to us.
	OpenChanMsg *lnwire.OpenChannel
}

ChannelAcceptRequest is a struct containing the requesting node's public key along with the lnwire.OpenChannel message that they sent when requesting an inbound channel. This information is provided to each acceptor so that they can each leverage their own decision-making with this information.

type ChannelAcceptResponse

type ChannelAcceptResponse struct {
	// ChanAcceptError the error returned by the channel acceptor. If the
	// channel was accepted, this value will be nil.
	ChanAcceptError

	// UpfrontShutdown is the address that we will set as our upfront
	// shutdown address.
	UpfrontShutdown lnwire.DeliveryAddress

	// CSVDelay is the csv delay we require for the remote peer.
	CSVDelay uint16

	// Reserve is the amount that require the remote peer hold in reserve
	// on the channel.
	Reserve btcutil.Amount

	// InFlightTotal is the maximum amount that we allow the remote peer to
	// hold in outstanding htlcs.
	InFlightTotal lnwire.MilliSatoshi

	// HtlcLimit is the maximum number of htlcs that we allow the remote
	// peer to offer us.
	HtlcLimit uint16

	// MinHtlcIn is the minimum incoming htlc value allowed on the channel.
	MinHtlcIn lnwire.MilliSatoshi

	// MinAcceptDepth is the minimum depth that the initiator of the
	// channel should wait before considering the channel open.
	MinAcceptDepth uint16

	// ZeroConf indicates that the fundee wishes to send min_depth = 0 and
	// request a zero-conf channel with the counter-party.
	ZeroConf bool
}

ChannelAcceptResponse is a struct containing the response to a request to open an inbound channel. Note that fields added to this struct must be added to the mergeResponse function to allow combining of responses from different acceptors.

func NewChannelAcceptResponse

func NewChannelAcceptResponse(accept bool, acceptErr error,
	upfrontShutdown lnwire.DeliveryAddress, csvDelay, htlcLimit,
	minDepth uint16, reserve btcutil.Amount, inFlight,
	minHtlcIn lnwire.MilliSatoshi, zeroConf bool) *ChannelAcceptResponse

NewChannelAcceptResponse is a constructor for a channel accept response, which creates a response with an appropriately wrapped error (in the case of a rejection) so that the error will be whitelisted and delivered to the initiating peer. Accepted channels simply return a response containing a nil error.

func (*ChannelAcceptResponse) RejectChannel

func (c *ChannelAcceptResponse) RejectChannel() bool

RejectChannel returns a boolean that indicates whether we should reject the channel.

type ChannelAcceptor

type ChannelAcceptor interface {
	Accept(req *ChannelAcceptRequest) *ChannelAcceptResponse
}

ChannelAcceptor is an interface that represents a predicate on the data contained in ChannelAcceptRequest.

type MultiplexAcceptor

type MultiplexAcceptor interface {
	// Embed the ChannelAcceptor.
	ChannelAcceptor

	// AddAcceptor nests a ChannelAcceptor inside the MultiplexAcceptor.
	AddAcceptor(acceptor ChannelAcceptor) uint64

	// Remove a sub-ChannelAcceptor.
	RemoveAcceptor(id uint64)
}

MultiplexAcceptor is an interface that abstracts the ability of a ChannelAcceptor to contain sub-ChannelAcceptors.

type RPCAcceptor

type RPCAcceptor struct {
	// contains filtered or unexported fields
}

RPCAcceptor represents the RPC-controlled variant of the ChannelAcceptor. One RPCAcceptor allows one RPC client.

func NewRPCAcceptor

func NewRPCAcceptor(receive func() (*lnrpc.ChannelAcceptResponse, error),
	send func(*lnrpc.ChannelAcceptRequest) error, timeout time.Duration,
	params *chaincfg.Params, quit chan struct{}) *RPCAcceptor

NewRPCAcceptor creates and returns an instance of the RPCAcceptor.

func (*RPCAcceptor) Accept

Accept is a predicate on the ChannelAcceptRequest which is sent to the RPC client who will respond with the ultimate decision. This function passes the request into the acceptor's requests channel, and returns the response it receives, failing the request if the timeout elapses.

NOTE: Part of the ChannelAcceptor interface.

func (*RPCAcceptor) Run

func (r *RPCAcceptor) Run() error

Run is the main loop for the RPC Acceptor. This function will block until it receives the signal that lnd is shutting down, or the rpc stream is cancelled by the client.

type ZeroConfAcceptor

type ZeroConfAcceptor struct {
	// contains filtered or unexported fields
}

ZeroConfAcceptor wraps a regular ChainedAcceptor. If no acceptors are in the ChainedAcceptor, then Accept will reject all channel open requests. This should only be enabled when the zero-conf feature bit is set and is used to protect users from a malicious counter-party double-spending the zero-conf funding tx.

func NewZeroConfAcceptor

func NewZeroConfAcceptor() *ZeroConfAcceptor

NewZeroConfAcceptor initializes a ZeroConfAcceptor.

func (*ZeroConfAcceptor) Accept

Accept will deny the channel open request if the internal ChainedAcceptor is empty. If the internal ChainedAcceptor has any acceptors, then Accept will instead be called on it.

NOTE: Part of the ChannelAcceptor interface.

func (*ZeroConfAcceptor) AddAcceptor

func (z *ZeroConfAcceptor) AddAcceptor(acceptor ChannelAcceptor) uint64

AddAcceptor adds a sub-ChannelAcceptor to the internal ChainedAcceptor.

func (*ZeroConfAcceptor) RemoveAcceptor

func (z *ZeroConfAcceptor) RemoveAcceptor(id uint64)

RemoveAcceptor removes a sub-ChannelAcceptor from the internal ChainedAcceptor.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL