record

package
v0.18.0-beta.1 Latest Latest
Warning

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

Go to latest
Published: May 30, 2024 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// AmtOnionType is the type used in the onion to reference the amount to
	// send to the next hop.
	AmtOnionType tlv.Type = 2

	// LockTimeTLV is the type used in the onion to reference the CLTV
	// value that should be used for the next hop's HTLC.
	LockTimeOnionType tlv.Type = 4

	// NextHopOnionType is the type used in the onion to reference the ID
	// of the next hop.
	NextHopOnionType tlv.Type = 6

	// EncryptedDataOnionType is the type used to include encrypted data
	// provided by the receiver in the onion for use in blinded paths.
	EncryptedDataOnionType tlv.Type = 10

	// BlindingPointOnionType is the type used to include receiver provided
	// ephemeral keys in the onion that are used in blinded paths.
	BlindingPointOnionType tlv.Type = 12

	// MetadataOnionType is the type used in the onion for the payment
	// metadata.
	MetadataOnionType tlv.Type = 16

	// TotalAmtMsatBlindedType is the type used in the onion for the total
	// amount field that is included in the final hop for blinded payments.
	TotalAmtMsatBlindedType tlv.Type = 18
)
View Source
const AMPOnionType tlv.Type = 14

AMPOnionType is the type used in the onion to reference the AMP fields: root_share, set_id, and child_index.

View Source
const (
	// CustomTypeStart is the start of the custom tlv type range as defined
	// in BOLT 01.
	CustomTypeStart = 65536
)
View Source
const (
	// KeySendType is the custom record identifier for keysend preimages.
	KeySendType uint64 = 5482373484
)
View Source
const MPPOnionType tlv.Type = 8

MPPOnionType is the type used in the onion to reference the MPP fields: total_amt and payment_addr.

Variables

View Source
var MaxAmpPayLoadSize = AMP{
	// contains filtered or unexported fields
}

MaxAmpPayLoadSize is an AMP Record which when serialized to a tlv record uses the maximum payload size. The `childIndex` is created randomly and is a 4 byte `varint` type so we make sure we use an index which will be encoded in 4 bytes.

Functions

func AMPDecoder

func AMPDecoder(r io.Reader, val interface{}, buf *[8]byte, l uint64) error

AMPDecoder reads the AMP record from the provided io.Reader.

func AMPEncoder

func AMPEncoder(w io.Writer, val interface{}, buf *[8]byte) error

AMPEncoder writes the AMP record to the provided io.Writer.

func EncodeBlindedRouteData

func EncodeBlindedRouteData(data *BlindedRouteData) ([]byte, error)

EncodeBlindedRouteData encodes the blinded route data provided.

func MPPDecoder

func MPPDecoder(r io.Reader, val interface{}, buf *[8]byte, l uint64) error

MPPDecoder reads the MPP record to the provided io.Reader.

func MPPEncoder

func MPPEncoder(w io.Writer, val interface{}, buf *[8]byte) error

MPPEncoder writes the MPP record to the provided io.Writer.

func NewAmtToFwdRecord

func NewAmtToFwdRecord(amt *uint64) tlv.Record

NewAmtToFwdRecord creates a tlv.Record that encodes the amount_to_forward (type 2) for an onion payload.

func NewBlindingPointRecord

func NewBlindingPointRecord(point **btcec.PublicKey) tlv.Record

NewBlindingPointRecord creates a tlv.Record that encodes the blinding_point (type 12) record for an onion payload.

func NewEncryptedDataRecord

func NewEncryptedDataRecord(data *[]byte) tlv.Record

NewEncryptedDataRecord creates a tlv.Record that encodes the encrypted_data (type 10) record for an onion payload.

func NewLockTimeRecord

func NewLockTimeRecord(lockTime *uint32) tlv.Record

NewLockTimeRecord creates a tlv.Record that encodes the outgoing_cltv_value (type 4) for an onion payload.

func NewMetadataRecord

func NewMetadataRecord(metadata *[]byte) tlv.Record

NewMetadataRecord creates a tlv.Record that encodes the metadata (type 10) for an onion payload.

func NewNextHopIDRecord

func NewNextHopIDRecord(cid *uint64) tlv.Record

NewNextHopIDRecord creates a tlv.Record that encodes the short_channel_id (type 6) for an onion payload.

func NewTotalAmtMsatBlinded

func NewTotalAmtMsatBlinded(amt *uint64) tlv.Record

NewTotalAmtMsatBlinded creates a tlv.Record that encodes the total_amount_msat for the final an onion payload within a blinded route.

Types

type AMP

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

AMP is a record that encodes the fields necessary for atomic multi-path payments.

func NewAMP

func NewAMP(rootShare, setID [32]byte, childIndex uint32) *AMP

NewAMP generate a new AMP record with the given root_share, set_id, and child_index.

func (*AMP) ChildIndex

func (a *AMP) ChildIndex() uint32

ChildIndex returns the child index contained in the AMP record.

func (*AMP) PayloadSize

func (a *AMP) PayloadSize() uint64

PayloadSize returns the size this record takes up in encoded form.

func (*AMP) Record

func (a *AMP) Record() tlv.Record

Record returns a tlv.Record that can be used to encode or decode this record.

func (*AMP) RootShare

func (a *AMP) RootShare() [32]byte

RootShare returns the root share contained in the AMP record.

func (*AMP) SetID

func (a *AMP) SetID() [32]byte

SetID returns the set id contained in the AMP record.

func (*AMP) String

func (a *AMP) String() string

String returns a human-readable description of the amp payload fields.

type BlindedRouteData

type BlindedRouteData struct {
	// ShortChannelID is the channel ID of the next hop.
	ShortChannelID tlv.RecordT[tlv.TlvType2, lnwire.ShortChannelID]

	// NextBlindingOverride is a blinding point that should be switched
	// in for the next hop. This is used to combine two blinded paths into
	// one (which primarily is used in onion messaging, but in theory
	// could be used for payments as well).
	NextBlindingOverride tlv.OptionalRecordT[tlv.TlvType8, *btcec.PublicKey]

	// RelayInfo provides the relay parameters for the hop.
	RelayInfo tlv.RecordT[tlv.TlvType10, PaymentRelayInfo]

	// Constraints provides the payment relay constraints for the hop.
	Constraints tlv.OptionalRecordT[tlv.TlvType12, PaymentConstraints]

	// Features is the set of features the payment requires.
	Features tlv.OptionalRecordT[tlv.TlvType14, lnwire.FeatureVector]
}

BlindedRouteData contains the information that is included in a blinded route encrypted data blob that is created by the recipient to provide forwarding information.

func DecodeBlindedRouteData

func DecodeBlindedRouteData(r io.Reader) (*BlindedRouteData, error)

DecodeBlindedRouteData decodes the data provided within a blinded route.

func NewBlindedRouteData

func NewBlindedRouteData(chanID lnwire.ShortChannelID,
	blindingOverride *btcec.PublicKey, relayInfo PaymentRelayInfo,
	constraints *PaymentConstraints,
	features *lnwire.FeatureVector) *BlindedRouteData

NewBlindedRouteData creates the data that's provided for hops within a blinded route.

type CustomSet

type CustomSet map[uint64][]byte

CustomSet stores a set of custom key/value pairs.

func (CustomSet) Validate

func (c CustomSet) Validate() error

Validate checks that all custom records are in the custom type range.

type MPP

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

MPP is a record that encodes the fields necessary for multi-path payments.

func NewMPP

func NewMPP(total lnwire.MilliSatoshi, addr [32]byte) *MPP

NewMPP generates a new MPP record with the given total and payment address.

func (*MPP) PayloadSize

func (r *MPP) PayloadSize() uint64

PayloadSize returns the size this record takes up in encoded form.

func (*MPP) PaymentAddr

func (r *MPP) PaymentAddr() [32]byte

PaymentAddr returns the payment address contained in the MPP record.

func (*MPP) Record

func (r *MPP) Record() tlv.Record

Record returns a tlv.Record that can be used to encode or decode this record.

func (*MPP) String

func (r *MPP) String() string

String returns a human-readable representation of the mpp payload field.

func (*MPP) TotalMsat

func (r *MPP) TotalMsat() lnwire.MilliSatoshi

TotalMsat returns the total value of an MPP payment in msats.

type PaymentConstraints

type PaymentConstraints struct {
	// MaxCltvExpiry is the maximum expiry height for the payment.
	MaxCltvExpiry uint32

	// HtlcMinimumMsat is the minimum htlc size for the payment.
	HtlcMinimumMsat lnwire.MilliSatoshi
}

PaymentConstraints is a set of restrictions on a payment.

func (*PaymentConstraints) Record

func (p *PaymentConstraints) Record() tlv.Record

type PaymentRelayInfo

type PaymentRelayInfo struct {
	// CltvExpiryDelta is the expiry delta for the payment.
	CltvExpiryDelta uint16

	// FeeRate is the fee rate that will be charged per millionth of a
	// satoshi.
	FeeRate uint32

	// BaseFee is the per-htlc fee charged.
	BaseFee uint32
}

PaymentRelayInfo describes the relay policy for a blinded path.

func (*PaymentRelayInfo) Record

func (i *PaymentRelayInfo) Record() tlv.Record

newPaymentRelayRecord creates a tlv.Record that encodes the payment relay (type 10) type for an encrypted blob payload.

Jump to

Keyboard shortcuts

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