htlcswitch+lnwallet: quarantine paymentDescriptor to lnwallet
The objective of this commit is to make paymentDescriptor a private data structure so we can quarantine it to the lnwallet package. To accomplish this we had to prevent it from leaking out via the arguments or return values of the public functions in lnwallet. This naturally had consequences for the htlcswitch package as we choose other mechanisms for tracking the data that paymentDescriptor was responsible for. Astoundingly, this was highly successful and allowed us to remove a ton of redundant code. The diff for this commit represents a substantial reduction in total lines of code as well as extraneous arguments and return values from key functions. This also sets the stage for future commits where we actually will be attempting to rid lnwallet of paymentDescriptor completely.
This commit is contained in:
5 files changed
+150
-148
No files matched your search
@@ -62,17 +62,17 @@ func (u updateType) String() string {
|
||||
}
|
||||
}
|
||||
|
||||
// PaymentDescriptor represents a commitment state update which either adds,
|
||||
// settles, or removes an HTLC. PaymentDescriptors encapsulate all necessary
|
||||
// paymentDescriptor represents a commitment state update which either adds,
|
||||
// settles, or removes an HTLC. paymentDescriptors encapsulate all necessary
|
||||
// metadata w.r.t to an HTLC, and additional data pairing a settle message to
|
||||
// the original added HTLC.
|
||||
//
|
||||
// TODO(roasbeef): LogEntry interface??
|
||||
// - need to separate attrs for cancel/add/settle/feeupdate
|
||||
type PaymentDescriptor struct {
|
||||
type paymentDescriptor struct {
|
||||
// ChanID is the ChannelID of the LightningChannel that this
|
||||
// PaymentDescriptor belongs to. We track this here so we can
|
||||
// reconstruct the Messages that this PaymentDescriptor is built from.
|
||||
// paymentDescriptor belongs to. We track this here so we can
|
||||
// reconstruct the Messages that this paymentDescriptor is built from.
|
||||
ChanID lnwire.ChannelID
|
||||
|
||||
// RHash is the payment hash for this HTLC. The HTLC can be settled iff
|
||||
@@ -170,7 +170,7 @@ type PaymentDescriptor struct {
|
||||
|
||||
// removeCommitHeight[Remote|Local] encodes the height of the
|
||||
// commitment which removed the parent pointer of this
|
||||
// PaymentDescriptor either due to a timeout or a settle. Once both
|
||||
// paymentDescriptor either due to a timeout or a settle. Once both
|
||||
// these heights are below the tail of both chains, the log entries can
|
||||
// safely be removed.
|
||||
removeCommitHeightRemote uint64
|
||||
@@ -199,7 +199,7 @@ type PaymentDescriptor struct {
|
||||
|
||||
// [our|their|]PkScript are the raw public key scripts that encodes the
|
||||
// redemption rules for this particular HTLC. These fields will only be
|
||||
// populated iff the EntryType of this PaymentDescriptor is Add.
|
||||
// populated iff the EntryType of this paymentDescriptor is Add.
|
||||
// ourPkScript is the ourPkScript from the context of our local
|
||||
// commitment chain. theirPkScript is the latest pkScript from the
|
||||
// context of the remote commitment chain.
|
||||
@@ -212,7 +212,7 @@ type PaymentDescriptor struct {
|
||||
theirPkScript []byte
|
||||
theirWitnessScript []byte
|
||||
|
||||
// EntryType denotes the exact type of the PaymentDescriptor. In the
|
||||
// EntryType denotes the exact type of the paymentDescriptor. In the
|
||||
// case of a Timeout, or Settle type, then the Parent field will point
|
||||
// into the log to the HTLC being modified.
|
||||
EntryType updateType
|
||||
@@ -232,11 +232,11 @@ type PaymentDescriptor struct {
|
||||
CustomRecords lnwire.CustomRecords
|
||||
}
|
||||
|
||||
// ToLogUpdate recovers the underlying LogUpdate from the paymentDescriptor.
|
||||
// toLogUpdate recovers the underlying LogUpdate from the paymentDescriptor.
|
||||
// This operation is lossy and will forget some extra information tracked by the
|
||||
// paymentDescriptor but the function is total in that all paymentDescriptors
|
||||
// can be converted back to LogUpdates.
|
||||
func (pd *PaymentDescriptor) ToLogUpdate() channeldb.LogUpdate {
|
||||
func (pd *paymentDescriptor) toLogUpdate() channeldb.LogUpdate {
|
||||
var msg lnwire.Message
|
||||
switch pd.EntryType {
|
||||
case Add:
|
||||
|
||||
Reference in new issue
Block a user