From 239103c2b394001cca57c59ef42f844bd2e90d84 Mon Sep 17 00:00:00 2001 From: Keagan McClelland Date: Wed, 13 Dec 2023 15:56:33 -0800 Subject: [PATCH] multi: make tlv onion compulsory --- channeldb/invoice_test.go | 4 ++-- feature/default_sets.go | 2 +- feature/deps_test.go | 10 +++++----- feature/manager_internal_test.go | 3 ++- invoices/invoiceregistry.go | 12 ++++++------ invoices/invoiceregistry_test.go | 4 ++-- routing/integrated_routing_context_test.go | 12 +++++++----- routing/integrated_routing_test.go | 2 +- routing/pathfind_test.go | 6 +++--- 9 files changed, 29 insertions(+), 26 deletions(-) diff --git a/channeldb/invoice_test.go b/channeldb/invoice_test.go index 262ad402c..3f189c8fa 100644 --- a/channeldb/invoice_test.go +++ b/channeldb/invoice_test.go @@ -24,7 +24,7 @@ var ( emptyFeatures = lnwire.NewFeatureVector(nil, lnwire.Features) ampFeatures = lnwire.NewFeatureVector( lnwire.NewRawFeatureVector( - lnwire.TLVOnionPayloadOptional, + lnwire.TLVOnionPayloadRequired, lnwire.PaymentAddrOptional, lnwire.AMPRequired, ), @@ -3158,7 +3158,7 @@ func TestAddInvoiceInvalidFeatureDeps(t *testing.T) { invoice.Terms.Features = lnwire.NewFeatureVector( lnwire.NewRawFeatureVector( - lnwire.TLVOnionPayloadOptional, + lnwire.TLVOnionPayloadRequired, lnwire.MPPOptional, ), lnwire.Features, diff --git a/feature/default_sets.go b/feature/default_sets.go index 4227691aa..3b7e0f7ea 100644 --- a/feature/default_sets.go +++ b/feature/default_sets.go @@ -18,7 +18,7 @@ var defaultSetDesc = setDesc{ SetInit: {}, // I SetNodeAnn: {}, // N }, - lnwire.TLVOnionPayloadOptional: { + lnwire.TLVOnionPayloadRequired: { SetInit: {}, // I SetNodeAnn: {}, // N SetInvoice: {}, // 9 diff --git a/feature/deps_test.go b/feature/deps_test.go index e1108fbe7..4116e6ea9 100644 --- a/feature/deps_test.go +++ b/feature/deps_test.go @@ -33,7 +33,7 @@ var depTests = []depTest{ { name: "one dep optional", raw: lnwire.NewRawFeatureVector( - lnwire.TLVOnionPayloadOptional, + lnwire.TLVOnionPayloadRequired, lnwire.PaymentAddrOptional, ), }, @@ -61,7 +61,7 @@ var depTests = []depTest{ { name: "two dep optional", raw: lnwire.NewRawFeatureVector( - lnwire.TLVOnionPayloadOptional, + lnwire.TLVOnionPayloadRequired, lnwire.PaymentAddrOptional, lnwire.MPPOptional, ), @@ -93,7 +93,7 @@ var depTests = []depTest{ { name: "two dep first missing optional", raw: lnwire.NewRawFeatureVector( - lnwire.TLVOnionPayloadOptional, + lnwire.TLVOnionPayloadRequired, lnwire.MPPOptional, ), expErr: ErrMissingFeatureDep{lnwire.PaymentAddrOptional}, @@ -110,7 +110,7 @@ var depTests = []depTest{ name: "forest optional", raw: lnwire.NewRawFeatureVector( lnwire.GossipQueriesOptional, - lnwire.TLVOnionPayloadOptional, + lnwire.TLVOnionPayloadRequired, lnwire.PaymentAddrOptional, lnwire.MPPOptional, ), @@ -128,7 +128,7 @@ var depTests = []depTest{ name: "broken forest optional", raw: lnwire.NewRawFeatureVector( lnwire.GossipQueriesOptional, - lnwire.TLVOnionPayloadOptional, + lnwire.TLVOnionPayloadRequired, lnwire.MPPOptional, ), expErr: ErrMissingFeatureDep{lnwire.PaymentAddrOptional}, diff --git a/feature/manager_internal_test.go b/feature/manager_internal_test.go index ee716fba0..365d0071c 100644 --- a/feature/manager_internal_test.go +++ b/feature/manager_internal_test.go @@ -19,7 +19,7 @@ var testSetDesc = setDesc{ lnwire.DataLossProtectRequired: { SetNodeAnn: {}, // I }, - lnwire.TLVOnionPayloadOptional: { + lnwire.TLVOnionPayloadRequired: { SetInit: {}, // I SetNodeAnn: {}, // N }, @@ -104,6 +104,7 @@ func testManager(t *testing.T, test managerTest) { // Assert that the manager properly unset the configured feature // bits from all sets. if test.cfg.NoTLVOnion { + assertUnset(lnwire.TLVOnionPayloadRequired) assertUnset(lnwire.TLVOnionPayloadOptional) } if test.cfg.NoStaticRemoteKey { diff --git a/invoices/invoiceregistry.go b/invoices/invoiceregistry.go index 806b7a5e6..de731b474 100644 --- a/invoices/invoiceregistry.go +++ b/invoices/invoiceregistry.go @@ -756,10 +756,10 @@ func (i *InvoiceRegistry) processKeySend(ctx invoiceUpdateCtx) error { // Create an invoice for the htlc amount. amt := ctx.amtPaid - // Set tlv optional feature vector on the invoice. Otherwise we wouldn't + // Set tlv required feature vector on the invoice. Otherwise we wouldn't // be able to pay to it with keysend. rawFeatures := lnwire.NewRawFeatureVector( - lnwire.TLVOnionPayloadOptional, + lnwire.TLVOnionPayloadRequired, ) features := lnwire.NewFeatureVector(rawFeatures, lnwire.Features) @@ -820,11 +820,11 @@ func (i *InvoiceRegistry) processAMP(ctx invoiceUpdateCtx) error { // record. amt := ctx.mpp.TotalMsat() - // Set the TLV and MPP optional features on the invoice. We'll also make - // the AMP features required so that it can't be paid by legacy or MPP - // htlcs. + // Set the TLV required and MPP optional features on the invoice. We'll + // also make the AMP features required so that it can't be paid by + // legacy or MPP htlcs. rawFeatures := lnwire.NewRawFeatureVector( - lnwire.TLVOnionPayloadOptional, + lnwire.TLVOnionPayloadRequired, lnwire.PaymentAddrOptional, lnwire.AMPRequired, ) diff --git a/invoices/invoiceregistry_test.go b/invoices/invoiceregistry_test.go index 03e58af36..a10842556 100644 --- a/invoices/invoiceregistry_test.go +++ b/invoices/invoiceregistry_test.go @@ -1460,7 +1460,7 @@ func TestSettleInvoicePaymentAddrRequired(t *testing.T) { Expiry: time.Hour, Features: lnwire.NewFeatureVector( lnwire.NewRawFeatureVector( - lnwire.TLVOnionPayloadOptional, + lnwire.TLVOnionPayloadRequired, lnwire.PaymentAddrRequired, ), lnwire.Features, @@ -1549,7 +1549,7 @@ func TestSettleInvoicePaymentAddrRequiredOptionalGrace(t *testing.T) { Expiry: time.Hour, Features: lnwire.NewFeatureVector( lnwire.NewRawFeatureVector( - lnwire.TLVOnionPayloadOptional, + lnwire.TLVOnionPayloadRequired, lnwire.PaymentAddrOptional, ), lnwire.Features, diff --git a/routing/integrated_routing_context_test.go b/routing/integrated_routing_context_test.go index d939dc16b..4215d3b25 100644 --- a/routing/integrated_routing_context_test.go +++ b/routing/integrated_routing_context_test.go @@ -181,11 +181,13 @@ func (c *integratedRoutingContext) testPayment(maxParts uint32, FeeLimit: lnwire.MaxMilliSatoshi, Target: c.target.pubkey, PaymentAddr: &paymentAddr, - DestFeatures: lnwire.NewFeatureVector(baseFeatureBits, nil), - Amount: c.amt, - CltvLimit: math.MaxUint32, - MaxParts: maxParts, - RouteHints: c.routeHints, + DestFeatures: lnwire.NewFeatureVector( + baseFeatureBits, lnwire.Features, + ), + Amount: c.amt, + CltvLimit: math.MaxUint32, + MaxParts: maxParts, + RouteHints: c.routeHints, } var paymentHash [32]byte diff --git a/routing/integrated_routing_test.go b/routing/integrated_routing_test.go index f4c99a9a1..0e873d664 100644 --- a/routing/integrated_routing_test.go +++ b/routing/integrated_routing_test.go @@ -379,7 +379,7 @@ func TestPaymentAddrOnlyNoSplit(t *testing.T) { twoPathGraph(ctx.graph, chanSize, chanSize) payAddrOnlyFeatures := []lnwire.FeatureBit{ - lnwire.TLVOnionPayloadOptional, + lnwire.TLVOnionPayloadRequired, lnwire.PaymentAddrOptional, } diff --git a/routing/pathfind_test.go b/routing/pathfind_test.go index a0dd1fa66..7c4f635df 100644 --- a/routing/pathfind_test.go +++ b/routing/pathfind_test.go @@ -60,7 +60,7 @@ var ( tlvFeatures = lnwire.NewFeatureVector( lnwire.NewRawFeatureVector( - lnwire.TLVOnionPayloadOptional, + lnwire.TLVOnionPayloadRequired, ), lnwire.Features, ) @@ -72,13 +72,13 @@ var ( tlvPayAddrFeatures = lnwire.NewFeatureVector( lnwire.NewRawFeatureVector( - lnwire.TLVOnionPayloadOptional, + lnwire.TLVOnionPayloadRequired, lnwire.PaymentAddrOptional, ), lnwire.Features, ) mppFeatures = lnwire.NewRawFeatureVector( - lnwire.TLVOnionPayloadOptional, + lnwire.TLVOnionPayloadRequired, lnwire.PaymentAddrOptional, lnwire.MPPOptional, )