routerrpc

package
v0.9.2-beta Latest Latest
Warning

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

Go to latest
Published: Mar 13, 2020 License: MIT Imports: 21 Imported by: 0

Documentation

Index

Constants

View Source
const Subsystem = "RRPC"

Subsystem defines the logging code for this subsystem.

Variables

View Source
var Failure_FailureCode_name = map[int32]string{
	0:   "RESERVED",
	1:   "INCORRECT_OR_UNKNOWN_PAYMENT_DETAILS",
	2:   "INCORRECT_PAYMENT_AMOUNT",
	3:   "FINAL_INCORRECT_CLTV_EXPIRY",
	4:   "FINAL_INCORRECT_HTLC_AMOUNT",
	5:   "FINAL_EXPIRY_TOO_SOON",
	6:   "INVALID_REALM",
	7:   "EXPIRY_TOO_SOON",
	8:   "INVALID_ONION_VERSION",
	9:   "INVALID_ONION_HMAC",
	10:  "INVALID_ONION_KEY",
	11:  "AMOUNT_BELOW_MINIMUM",
	12:  "FEE_INSUFFICIENT",
	13:  "INCORRECT_CLTV_EXPIRY",
	14:  "CHANNEL_DISABLED",
	15:  "TEMPORARY_CHANNEL_FAILURE",
	16:  "REQUIRED_NODE_FEATURE_MISSING",
	17:  "REQUIRED_CHANNEL_FEATURE_MISSING",
	18:  "UNKNOWN_NEXT_PEER",
	19:  "TEMPORARY_NODE_FAILURE",
	20:  "PERMANENT_NODE_FAILURE",
	21:  "PERMANENT_CHANNEL_FAILURE",
	22:  "EXPIRY_TOO_FAR",
	23:  "MPP_TIMEOUT",
	998: "UNKNOWN_FAILURE",
	999: "UNREADABLE_FAILURE",
}
View Source
var Failure_FailureCode_value = map[string]int32{
	"RESERVED":                             0,
	"INCORRECT_OR_UNKNOWN_PAYMENT_DETAILS": 1,
	"INCORRECT_PAYMENT_AMOUNT":             2,
	"FINAL_INCORRECT_CLTV_EXPIRY":          3,
	"FINAL_INCORRECT_HTLC_AMOUNT":          4,
	"FINAL_EXPIRY_TOO_SOON":                5,
	"INVALID_REALM":                        6,
	"EXPIRY_TOO_SOON":                      7,
	"INVALID_ONION_VERSION":                8,
	"INVALID_ONION_HMAC":                   9,
	"INVALID_ONION_KEY":                    10,
	"AMOUNT_BELOW_MINIMUM":                 11,
	"FEE_INSUFFICIENT":                     12,
	"INCORRECT_CLTV_EXPIRY":                13,
	"CHANNEL_DISABLED":                     14,
	"TEMPORARY_CHANNEL_FAILURE":            15,
	"REQUIRED_NODE_FEATURE_MISSING":        16,
	"REQUIRED_CHANNEL_FEATURE_MISSING":     17,
	"UNKNOWN_NEXT_PEER":                    18,
	"TEMPORARY_NODE_FAILURE":               19,
	"PERMANENT_NODE_FAILURE":               20,
	"PERMANENT_CHANNEL_FAILURE":            21,
	"EXPIRY_TOO_FAR":                       22,
	"MPP_TIMEOUT":                          23,
	"UNKNOWN_FAILURE":                      998,
	"UNREADABLE_FAILURE":                   999,
}
View Source
var PaymentState_name = map[int32]string{
	0: "IN_FLIGHT",
	1: "SUCCEEDED",
	2: "FAILED_TIMEOUT",
	3: "FAILED_NO_ROUTE",
	4: "FAILED_ERROR",
	5: "FAILED_INCORRECT_PAYMENT_DETAILS",
	6: "FAILED_INSUFFICIENT_BALANCE",
}
View Source
var PaymentState_value = map[string]int32{
	"IN_FLIGHT":                        0,
	"SUCCEEDED":                        1,
	"FAILED_TIMEOUT":                   2,
	"FAILED_NO_ROUTE":                  3,
	"FAILED_ERROR":                     4,
	"FAILED_INCORRECT_PAYMENT_DETAILS": 5,
	"FAILED_INSUFFICIENT_BALANCE":      6,
}

Functions

func DisableLog

func DisableLog()

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

func MarshalTimeNano

func MarshalTimeNano(t time.Time) int64

MarshalTimeNano converts a time.Time into its nanosecond representation. If the time is zero, this method simply returns 0, since calling UnixNano() on a zero-valued time is undefined.

func RegisterRouterServer

func RegisterRouterServer(s *grpc.Server, srv RouterServer)

func UnmarshalFeatures

func UnmarshalFeatures(
	rpcFeatures []lnrpc.FeatureBit) (*lnwire.FeatureVector, error)

UnmarshalFeatures converts a list of uint32's into a valid feature vector. This method checks that feature bit pairs aren't assigned toegether, and validates transitive depdencies.

func UnmarshalMPP

func UnmarshalMPP(reqMPP *lnrpc.MPPRecord) (*record.MPP, error)

UnmarshalMPP accepts the mpp_total_amt_msat and mpp_payment_addr fields from an RPC request and converts into an record.MPP object. An error is returned if the payment address is not 0 or 32 bytes. If the total amount and payment address are zero-value, the return value will be nil signaling there is no MPP record to attach to this hop. Otherwise, a non-nil reocrd will be contained combining the provided values.

func UnmarshallHopWithPubkey

func UnmarshallHopWithPubkey(rpcHop *lnrpc.Hop, pubkey route.Vertex) (*route.Hop,
	error)

UnmarshallHopWithPubkey unmarshalls an rpc hop for which the pubkey has already been extracted.

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.

func ValidateCLTVLimit

func ValidateCLTVLimit(val, max uint32) (uint32, error)

ValidateCLTVLimit returns a valid CLTV limit given a value and a maximum. If the value exceeds the maximum, then an error is returned. If the value is 0, then the maximum is used.

func ValidatePayReqExpiry

func ValidatePayReqExpiry(payReq *zpay32.Invoice) error

ValidatePayReqExpiry checks if the passed payment request has expired. In the case it has expired, an error will be returned.

Types

type BuildRouteRequest

type BuildRouteRequest struct {
	//*
	//The amount to send expressed in msat. If set to zero, the minimum routable
	//amount is used.
	AmtMsat int64 `protobuf:"varint,1,opt,name=amt_msat,json=amtMsat,proto3" json:"amt_msat,omitempty"`
	//*
	//CLTV delta from the current height that should be used for the timelock
	//of the final hop
	FinalCltvDelta int32 `protobuf:"varint,2,opt,name=final_cltv_delta,json=finalCltvDelta,proto3" json:"final_cltv_delta,omitempty"`
	//*
	//The channel id of the channel that must be taken to the first hop. If zero,
	//any channel may be used.
	OutgoingChanId uint64 `protobuf:"varint,3,opt,name=outgoing_chan_id,json=outgoingChanId,proto3" json:"outgoing_chan_id,omitempty"`
	//*
	//A list of hops that defines the route. This does not include the source hop
	//pubkey.
	HopPubkeys           [][]byte `protobuf:"bytes,4,rep,name=hop_pubkeys,json=hopPubkeys,proto3" json:"hop_pubkeys,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (*BuildRouteRequest) Descriptor

func (*BuildRouteRequest) Descriptor() ([]byte, []int)

func (*BuildRouteRequest) GetAmtMsat

func (m *BuildRouteRequest) GetAmtMsat() int64

func (*BuildRouteRequest) GetFinalCltvDelta

func (m *BuildRouteRequest) GetFinalCltvDelta() int32

func (*BuildRouteRequest) GetHopPubkeys

func (m *BuildRouteRequest) GetHopPubkeys() [][]byte

func (*BuildRouteRequest) GetOutgoingChanId

func (m *BuildRouteRequest) GetOutgoingChanId() uint64

func (*BuildRouteRequest) ProtoMessage

func (*BuildRouteRequest) ProtoMessage()

func (*BuildRouteRequest) Reset

func (m *BuildRouteRequest) Reset()

func (*BuildRouteRequest) String

func (m *BuildRouteRequest) String() string

func (*BuildRouteRequest) XXX_DiscardUnknown

func (m *BuildRouteRequest) XXX_DiscardUnknown()

func (*BuildRouteRequest) XXX_Marshal

func (m *BuildRouteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*BuildRouteRequest) XXX_Merge

func (m *BuildRouteRequest) XXX_Merge(src proto.Message)

func (*BuildRouteRequest) XXX_Size

func (m *BuildRouteRequest) XXX_Size() int

func (*BuildRouteRequest) XXX_Unmarshal

func (m *BuildRouteRequest) XXX_Unmarshal(b []byte) error

type BuildRouteResponse

type BuildRouteResponse struct {
	//*
	//Fully specified route that can be used to execute the payment.
	Route                *lnrpc.Route `protobuf:"bytes,1,opt,name=route,proto3" json:"route,omitempty"`
	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
	XXX_unrecognized     []byte       `json:"-"`
	XXX_sizecache        int32        `json:"-"`
}

func (*BuildRouteResponse) Descriptor

func (*BuildRouteResponse) Descriptor() ([]byte, []int)

func (*BuildRouteResponse) GetRoute

func (m *BuildRouteResponse) GetRoute() *lnrpc.Route

func (*BuildRouteResponse) ProtoMessage

func (*BuildRouteResponse) ProtoMessage()

func (*BuildRouteResponse) Reset

func (m *BuildRouteResponse) Reset()

func (*BuildRouteResponse) String

func (m *BuildRouteResponse) String() string

func (*BuildRouteResponse) XXX_DiscardUnknown

func (m *BuildRouteResponse) XXX_DiscardUnknown()

func (*BuildRouteResponse) XXX_Marshal

func (m *BuildRouteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*BuildRouteResponse) XXX_Merge

func (m *BuildRouteResponse) XXX_Merge(src proto.Message)

func (*BuildRouteResponse) XXX_Size

func (m *BuildRouteResponse) XXX_Size() int

func (*BuildRouteResponse) XXX_Unmarshal

func (m *BuildRouteResponse) XXX_Unmarshal(b []byte) error

type ChannelUpdate

type ChannelUpdate struct {
	//*
	//The signature that validates the announced data and proves the ownership
	//of node id.
	Signature []byte `protobuf:"bytes,1,opt,name=signature,proto3" json:"signature,omitempty"`
	//*
	//The target chain that this channel was opened within. This value
	//should be the genesis hash of the target chain. Along with the short
	//channel ID, this uniquely identifies the channel globally in a
	//blockchain.
	ChainHash []byte `protobuf:"bytes,2,opt,name=chain_hash,json=chainHash,proto3" json:"chain_hash,omitempty"`
	//*
	//The unique description of the funding transaction.
	ChanId uint64 `protobuf:"varint,3,opt,name=chan_id,json=chanId,proto3" json:"chan_id,omitempty"`
	//*
	//A timestamp that allows ordering in the case of multiple announcements.
	//We should ignore the message if timestamp is not greater than the
	//last-received.
	Timestamp uint32 `protobuf:"varint,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
	//*
	//The bitfield that describes whether optional fields are present in this
	//update. Currently, the least-significant bit must be set to 1 if the
	//optional field MaxHtlc is present.
	MessageFlags uint32 `protobuf:"varint,10,opt,name=message_flags,json=messageFlags,proto3" json:"message_flags,omitempty"`
	//*
	//The bitfield that describes additional meta-data concerning how the
	//update is to be interpreted. Currently, the least-significant bit must be
	//set to 0 if the creating node corresponds to the first node in the
	//previously sent channel announcement and 1 otherwise. If the second bit
	//is set, then the channel is set to be disabled.
	ChannelFlags uint32 `protobuf:"varint,5,opt,name=channel_flags,json=channelFlags,proto3" json:"channel_flags,omitempty"`
	//*
	//The minimum number of blocks this node requires to be added to the expiry
	//of HTLCs. This is a security parameter determined by the node operator.
	//This value represents the required gap between the time locks of the
	//incoming and outgoing HTLC's set to this node.
	TimeLockDelta uint32 `protobuf:"varint,6,opt,name=time_lock_delta,json=timeLockDelta,proto3" json:"time_lock_delta,omitempty"`
	//*
	//The minimum HTLC value which will be accepted.
	HtlcMinimumMsat uint64 `protobuf:"varint,7,opt,name=htlc_minimum_msat,json=htlcMinimumMsat,proto3" json:"htlc_minimum_msat,omitempty"`
	//*
	//The base fee that must be used for incoming HTLC's to this particular
	//channel. This value will be tacked onto the required for a payment
	//independent of the size of the payment.
	BaseFee uint32 `protobuf:"varint,8,opt,name=base_fee,json=baseFee,proto3" json:"base_fee,omitempty"`
	//*
	//The fee rate that will be charged per millionth of a satoshi.
	FeeRate uint32 `protobuf:"varint,9,opt,name=fee_rate,json=feeRate,proto3" json:"fee_rate,omitempty"`
	//*
	//The maximum HTLC value which will be accepted.
	HtlcMaximumMsat uint64 `protobuf:"varint,11,opt,name=htlc_maximum_msat,json=htlcMaximumMsat,proto3" json:"htlc_maximum_msat,omitempty"`
	//*
	//The set of data that was appended to this message, some of which we may
	//not actually know how to iterate or parse. By holding onto this data, we
	//ensure that we're able to properly validate the set of signatures that
	//cover these new fields, and ensure we're able to make upgrades to the
	//network in a forwards compatible manner.
	ExtraOpaqueData      []byte   `protobuf:"bytes,12,opt,name=extra_opaque_data,json=extraOpaqueData,proto3" json:"extra_opaque_data,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (*ChannelUpdate) Descriptor

func (*ChannelUpdate) Descriptor() ([]byte, []int)

func (*ChannelUpdate) GetBaseFee

func (m *ChannelUpdate) GetBaseFee() uint32

func (*ChannelUpdate) GetChainHash

func (m *ChannelUpdate) GetChainHash() []byte

func (*ChannelUpdate) GetChanId

func (m *ChannelUpdate) GetChanId() uint64

func (*ChannelUpdate) GetChannelFlags

func (m *ChannelUpdate) GetChannelFlags() uint32

func (*ChannelUpdate) GetExtraOpaqueData

func (m *ChannelUpdate) GetExtraOpaqueData() []byte

func (*ChannelUpdate) GetFeeRate

func (m *ChannelUpdate) GetFeeRate() uint32

func (*ChannelUpdate) GetHtlcMaximumMsat

func (m *ChannelUpdate) GetHtlcMaximumMsat() uint64

func (*ChannelUpdate) GetHtlcMinimumMsat

func (m *ChannelUpdate) GetHtlcMinimumMsat() uint64

func (*ChannelUpdate) GetMessageFlags

func (m *ChannelUpdate) GetMessageFlags() uint32

func (*ChannelUpdate) GetSignature

func (m *ChannelUpdate) GetSignature() []byte

func (*ChannelUpdate) GetTimeLockDelta

func (m *ChannelUpdate) GetTimeLockDelta() uint32

func (*ChannelUpdate) GetTimestamp

func (m *ChannelUpdate) GetTimestamp() uint32

func (*ChannelUpdate) ProtoMessage

func (*ChannelUpdate) ProtoMessage()

func (*ChannelUpdate) Reset

func (m *ChannelUpdate) Reset()

func (*ChannelUpdate) String

func (m *ChannelUpdate) String() string

func (*ChannelUpdate) XXX_DiscardUnknown

func (m *ChannelUpdate) XXX_DiscardUnknown()

func (*ChannelUpdate) XXX_Marshal

func (m *ChannelUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*ChannelUpdate) XXX_Merge

func (m *ChannelUpdate) XXX_Merge(src proto.Message)

func (*ChannelUpdate) XXX_Size

func (m *ChannelUpdate) XXX_Size() int

func (*ChannelUpdate) XXX_Unmarshal

func (m *ChannelUpdate) XXX_Unmarshal(b []byte) error

type Config

type Config struct{}

Config is the default config struct for the package. When the build tag isn't specified, then we output a blank config.

func DefaultConfig

func DefaultConfig() *Config

DefaultConfig defines the config defaults. Without the sub server enabled, there are no defaults to set.

type Failure

type Failure struct {
	/// Failure code as defined in the Lightning spec
	Code Failure_FailureCode `protobuf:"varint,1,opt,name=code,proto3,enum=routerrpc.Failure_FailureCode" json:"code,omitempty"`
	/// An optional channel update message.
	ChannelUpdate *ChannelUpdate `protobuf:"bytes,3,opt,name=channel_update,json=channelUpdate,proto3" json:"channel_update,omitempty"`
	/// A failure type-dependent htlc value.
	HtlcMsat uint64 `protobuf:"varint,4,opt,name=htlc_msat,json=htlcMsat,proto3" json:"htlc_msat,omitempty"`
	/// The sha256 sum of the onion payload.
	OnionSha_256 []byte `protobuf:"bytes,5,opt,name=onion_sha_256,json=onionSha256,proto3" json:"onion_sha_256,omitempty"`
	/// A failure type-dependent cltv expiry value.
	CltvExpiry uint32 `protobuf:"varint,6,opt,name=cltv_expiry,json=cltvExpiry,proto3" json:"cltv_expiry,omitempty"`
	/// A failure type-dependent flags value.
	Flags uint32 `protobuf:"varint,7,opt,name=flags,proto3" json:"flags,omitempty"`
	//*
	//The position in the path of the intermediate or final node that generated
	//the failure message. Position zero is the sender node.
	FailureSourceIndex uint32 `protobuf:"varint,8,opt,name=failure_source_index,json=failureSourceIndex,proto3" json:"failure_source_index,omitempty"`
	/// A failure type-dependent block height.
	Height               uint32   `protobuf:"varint,9,opt,name=height,proto3" json:"height,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (*Failure) Descriptor

func (*Failure) Descriptor() ([]byte, []int)

func (*Failure) GetChannelUpdate

func (m *Failure) GetChannelUpdate() *ChannelUpdate

func (*Failure) GetCltvExpiry

func (m *Failure) GetCltvExpiry() uint32

func (*Failure) GetCode

func (m *Failure) GetCode() Failure_FailureCode

func (*Failure) GetFailureSourceIndex

func (m *Failure) GetFailureSourceIndex() uint32

func (*Failure) GetFlags

func (m *Failure) GetFlags() uint32

func (*Failure) GetHeight

func (m *Failure) GetHeight() uint32

func (*Failure) GetHtlcMsat

func (m *Failure) GetHtlcMsat() uint64

func (*Failure) GetOnionSha_256

func (m *Failure) GetOnionSha_256() []byte

func (*Failure) ProtoMessage

func (*Failure) ProtoMessage()

func (*Failure) Reset

func (m *Failure) Reset()

func (*Failure) String

func (m *Failure) String() string

func (*Failure) XXX_DiscardUnknown

func (m *Failure) XXX_DiscardUnknown()

func (*Failure) XXX_Marshal

func (m *Failure) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Failure) XXX_Merge

func (m *Failure) XXX_Merge(src proto.Message)

func (*Failure) XXX_Size

func (m *Failure) XXX_Size() int

func (*Failure) XXX_Unmarshal

func (m *Failure) XXX_Unmarshal(b []byte) error

type Failure_FailureCode

type Failure_FailureCode int32
const (
	//*
	//The numbers assigned in this enumeration match the failure codes as
	//defined in BOLT #4. Because protobuf 3 requires enums to start with 0,
	//a RESERVED value is added.
	Failure_RESERVED                             Failure_FailureCode = 0
	Failure_INCORRECT_OR_UNKNOWN_PAYMENT_DETAILS Failure_FailureCode = 1
	Failure_INCORRECT_PAYMENT_AMOUNT             Failure_FailureCode = 2
	Failure_FINAL_INCORRECT_CLTV_EXPIRY          Failure_FailureCode = 3
	Failure_FINAL_INCORRECT_HTLC_AMOUNT          Failure_FailureCode = 4
	Failure_FINAL_EXPIRY_TOO_SOON                Failure_FailureCode = 5
	Failure_INVALID_REALM                        Failure_FailureCode = 6
	Failure_EXPIRY_TOO_SOON                      Failure_FailureCode = 7
	Failure_INVALID_ONION_VERSION                Failure_FailureCode = 8
	Failure_INVALID_ONION_HMAC                   Failure_FailureCode = 9
	Failure_INVALID_ONION_KEY                    Failure_FailureCode = 10
	Failure_AMOUNT_BELOW_MINIMUM                 Failure_FailureCode = 11
	Failure_FEE_INSUFFICIENT                     Failure_FailureCode = 12
	Failure_INCORRECT_CLTV_EXPIRY                Failure_FailureCode = 13
	Failure_CHANNEL_DISABLED                     Failure_FailureCode = 14
	Failure_TEMPORARY_CHANNEL_FAILURE            Failure_FailureCode = 15
	Failure_REQUIRED_NODE_FEATURE_MISSING        Failure_FailureCode = 16
	Failure_REQUIRED_CHANNEL_FEATURE_MISSING     Failure_FailureCode = 17
	Failure_UNKNOWN_NEXT_PEER                    Failure_FailureCode = 18
	Failure_TEMPORARY_NODE_FAILURE               Failure_FailureCode = 19
	Failure_PERMANENT_NODE_FAILURE               Failure_FailureCode = 20
	Failure_PERMANENT_CHANNEL_FAILURE            Failure_FailureCode = 21
	Failure_EXPIRY_TOO_FAR                       Failure_FailureCode = 22
	Failure_MPP_TIMEOUT                          Failure_FailureCode = 23
	//*
	//The error source is known, but the failure itself couldn't be decoded.
	Failure_UNKNOWN_FAILURE Failure_FailureCode = 998
	//*
	//An unreadable failure result is returned if the received failure message
	//cannot be decrypted. In that case the error source is unknown.
	Failure_UNREADABLE_FAILURE Failure_FailureCode = 999
)

func (Failure_FailureCode) EnumDescriptor

func (Failure_FailureCode) EnumDescriptor() ([]byte, []int)

func (Failure_FailureCode) String

func (x Failure_FailureCode) String() string

type MissionControl

type MissionControl interface {
	// GetProbability is expected to return the success probability of a
	// payment from fromNode to toNode.
	GetProbability(fromNode, toNode route.Vertex,
		amt lnwire.MilliSatoshi) float64

	// ResetHistory resets the history of MissionControl returning it to a
	// state as if no payment attempts have been made.
	ResetHistory() error

	// GetHistorySnapshot takes a snapshot from the current mission control
	// state and actual probability estimates.
	GetHistorySnapshot() *routing.MissionControlSnapshot

	// GetPairHistorySnapshot returns the stored history for a given node
	// pair.
	GetPairHistorySnapshot(fromNode,
		toNode route.Vertex) routing.TimedPairResult
}

MissionControl defines the mission control dependencies of routerrpc.

type PairData

type PairData struct {
	/// Time of last failure.
	FailTime int64 `protobuf:"varint,1,opt,name=fail_time,proto3" json:"fail_time,omitempty"`
	//*
	//Lowest amount that failed to forward rounded to whole sats. This may be
	//set to zero if the failure is independent of amount.
	FailAmtSat int64 `protobuf:"varint,2,opt,name=fail_amt_sat,proto3" json:"fail_amt_sat,omitempty"`
	//*
	//Lowest amount that failed to forward in millisats. This may be
	//set to zero if the failure is independent of amount.
	FailAmtMsat int64 `protobuf:"varint,4,opt,name=fail_amt_msat,proto3" json:"fail_amt_msat,omitempty"`
	/// Time of last success.
	SuccessTime int64 `protobuf:"varint,5,opt,name=success_time,proto3" json:"success_time,omitempty"`
	/// Highest amount that we could successfully forward rounded to whole sats.
	SuccessAmtSat int64 `protobuf:"varint,6,opt,name=success_amt_sat,proto3" json:"success_amt_sat,omitempty"`
	/// Highest amount that we could successfully forward in millisats.
	SuccessAmtMsat       int64    `protobuf:"varint,7,opt,name=success_amt_msat,proto3" json:"success_amt_msat,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (*PairData) Descriptor

func (*PairData) Descriptor() ([]byte, []int)

func (*PairData) GetFailAmtMsat

func (m *PairData) GetFailAmtMsat() int64

func (*PairData) GetFailAmtSat

func (m *PairData) GetFailAmtSat() int64

func (*PairData) GetFailTime

func (m *PairData) GetFailTime() int64

func (*PairData) GetSuccessAmtMsat

func (m *PairData) GetSuccessAmtMsat() int64

func (*PairData) GetSuccessAmtSat

func (m *PairData) GetSuccessAmtSat() int64

func (*PairData) GetSuccessTime

func (m *PairData) GetSuccessTime() int64

func (*PairData) ProtoMessage

func (*PairData) ProtoMessage()

func (*PairData) Reset

func (m *PairData) Reset()

func (*PairData) String

func (m *PairData) String() string

func (*PairData) XXX_DiscardUnknown

func (m *PairData) XXX_DiscardUnknown()

func (*PairData) XXX_Marshal

func (m *PairData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*PairData) XXX_Merge

func (m *PairData) XXX_Merge(src proto.Message)

func (*PairData) XXX_Size

func (m *PairData) XXX_Size() int

func (*PairData) XXX_Unmarshal

func (m *PairData) XXX_Unmarshal(b []byte) error

type PairHistory

type PairHistory struct {
	/// The source node pubkey of the pair.
	NodeFrom []byte `protobuf:"bytes,1,opt,name=node_from,proto3" json:"node_from,omitempty"`
	/// The destination node pubkey of the pair.
	NodeTo               []byte    `protobuf:"bytes,2,opt,name=node_to,proto3" json:"node_to,omitempty"`
	History              *PairData `protobuf:"bytes,7,opt,name=history,proto3" json:"history,omitempty"`
	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
	XXX_unrecognized     []byte    `json:"-"`
	XXX_sizecache        int32     `json:"-"`
}

/ PairHistory contains the mission control state for a particular node pair.

func (*PairHistory) Descriptor

func (*PairHistory) Descriptor() ([]byte, []int)

func (*PairHistory) GetHistory

func (m *PairHistory) GetHistory() *PairData

func (*PairHistory) GetNodeFrom

func (m *PairHistory) GetNodeFrom() []byte

func (*PairHistory) GetNodeTo

func (m *PairHistory) GetNodeTo() []byte

func (*PairHistory) ProtoMessage

func (*PairHistory) ProtoMessage()

func (*PairHistory) Reset

func (m *PairHistory) Reset()

func (*PairHistory) String

func (m *PairHistory) String() string

func (*PairHistory) XXX_DiscardUnknown

func (m *PairHistory) XXX_DiscardUnknown()

func (*PairHistory) XXX_Marshal

func (m *PairHistory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*PairHistory) XXX_Merge

func (m *PairHistory) XXX_Merge(src proto.Message)

func (*PairHistory) XXX_Size

func (m *PairHistory) XXX_Size() int

func (*PairHistory) XXX_Unmarshal

func (m *PairHistory) XXX_Unmarshal(b []byte) error

type PaymentState

type PaymentState int32
const (
	//*
	//Payment is still in flight.
	PaymentState_IN_FLIGHT PaymentState = 0
	//*
	//Payment completed successfully.
	PaymentState_SUCCEEDED PaymentState = 1
	//*
	//There are more routes to try, but the payment timeout was exceeded.
	PaymentState_FAILED_TIMEOUT PaymentState = 2
	//*
	//All possible routes were tried and failed permanently. Or were no
	//routes to the destination at all.
	PaymentState_FAILED_NO_ROUTE PaymentState = 3
	//*
	//A non-recoverable error has occured.
	PaymentState_FAILED_ERROR PaymentState = 4
	//*
	//Payment details incorrect (unknown hash, invalid amt or
	//invalid final cltv delta)
	PaymentState_FAILED_INCORRECT_PAYMENT_DETAILS PaymentState = 5
	//*
	//Insufficient local balance.
	PaymentState_FAILED_INSUFFICIENT_BALANCE PaymentState = 6
)

func (PaymentState) EnumDescriptor

func (PaymentState) EnumDescriptor() ([]byte, []int)

func (PaymentState) String

func (x PaymentState) String() string

type PaymentStatus

type PaymentStatus struct {
	/// Current state the payment is in.
	State PaymentState `protobuf:"varint,1,opt,name=state,proto3,enum=routerrpc.PaymentState" json:"state,omitempty"`
	//*
	//The pre-image of the payment when state is SUCCEEDED.
	Preimage []byte `protobuf:"bytes,2,opt,name=preimage,proto3" json:"preimage,omitempty"`
	//*
	//The taken route when state is SUCCEEDED.
	Route *lnrpc.Route `protobuf:"bytes,3,opt,name=route,proto3" json:"route,omitempty"`
	//*
	//The HTLCs made in attempt to settle the payment [EXPERIMENTAL].
	Htlcs                []*lnrpc.HTLCAttempt `protobuf:"bytes,4,rep,name=htlcs,proto3" json:"htlcs,omitempty"`
	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
	XXX_unrecognized     []byte               `json:"-"`
	XXX_sizecache        int32                `json:"-"`
}

func (*PaymentStatus) Descriptor

func (*PaymentStatus) Descriptor() ([]byte, []int)

func (*PaymentStatus) GetHtlcs

func (m *PaymentStatus) GetHtlcs() []*lnrpc.HTLCAttempt

func (*PaymentStatus) GetPreimage

func (m *PaymentStatus) GetPreimage() []byte

func (*PaymentStatus) GetRoute

func (m *PaymentStatus) GetRoute() *lnrpc.Route

func (*PaymentStatus) GetState

func (m *PaymentStatus) GetState() PaymentState

func (*PaymentStatus) ProtoMessage

func (*PaymentStatus) ProtoMessage()

func (*PaymentStatus) Reset

func (m *PaymentStatus) Reset()

func (*PaymentStatus) String

func (m *PaymentStatus) String() string

func (*PaymentStatus) XXX_DiscardUnknown

func (m *PaymentStatus) XXX_DiscardUnknown()

func (*PaymentStatus) XXX_Marshal

func (m *PaymentStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*PaymentStatus) XXX_Merge

func (m *PaymentStatus) XXX_Merge(src proto.Message)

func (*PaymentStatus) XXX_Size

func (m *PaymentStatus) XXX_Size() int

func (*PaymentStatus) XXX_Unmarshal

func (m *PaymentStatus) XXX_Unmarshal(b []byte) error

type QueryMissionControlRequest

type QueryMissionControlRequest struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (*QueryMissionControlRequest) Descriptor

func (*QueryMissionControlRequest) Descriptor() ([]byte, []int)

func (*QueryMissionControlRequest) ProtoMessage

func (*QueryMissionControlRequest) ProtoMessage()

func (*QueryMissionControlRequest) Reset

func (m *QueryMissionControlRequest) Reset()

func (*QueryMissionControlRequest) String

func (m *QueryMissionControlRequest) String() string

func (*QueryMissionControlRequest) XXX_DiscardUnknown

func (m *QueryMissionControlRequest) XXX_DiscardUnknown()

func (*QueryMissionControlRequest) XXX_Marshal

func (m *QueryMissionControlRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*QueryMissionControlRequest) XXX_Merge

func (m *QueryMissionControlRequest) XXX_Merge(src proto.Message)

func (*QueryMissionControlRequest) XXX_Size

func (m *QueryMissionControlRequest) XXX_Size() int

func (*QueryMissionControlRequest) XXX_Unmarshal

func (m *QueryMissionControlRequest) XXX_Unmarshal(b []byte) error

type QueryMissionControlResponse

type QueryMissionControlResponse struct {
	/// Node pair-level mission control state.
	Pairs                []*PairHistory `protobuf:"bytes,2,rep,name=pairs,proto3" json:"pairs,omitempty"`
	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
	XXX_unrecognized     []byte         `json:"-"`
	XXX_sizecache        int32          `json:"-"`
}

/ QueryMissionControlResponse contains mission control state.

func (*QueryMissionControlResponse) Descriptor

func (*QueryMissionControlResponse) Descriptor() ([]byte, []int)

func (*QueryMissionControlResponse) GetPairs

func (m *QueryMissionControlResponse) GetPairs() []*PairHistory

func (*QueryMissionControlResponse) ProtoMessage

func (*QueryMissionControlResponse) ProtoMessage()

func (*QueryMissionControlResponse) Reset

func (m *QueryMissionControlResponse) Reset()

func (*QueryMissionControlResponse) String

func (m *QueryMissionControlResponse) String() string

func (*QueryMissionControlResponse) XXX_DiscardUnknown

func (m *QueryMissionControlResponse) XXX_DiscardUnknown()

func (*QueryMissionControlResponse) XXX_Marshal

func (m *QueryMissionControlResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*QueryMissionControlResponse) XXX_Merge

func (m *QueryMissionControlResponse) XXX_Merge(src proto.Message)

func (*QueryMissionControlResponse) XXX_Size

func (m *QueryMissionControlResponse) XXX_Size() int

func (*QueryMissionControlResponse) XXX_Unmarshal

func (m *QueryMissionControlResponse) XXX_Unmarshal(b []byte) error

type QueryProbabilityRequest

type QueryProbabilityRequest struct {
	/// The source node pubkey of the pair.
	FromNode []byte `protobuf:"bytes,1,opt,name=from_node,proto3" json:"from_node,omitempty"`
	/// The destination node pubkey of the pair.
	ToNode []byte `protobuf:"bytes,2,opt,name=to_node,proto3" json:"to_node,omitempty"`
	/// The amount for which to calculate a probability.
	AmtMsat              int64    `protobuf:"varint,3,opt,name=amt_msat,proto3" json:"amt_msat,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (*QueryProbabilityRequest) Descriptor

func (*QueryProbabilityRequest) Descriptor() ([]byte, []int)

func (*QueryProbabilityRequest) GetAmtMsat

func (m *QueryProbabilityRequest) GetAmtMsat() int64

func (*QueryProbabilityRequest) GetFromNode

func (m *QueryProbabilityRequest) GetFromNode() []byte

func (*QueryProbabilityRequest) GetToNode

func (m *QueryProbabilityRequest) GetToNode() []byte

func (*QueryProbabilityRequest) ProtoMessage

func (*QueryProbabilityRequest) ProtoMessage()

func (*QueryProbabilityRequest) Reset

func (m *QueryProbabilityRequest) Reset()

func (*QueryProbabilityRequest) String

func (m *QueryProbabilityRequest) String() string

func (*QueryProbabilityRequest) XXX_DiscardUnknown

func (m *QueryProbabilityRequest) XXX_DiscardUnknown()

func (*QueryProbabilityRequest) XXX_Marshal

func (m *QueryProbabilityRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*QueryProbabilityRequest) XXX_Merge

func (m *QueryProbabilityRequest) XXX_Merge(src proto.Message)

func (*QueryProbabilityRequest) XXX_Size

func (m *QueryProbabilityRequest) XXX_Size() int

func (*QueryProbabilityRequest) XXX_Unmarshal

func (m *QueryProbabilityRequest) XXX_Unmarshal(b []byte) error

type QueryProbabilityResponse

type QueryProbabilityResponse struct {
	/// The success probability for the requested pair.
	Probability float64 `protobuf:"fixed64,1,opt,name=probability,proto3" json:"probability,omitempty"`
	/// The historical data for the requested pair.
	History              *PairData `protobuf:"bytes,2,opt,name=history,proto3" json:"history,omitempty"`
	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
	XXX_unrecognized     []byte    `json:"-"`
	XXX_sizecache        int32     `json:"-"`
}

func (*QueryProbabilityResponse) Descriptor

func (*QueryProbabilityResponse) Descriptor() ([]byte, []int)

func (*QueryProbabilityResponse) GetHistory

func (m *QueryProbabilityResponse) GetHistory() *PairData

func (*QueryProbabilityResponse) GetProbability

func (m *QueryProbabilityResponse) GetProbability() float64

func (*QueryProbabilityResponse) ProtoMessage

func (*QueryProbabilityResponse) ProtoMessage()

func (*QueryProbabilityResponse) Reset

func (m *QueryProbabilityResponse) Reset()

func (*QueryProbabilityResponse) String

func (m *QueryProbabilityResponse) String() string

func (*QueryProbabilityResponse) XXX_DiscardUnknown

func (m *QueryProbabilityResponse) XXX_DiscardUnknown()

func (*QueryProbabilityResponse) XXX_Marshal

func (m *QueryProbabilityResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*QueryProbabilityResponse) XXX_Merge

func (m *QueryProbabilityResponse) XXX_Merge(src proto.Message)

func (*QueryProbabilityResponse) XXX_Size

func (m *QueryProbabilityResponse) XXX_Size() int

func (*QueryProbabilityResponse) XXX_Unmarshal

func (m *QueryProbabilityResponse) XXX_Unmarshal(b []byte) error

type ResetMissionControlRequest

type ResetMissionControlRequest struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (*ResetMissionControlRequest) Descriptor

func (*ResetMissionControlRequest) Descriptor() ([]byte, []int)

func (*ResetMissionControlRequest) ProtoMessage

func (*ResetMissionControlRequest) ProtoMessage()

func (*ResetMissionControlRequest) Reset

func (m *ResetMissionControlRequest) Reset()

func (*ResetMissionControlRequest) String

func (m *ResetMissionControlRequest) String() string

func (*ResetMissionControlRequest) XXX_DiscardUnknown

func (m *ResetMissionControlRequest) XXX_DiscardUnknown()

func (*ResetMissionControlRequest) XXX_Marshal

func (m *ResetMissionControlRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*ResetMissionControlRequest) XXX_Merge

func (m *ResetMissionControlRequest) XXX_Merge(src proto.Message)

func (*ResetMissionControlRequest) XXX_Size

func (m *ResetMissionControlRequest) XXX_Size() int

func (*ResetMissionControlRequest) XXX_Unmarshal

func (m *ResetMissionControlRequest) XXX_Unmarshal(b []byte) error

type ResetMissionControlResponse

type ResetMissionControlResponse struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (*ResetMissionControlResponse) Descriptor

func (*ResetMissionControlResponse) Descriptor() ([]byte, []int)

func (*ResetMissionControlResponse) ProtoMessage

func (*ResetMissionControlResponse) ProtoMessage()

func (*ResetMissionControlResponse) Reset

func (m *ResetMissionControlResponse) Reset()

func (*ResetMissionControlResponse) String

func (m *ResetMissionControlResponse) String() string

func (*ResetMissionControlResponse) XXX_DiscardUnknown

func (m *ResetMissionControlResponse) XXX_DiscardUnknown()

func (*ResetMissionControlResponse) XXX_Marshal

func (m *ResetMissionControlResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*ResetMissionControlResponse) XXX_Merge

func (m *ResetMissionControlResponse) XXX_Merge(src proto.Message)

func (*ResetMissionControlResponse) XXX_Size

func (m *ResetMissionControlResponse) XXX_Size() int

func (*ResetMissionControlResponse) XXX_Unmarshal

func (m *ResetMissionControlResponse) XXX_Unmarshal(b []byte) error

type RouteFeeRequest

type RouteFeeRequest struct {
	//*
	//The destination once wishes to obtain a routing fee quote to.
	Dest []byte `protobuf:"bytes,1,opt,name=dest,proto3" json:"dest,omitempty"`
	//*
	//The amount one wishes to send to the target destination.
	AmtSat               int64    `protobuf:"varint,2,opt,name=amt_sat,json=amtSat,proto3" json:"amt_sat,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (*RouteFeeRequest) Descriptor

func (*RouteFeeRequest) Descriptor() ([]byte, []int)

func (*RouteFeeRequest) GetAmtSat

func (m *RouteFeeRequest) GetAmtSat() int64

func (*RouteFeeRequest) GetDest

func (m *RouteFeeRequest) GetDest() []byte

func (*RouteFeeRequest) ProtoMessage

func (*RouteFeeRequest) ProtoMessage()

func (*RouteFeeRequest) Reset

func (m *RouteFeeRequest) Reset()

func (*RouteFeeRequest) String

func (m *RouteFeeRequest) String() string

func (*RouteFeeRequest) XXX_DiscardUnknown

func (m *RouteFeeRequest) XXX_DiscardUnknown()

func (*RouteFeeRequest) XXX_Marshal

func (m *RouteFeeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*RouteFeeRequest) XXX_Merge

func (m *RouteFeeRequest) XXX_Merge(src proto.Message)

func (*RouteFeeRequest) XXX_Size

func (m *RouteFeeRequest) XXX_Size() int

func (*RouteFeeRequest) XXX_Unmarshal

func (m *RouteFeeRequest) XXX_Unmarshal(b []byte) error

type RouteFeeResponse

type RouteFeeResponse struct {
	//*
	//A lower bound of the estimated fee to the target destination within the
	//network, expressed in milli-satoshis.
	RoutingFeeMsat int64 `protobuf:"varint,1,opt,name=routing_fee_msat,json=routingFeeMsat,proto3" json:"routing_fee_msat,omitempty"`
	//*
	//An estimate of the worst case time delay that can occur. Note that callers
	//will still need to factor in the final CLTV delta of the last hop into this
	//value.
	TimeLockDelay        int64    `protobuf:"varint,2,opt,name=time_lock_delay,json=timeLockDelay,proto3" json:"time_lock_delay,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (*RouteFeeResponse) Descriptor

func (*RouteFeeResponse) Descriptor() ([]byte, []int)

func (*RouteFeeResponse) GetRoutingFeeMsat

func (m *RouteFeeResponse) GetRoutingFeeMsat() int64

func (*RouteFeeResponse) GetTimeLockDelay

func (m *RouteFeeResponse) GetTimeLockDelay() int64

func (*RouteFeeResponse) ProtoMessage

func (*RouteFeeResponse) ProtoMessage()

func (*RouteFeeResponse) Reset

func (m *RouteFeeResponse) Reset()

func (*RouteFeeResponse) String

func (m *RouteFeeResponse) String() string

func (*RouteFeeResponse) XXX_DiscardUnknown

func (m *RouteFeeResponse) XXX_DiscardUnknown()

func (*RouteFeeResponse) XXX_Marshal

func (m *RouteFeeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*RouteFeeResponse) XXX_Merge

func (m *RouteFeeResponse) XXX_Merge(src proto.Message)

func (*RouteFeeResponse) XXX_Size

func (m *RouteFeeResponse) XXX_Size() int

func (*RouteFeeResponse) XXX_Unmarshal

func (m *RouteFeeResponse) XXX_Unmarshal(b []byte) error

type RouterBackend

type RouterBackend struct {
	// MaxPaymentMSat is the largest payment permitted by the backend.
	MaxPaymentMSat lnwire.MilliSatoshi

	// SelfNode is the vertex of the node sending the payment.
	SelfNode route.Vertex

	// FetchChannelCapacity is a closure that we'll use the fetch the total
	// capacity of a channel to populate in responses.
	FetchChannelCapacity func(chanID uint64) (btcutil.Amount, error)

	// FetchChannelEndpoints returns the pubkeys of both endpoints of the
	// given channel id.
	FetchChannelEndpoints func(chanID uint64) (route.Vertex,
		route.Vertex, error)

	// FindRoutes is a closure that abstracts away how we locate/query for
	// routes.
	FindRoute func(source, target route.Vertex,
		amt lnwire.MilliSatoshi, restrictions *routing.RestrictParams,
		destCustomRecords record.CustomSet,
		routeHints map[route.Vertex][]*channeldb.ChannelEdgePolicy,
		finalExpiry uint16) (*route.Route, error)

	MissionControl MissionControl

	// ActiveNetParams are the network parameters of the primary network
	// that the route is operating on. This is necessary so we can ensure
	// that we receive payment requests that send to destinations on our
	// network.
	ActiveNetParams *chaincfg.Params

	// Tower is the ControlTower instance that is used to track pending
	// payments.
	Tower routing.ControlTower

	// MaxTotalTimelock is the maximum total time lock a route is allowed to
	// have.
	MaxTotalTimelock uint32

	// DefaultFinalCltvDelta is the default value used as final cltv delta
	// when an RPC caller doesn't specify a value.
	DefaultFinalCltvDelta uint16
}

RouterBackend contains the backend implementation of the router rpc sub server calls.

func (*RouterBackend) MarshalHTLCAttempt

func (r *RouterBackend) MarshalHTLCAttempt(
	htlc channeldb.HTLCAttempt) (*lnrpc.HTLCAttempt, error)

MarshalHTLCAttempt constructs an RPC HTLCAttempt from the db representation.

func (*RouterBackend) MarshallRoute

func (r *RouterBackend) MarshallRoute(route *route.Route) (*lnrpc.Route, error)

MarshallRoute marshalls an internal route to an rpc route struct.

func (*RouterBackend) QueryRoutes

QueryRoutes attempts to query the daemons' Channel Router for a possible route to a target destination capable of carrying a specific amount of satoshis within the route's flow. The retuned route contains the full details required to craft and send an HTLC, also including the necessary information that should be present within the Sphinx packet encapsulated within the HTLC.

TODO(roasbeef): should return a slice of routes in reality * create separate PR to send based on well formatted route

func (*RouterBackend) UnmarshallHop

func (r *RouterBackend) UnmarshallHop(rpcHop *lnrpc.Hop,
	prevNodePubKey [33]byte) (*route.Hop, error)

UnmarshallHop unmarshalls an rpc hop that may or may not contain a node pubkey.

func (*RouterBackend) UnmarshallRoute

func (r *RouterBackend) UnmarshallRoute(rpcroute *lnrpc.Route) (
	*route.Route, error)

UnmarshallRoute unmarshalls an rpc route. For hops that don't specify a pubkey, the channel graph is queried.

type RouterClient

type RouterClient interface {
	//*
	//SendPayment attempts to route a payment described by the passed
	//PaymentRequest to the final destination. The call returns a stream of
	//payment status updates.
	SendPayment(ctx context.Context, in *SendPaymentRequest, opts ...grpc.CallOption) (Router_SendPaymentClient, error)
	//*
	//TrackPayment returns an update stream for the payment identified by the
	//payment hash.
	TrackPayment(ctx context.Context, in *TrackPaymentRequest, opts ...grpc.CallOption) (Router_TrackPaymentClient, error)
	//*
	//EstimateRouteFee allows callers to obtain a lower bound w.r.t how much it
	//may cost to send an HTLC to the target end destination.
	EstimateRouteFee(ctx context.Context, in *RouteFeeRequest, opts ...grpc.CallOption) (*RouteFeeResponse, error)
	//*
	//SendToRoute attempts to make a payment via the specified route. This method
	//differs from SendPayment in that it allows users to specify a full route
	//manually. This can be used for things like rebalancing, and atomic swaps.
	SendToRoute(ctx context.Context, in *SendToRouteRequest, opts ...grpc.CallOption) (*SendToRouteResponse, error)
	//*
	//ResetMissionControl clears all mission control state and starts with a clean
	//slate.
	ResetMissionControl(ctx context.Context, in *ResetMissionControlRequest, opts ...grpc.CallOption) (*ResetMissionControlResponse, error)
	//*
	//QueryMissionControl exposes the internal mission control state to callers.
	//It is a development feature.
	QueryMissionControl(ctx context.Context, in *QueryMissionControlRequest, opts ...grpc.CallOption) (*QueryMissionControlResponse, error)
	//*
	//QueryProbability returns the current success probability estimate for a
	//given node pair and amount.
	QueryProbability(ctx context.Context, in *QueryProbabilityRequest, opts ...grpc.CallOption) (*QueryProbabilityResponse, error)
	//*
	//BuildRoute builds a fully specified route based on a list of hop public
	//keys. It retrieves the relevant channel policies from the graph in order to
	//calculate the correct fees and time locks.
	BuildRoute(ctx context.Context, in *BuildRouteRequest, opts ...grpc.CallOption) (*BuildRouteResponse, error)
}

RouterClient is the client API for Router service.

For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.

func NewRouterClient

func NewRouterClient(cc *grpc.ClientConn) RouterClient

type RouterServer

type RouterServer interface {
	//*
	//SendPayment attempts to route a payment described by the passed
	//PaymentRequest to the final destination. The call returns a stream of
	//payment status updates.
	SendPayment(*SendPaymentRequest, Router_SendPaymentServer) error
	//*
	//TrackPayment returns an update stream for the payment identified by the
	//payment hash.
	TrackPayment(*TrackPaymentRequest, Router_TrackPaymentServer) error
	//*
	//EstimateRouteFee allows callers to obtain a lower bound w.r.t how much it
	//may cost to send an HTLC to the target end destination.
	EstimateRouteFee(context.Context, *RouteFeeRequest) (*RouteFeeResponse, error)
	//*
	//SendToRoute attempts to make a payment via the specified route. This method
	//differs from SendPayment in that it allows users to specify a full route
	//manually. This can be used for things like rebalancing, and atomic swaps.
	SendToRoute(context.Context, *SendToRouteRequest) (*SendToRouteResponse, error)
	//*
	//ResetMissionControl clears all mission control state and starts with a clean
	//slate.
	ResetMissionControl(context.Context, *ResetMissionControlRequest) (*ResetMissionControlResponse, error)
	//*
	//QueryMissionControl exposes the internal mission control state to callers.
	//It is a development feature.
	QueryMissionControl(context.Context, *QueryMissionControlRequest) (*QueryMissionControlResponse, error)
	//*
	//QueryProbability returns the current success probability estimate for a
	//given node pair and amount.
	QueryProbability(context.Context, *QueryProbabilityRequest) (*QueryProbabilityResponse, error)
	//*
	//BuildRoute builds a fully specified route based on a list of hop public
	//keys. It retrieves the relevant channel policies from the graph in order to
	//calculate the correct fees and time locks.
	BuildRoute(context.Context, *BuildRouteRequest) (*BuildRouteResponse, error)
}

RouterServer is the server API for Router service.

type Router_SendPaymentClient

type Router_SendPaymentClient interface {
	Recv() (*PaymentStatus, error)
	grpc.ClientStream
}

type Router_SendPaymentServer

type Router_SendPaymentServer interface {
	Send(*PaymentStatus) error
	grpc.ServerStream
}

type Router_TrackPaymentClient

type Router_TrackPaymentClient interface {
	Recv() (*PaymentStatus, error)
	grpc.ClientStream
}

type Router_TrackPaymentServer

type Router_TrackPaymentServer interface {
	Send(*PaymentStatus) error
	grpc.ServerStream
}

type RoutingConfig

type RoutingConfig struct {
	// MinRouteProbability is the minimum required route success probability
	// to attempt the payment.
	MinRouteProbability float64 `long:"minrtprob" description:"Minimum required route success probability to attempt the payment"`

	// AprioriHopProbability is the assumed success probability of a hop in
	// a route when no other information is available.
	AprioriHopProbability float64 `long:"apriorihopprob" description:"Assumed success probability of a hop in a route when no other information is available."`

	// AprioriWeight is a value in the range [0, 1] that defines to what
	// extent historical results should be extrapolated to untried
	// connections. Setting it to one will completely ignore historical
	// results and always assume the configured a priori probability for
	// untried connections. A value of zero will ignore the a priori
	// probability completely and only base the probability on historical
	// results, unless there are none available.
	AprioriWeight float64 `` /* 132-byte string literal not displayed */

	// PenaltyHalfLife defines after how much time a penalized node or
	// channel is back at 50% probability.
	PenaltyHalfLife time.Duration `long:"penaltyhalflife" description:"Defines the duration after which a penalized node or channel is back at 50% probability"`

	// AttemptCost is the virtual cost in path finding weight units of
	// executing a payment attempt that fails. It is used to trade off
	// potentially better routes against their probability of succeeding.
	AttemptCost btcutil.Amount `long:"attemptcost" description:"The (virtual) cost in sats of a failed payment attempt"`

	// MaxMcHistory defines the maximum number of payment results that
	// are held on disk by mission control.
	MaxMcHistory int `long:"maxmchistory" description:"the maximum number of payment results that are held on disk by mission control"`
}

RoutingConfig contains the configurable parameters that control routing.

func GetRoutingConfig

func GetRoutingConfig(cfg *Config) *RoutingConfig

GetRoutingConfig returns the routing config based on this sub server config.

type SendPaymentRequest

type SendPaymentRequest struct {
	/// The identity pubkey of the payment recipient
	Dest []byte `protobuf:"bytes,1,opt,name=dest,proto3" json:"dest,omitempty"`
	//*
	//Number of satoshis to send.
	//
	//The fields amt and amt_msat are mutually exclusive.
	Amt int64 `protobuf:"varint,2,opt,name=amt,proto3" json:"amt,omitempty"`
	//*
	//Number of millisatoshis to send.
	//
	//The fields amt and amt_msat are mutually exclusive.
	AmtMsat int64 `protobuf:"varint,12,opt,name=amt_msat,json=amtMsat,proto3" json:"amt_msat,omitempty"`
	/// The hash to use within the payment's HTLC
	PaymentHash []byte `protobuf:"bytes,3,opt,name=payment_hash,json=paymentHash,proto3" json:"payment_hash,omitempty"`
	//*
	//The CLTV delta from the current height that should be used to set the
	//timelock for the final hop.
	FinalCltvDelta int32 `protobuf:"varint,4,opt,name=final_cltv_delta,json=finalCltvDelta,proto3" json:"final_cltv_delta,omitempty"`
	//*
	//A bare-bones invoice for a payment within the Lightning Network.  With the
	//details of the invoice, the sender has all the data necessary to send a
	//payment to the recipient. The amount in the payment request may be zero. In
	//that case it is required to set the amt field as well. If no payment request
	//is specified, the following fields are required: dest, amt and payment_hash.
	PaymentRequest string `protobuf:"bytes,5,opt,name=payment_request,json=paymentRequest,proto3" json:"payment_request,omitempty"`
	//*
	//An upper limit on the amount of time we should spend when attempting to
	//fulfill the payment. This is expressed in seconds. If we cannot make a
	//successful payment within this time frame, an error will be returned.
	//This field must be non-zero.
	TimeoutSeconds int32 `protobuf:"varint,6,opt,name=timeout_seconds,json=timeoutSeconds,proto3" json:"timeout_seconds,omitempty"`
	//*
	//The maximum number of satoshis that will be paid as a fee of the payment.
	//If this field is left to the default value of 0, only zero-fee routes will
	//be considered. This usually means single hop routes connecting directly to
	//the destination. To send the payment without a fee limit, use max int here.
	//
	//The fields fee_limit_sat and fee_limit_msat are mutually exclusive.
	FeeLimitSat int64 `protobuf:"varint,7,opt,name=fee_limit_sat,json=feeLimitSat,proto3" json:"fee_limit_sat,omitempty"`
	//*
	//The maximum number of millisatoshis that will be paid as a fee of the
	//payment. If this field is left to the default value of 0, only zero-fee
	//routes will be considered. This usually means single hop routes connecting
	//directly to the destination. To send the payment without a fee limit, use
	//max int here.
	//
	//The fields fee_limit_sat and fee_limit_msat are mutually exclusive.
	FeeLimitMsat int64 `protobuf:"varint,13,opt,name=fee_limit_msat,json=feeLimitMsat,proto3" json:"fee_limit_msat,omitempty"`
	//*
	//The channel id of the channel that must be taken to the first hop. If zero,
	//any channel may be used.
	OutgoingChanId uint64 `protobuf:"varint,8,opt,name=outgoing_chan_id,json=outgoingChanId,proto3" json:"outgoing_chan_id,omitempty"`
	//*
	//The pubkey of the last hop of the route. If empty, any hop may be used.
	LastHopPubkey []byte `protobuf:"bytes,14,opt,name=last_hop_pubkey,json=lastHopPubkey,proto3" json:"last_hop_pubkey,omitempty"`
	//*
	//An optional maximum total time lock for the route. This should not exceed
	//lnd's `--max-cltv-expiry` setting. If zero, then the value of
	//`--max-cltv-expiry` is enforced.
	CltvLimit int32 `protobuf:"varint,9,opt,name=cltv_limit,json=cltvLimit,proto3" json:"cltv_limit,omitempty"`
	//*
	//Optional route hints to reach the destination through private channels.
	RouteHints []*lnrpc.RouteHint `protobuf:"bytes,10,rep,name=route_hints,proto3" json:"route_hints,omitempty"`
	//*
	//An optional field that can be used to pass an arbitrary set of TLV records
	//to a peer which understands the new records. This can be used to pass
	//application specific data during the payment attempt. Record types are
	//required to be in the custom range >= 65536. When using REST, the values
	//must be encoded as base64.
	DestCustomRecords map[uint64][]byte `` /* 204-byte string literal not displayed */
	/// If set, circular payments to self are permitted.
	AllowSelfPayment bool `protobuf:"varint,15,opt,name=allow_self_payment,json=allowSelfPayment,proto3" json:"allow_self_payment,omitempty"`
	//*
	//Features assumed to be supported by the final node. All transitive feature
	//depdencies must also be set properly. For a given feature bit pair, either
	//optional or remote may be set, but not both. If this field is nil or empty,
	//the router will try to load destination features from the graph as a
	//fallback.
	DestFeatures         []lnrpc.FeatureBit `` /* 128-byte string literal not displayed */
	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
	XXX_unrecognized     []byte             `json:"-"`
	XXX_sizecache        int32              `json:"-"`
}

func (*SendPaymentRequest) Descriptor

func (*SendPaymentRequest) Descriptor() ([]byte, []int)

func (*SendPaymentRequest) GetAllowSelfPayment

func (m *SendPaymentRequest) GetAllowSelfPayment() bool

func (*SendPaymentRequest) GetAmt

func (m *SendPaymentRequest) GetAmt() int64

func (*SendPaymentRequest) GetAmtMsat

func (m *SendPaymentRequest) GetAmtMsat() int64

func (*SendPaymentRequest) GetCltvLimit

func (m *SendPaymentRequest) GetCltvLimit() int32

func (*SendPaymentRequest) GetDest

func (m *SendPaymentRequest) GetDest() []byte

func (*SendPaymentRequest) GetDestCustomRecords

func (m *SendPaymentRequest) GetDestCustomRecords() map[uint64][]byte

func (*SendPaymentRequest) GetDestFeatures

func (m *SendPaymentRequest) GetDestFeatures() []lnrpc.FeatureBit

func (*SendPaymentRequest) GetFeeLimitMsat

func (m *SendPaymentRequest) GetFeeLimitMsat() int64

func (*SendPaymentRequest) GetFeeLimitSat

func (m *SendPaymentRequest) GetFeeLimitSat() int64

func (*SendPaymentRequest) GetFinalCltvDelta

func (m *SendPaymentRequest) GetFinalCltvDelta() int32

func (*SendPaymentRequest) GetLastHopPubkey

func (m *SendPaymentRequest) GetLastHopPubkey() []byte

func (*SendPaymentRequest) GetOutgoingChanId

func (m *SendPaymentRequest) GetOutgoingChanId() uint64

func (*SendPaymentRequest) GetPaymentHash

func (m *SendPaymentRequest) GetPaymentHash() []byte

func (*SendPaymentRequest) GetPaymentRequest

func (m *SendPaymentRequest) GetPaymentRequest() string

func (*SendPaymentRequest) GetRouteHints

func (m *SendPaymentRequest) GetRouteHints() []*lnrpc.RouteHint

func (*SendPaymentRequest) GetTimeoutSeconds

func (m *SendPaymentRequest) GetTimeoutSeconds() int32

func (*SendPaymentRequest) ProtoMessage

func (*SendPaymentRequest) ProtoMessage()

func (*SendPaymentRequest) Reset

func (m *SendPaymentRequest) Reset()

func (*SendPaymentRequest) String

func (m *SendPaymentRequest) String() string

func (*SendPaymentRequest) XXX_DiscardUnknown

func (m *SendPaymentRequest) XXX_DiscardUnknown()

func (*SendPaymentRequest) XXX_Marshal

func (m *SendPaymentRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*SendPaymentRequest) XXX_Merge

func (m *SendPaymentRequest) XXX_Merge(src proto.Message)

func (*SendPaymentRequest) XXX_Size

func (m *SendPaymentRequest) XXX_Size() int

func (*SendPaymentRequest) XXX_Unmarshal

func (m *SendPaymentRequest) XXX_Unmarshal(b []byte) error

type SendToRouteRequest

type SendToRouteRequest struct {
	/// The payment hash to use for the HTLC.
	PaymentHash []byte `protobuf:"bytes,1,opt,name=payment_hash,json=paymentHash,proto3" json:"payment_hash,omitempty"`
	/// Route that should be used to attempt to complete the payment.
	Route                *lnrpc.Route `protobuf:"bytes,2,opt,name=route,proto3" json:"route,omitempty"`
	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
	XXX_unrecognized     []byte       `json:"-"`
	XXX_sizecache        int32        `json:"-"`
}

func (*SendToRouteRequest) Descriptor

func (*SendToRouteRequest) Descriptor() ([]byte, []int)

func (*SendToRouteRequest) GetPaymentHash

func (m *SendToRouteRequest) GetPaymentHash() []byte

func (*SendToRouteRequest) GetRoute

func (m *SendToRouteRequest) GetRoute() *lnrpc.Route

func (*SendToRouteRequest) ProtoMessage

func (*SendToRouteRequest) ProtoMessage()

func (*SendToRouteRequest) Reset

func (m *SendToRouteRequest) Reset()

func (*SendToRouteRequest) String

func (m *SendToRouteRequest) String() string

func (*SendToRouteRequest) XXX_DiscardUnknown

func (m *SendToRouteRequest) XXX_DiscardUnknown()

func (*SendToRouteRequest) XXX_Marshal

func (m *SendToRouteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*SendToRouteRequest) XXX_Merge

func (m *SendToRouteRequest) XXX_Merge(src proto.Message)

func (*SendToRouteRequest) XXX_Size

func (m *SendToRouteRequest) XXX_Size() int

func (*SendToRouteRequest) XXX_Unmarshal

func (m *SendToRouteRequest) XXX_Unmarshal(b []byte) error

type SendToRouteResponse

type SendToRouteResponse struct {
	/// The preimage obtained by making the payment.
	Preimage []byte `protobuf:"bytes,1,opt,name=preimage,proto3" json:"preimage,omitempty"`
	/// The failure message in case the payment failed.
	Failure              *Failure `protobuf:"bytes,2,opt,name=failure,proto3" json:"failure,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (*SendToRouteResponse) Descriptor

func (*SendToRouteResponse) Descriptor() ([]byte, []int)

func (*SendToRouteResponse) GetFailure

func (m *SendToRouteResponse) GetFailure() *Failure

func (*SendToRouteResponse) GetPreimage

func (m *SendToRouteResponse) GetPreimage() []byte

func (*SendToRouteResponse) ProtoMessage

func (*SendToRouteResponse) ProtoMessage()

func (*SendToRouteResponse) Reset

func (m *SendToRouteResponse) Reset()

func (*SendToRouteResponse) String

func (m *SendToRouteResponse) String() string

func (*SendToRouteResponse) XXX_DiscardUnknown

func (m *SendToRouteResponse) XXX_DiscardUnknown()

func (*SendToRouteResponse) XXX_Marshal

func (m *SendToRouteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*SendToRouteResponse) XXX_Merge

func (m *SendToRouteResponse) XXX_Merge(src proto.Message)

func (*SendToRouteResponse) XXX_Size

func (m *SendToRouteResponse) XXX_Size() int

func (*SendToRouteResponse) XXX_Unmarshal

func (m *SendToRouteResponse) XXX_Unmarshal(b []byte) error

type TrackPaymentRequest

type TrackPaymentRequest struct {
	/// The hash of the payment to look up.
	PaymentHash          []byte   `protobuf:"bytes,1,opt,name=payment_hash,json=paymentHash,proto3" json:"payment_hash,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (*TrackPaymentRequest) Descriptor

func (*TrackPaymentRequest) Descriptor() ([]byte, []int)

func (*TrackPaymentRequest) GetPaymentHash

func (m *TrackPaymentRequest) GetPaymentHash() []byte

func (*TrackPaymentRequest) ProtoMessage

func (*TrackPaymentRequest) ProtoMessage()

func (*TrackPaymentRequest) Reset

func (m *TrackPaymentRequest) Reset()

func (*TrackPaymentRequest) String

func (m *TrackPaymentRequest) String() string

func (*TrackPaymentRequest) XXX_DiscardUnknown

func (m *TrackPaymentRequest) XXX_DiscardUnknown()

func (*TrackPaymentRequest) XXX_Marshal

func (m *TrackPaymentRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*TrackPaymentRequest) XXX_Merge

func (m *TrackPaymentRequest) XXX_Merge(src proto.Message)

func (*TrackPaymentRequest) XXX_Size

func (m *TrackPaymentRequest) XXX_Size() int

func (*TrackPaymentRequest) XXX_Unmarshal

func (m *TrackPaymentRequest) XXX_Unmarshal(b []byte) error

Jump to

Keyboard shortcuts

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