16548 Commits

Author SHA1 Message Date
Oliver Gugger
652ff81461
Merge pull request #8622 from lightningnetwork/aux-funding
[3/5]: multi: add new AuxFundingController for custom external funding flows
2024-05-27 15:26:13 +02:00
Oliver Gugger
a350ccd791
funding: inform aux controller about channel ready/finalize 2024-05-27 12:58:29 +02:00
Oliver Gugger
6b7849950a
multi: add tapscript root to gossip message 2024-05-27 12:58:29 +02:00
Olaoluwa Osuntokun
bf307d30d1
funding+lnwallet: finish hook up new aux funding flow
For the initiator, once we get the signal that the PSBT has been
finalized, we'll call into the aux funder to get the funding desc. For
the responder, once we receive the funding_created message, we'll do the
same.

We now also have local+remote aux leaves for the commitment transaction.

Some old TODO comments that in retrospect aren't required anymore are
removed as well.
2024-05-27 12:58:29 +02:00
Olaoluwa Osuntokun
26ab75852b
funding+lnwallet: only blind tapscript root early in funding flow
In this commit, we modify the aux funding work flow slightly. We won't
be able to generate the full AuxFundingDesc until both sides has
sent+received funding params. So we'll now only attempt to bind the
tapscript root as soon as we send+recv the open_channel message.

We'll now also make sure that we pass the tapscript root all the way
down into the musig2 session creation.
2024-05-27 12:58:29 +02:00
Olaoluwa Osuntokun
28cb4884ca
lnwallet: for PsbtIntent return the internal key in the POutput
We also add a new assertion to the itests to ensure the field is being properly set.
2024-05-27 12:58:28 +02:00
Olaoluwa Osuntokun
a841a9be30
lnwallet: add TaprootInternalKey method to ShimIntent
If this is a taproot channel, then we'll return the internal key which'll be useful to callers.
2024-05-27 12:58:28 +02:00
Olaoluwa Osuntokun
bb71c496f4
config+serer: add AuxFundingController as top level cfg option 2024-05-27 12:58:28 +02:00
Olaoluwa Osuntokun
2f6e7ef191
funding: create new AuxFundingController interface
In this commit, we make a new `AuxFundingController` interface capable of processing messages off the wire. In addition, we can use it to abstract away details w.r.t how we obtain a `AuxFundingDesc` for a given channel.

We'll now use this whenever we get a channel funding request, to make sure we pass along the custom state that a channel may require.
2024-05-27 12:58:28 +02:00
Olaoluwa Osuntokun
54bbc25d9a
lnwallet: use AuxFundingDesc to populate all custom chan info
With this commit, we'll now populate all the custom channel information within the OpenChannel and ChannelCommitment structs.
2024-05-22 18:24:52 +02:00
Olaoluwa Osuntokun
f2c2a82744
lnwallet: add new AuxFundingDesc struct
This struct will house all the information we'll need to do a class of custom channels that relies primarily on adding additional items to the tapscript root of the HTLC/commitment/funding outputs.
2024-05-22 18:24:52 +02:00
Olaoluwa Osuntokun
dd357fb847
funding: use atomic.Uint64 for chanIDNonce
This lets us get rid of the mutex usage there. We also shift the algo slightly to increment by 1, then use that as the next value, which plays nicer with the atomics.
2024-05-22 18:24:52 +02:00
Olaoluwa Osuntokun
8ba3f3a317
funding: add new type alias for PendingChanID = [32]byte
This'll be useful for new interface definitions that use the contents of the package.
2024-05-22 18:24:51 +02:00
Olaoluwa Osuntokun
5866287aae
multi: make MsgRouter available in the ImplementationCfg
With this commit, we allow the `MsgRouter` to be available in the `ImplementationCfg`. With this, programs outside of lnd itself are able to now hook into the message processing flow to direct handle custom messages, and even normal wire messages.
2024-05-22 18:24:51 +02:00
Olaoluwa Osuntokun
371e0148dc
peer: update readHandler to dispatch to msgRouter if set
Over time with this, we should be able to significantly reduce the size
of the peer.Brontide struct as we only need all those deps as the peer
needs to recognize and handle each incoming wire message itself.
2024-05-22 18:24:51 +02:00
Olaoluwa Osuntokun
e5e5da381d
log+protofsm: add new abstract message router
In this commit, we add a new abstract message router. Over time, the
goal is that this message router replaces the logic we currently have in
the readHandler (the giant switch for each message).

With this new abstraction, can reduce the responsibilities of the
readHandler to *just* reading messages off the wire and handing them off
to the msg router. The readHandler no longer needs to know *where* the
messages should go, or how they should be dispatched.

This will be used in tandem with the new `protofsm` module in an
upcoming PR implementing the new rbf-coop close.
2024-05-22 18:24:51 +02:00
Oliver Gugger
5d53431f59
Merge pull request #8665 from GeorgeTsagk/custom-sender-bandwidth-hint
routing: add TlvTrafficShaper to bandwidth hints
2024-05-22 18:24:08 +02:00
George Tsagkarelis
53e9f288ed
routing: use first hop records on path finding 2024-05-22 17:28:22 +02:00
George Tsagkarelis
a584b7585d
lnd: use impl cfg TlvTrafficShaper 2024-05-22 17:28:22 +02:00
George Tsagkarelis
37cbfea912
routing: add TlvTrafficShaper to bandwidth hints 2024-05-22 17:28:22 +02:00
George Tsagkarelis
ec7dc031c9
htlcswitch: expose custom channel blob from link 2024-05-22 17:28:22 +02:00
George Tsagkarelis
3c6d49775e
lnwallet: expose commitment blob from channel 2024-05-22 17:28:21 +02:00
Oliver Gugger
966f41f0c7
Merge pull request #8660 from GeorgeTsagk/interceptor-wire-records
Enhance `update_add_htlc` with remote peer's custom records
2024-05-22 17:27:50 +02:00
George Tsagkarelis
1b1969b9a3
itest: add interceptor wire records access test 2024-05-22 14:56:43 +02:00
George Tsagkarelis
a5fcf33082
lnrpc: add wire records fields to SendPayment & HtlcInterceptor 2024-05-22 14:45:43 +02:00
George Tsagkarelis
25b4066b17
multi: use wire records on payment and intercept flows 2024-05-22 14:44:18 +02:00
Oliver Gugger
b009db329f
Merge pull request #8509 from GeorgeTsagk/scid-alias-rpcs
Add more RPCs for scid aliases
2024-05-20 20:05:39 +02:00
George Tsagkarelis
d9a59c67c3
docs: update release notes 2024-05-20 18:50:36 +02:00
George Tsagkarelis
49f7207576
itest: add dynamic scid alias routing test 2024-05-20 18:50:36 +02:00
George Tsagkarelis
7ace55582b
aliasmgr: add alias lifecycle test 2024-05-20 18:50:36 +02:00
George Tsagkarelis
9d90485eeb
routerrpc: add XAddLocalChanAliases & XDeleteLocalChanAliases 2024-05-20 18:50:36 +02:00
George Tsagkarelis
5c1b568d3d
multi: refresh htlcswitch aliases on aliasmgr update 2024-05-20 18:50:36 +02:00
George Tsagkarelis
cc12fb3204
aliasmgr: add delete local alias method 2024-05-20 12:03:43 +02:00
Oliver Gugger
a908c579b4
Merge pull request #8633 from ffranr/8619-rpc+htlcswitch-add-htlc-transformation-capabilities-to-the-interceptor
rpc+htlcswitch: add htlc transformation capabilities to the interceptor
2024-05-16 16:42:32 +02:00
Oliver Gugger
03dceca835
multi: add incoming htlc amount to interceptor 2024-05-15 16:47:47 +01:00
ffranr
8025296bc1
itest: add itest for field modification HTLC interception response
Implement an integration test where an HTLC is intercepted and the
interception response modifies fields in the resultant p2p message.
2024-05-15 16:47:47 +01:00
ffranr
bd5de434ab
routerrpc: extend HTLC forward interceptor resp with modification fields
This commit extends the forward HTLC intercept response with fields that
can be used in conjunction with a `ResumeModified` action to modify the
intercepted HTLC p2p message.
2024-05-15 16:47:47 +01:00
ffranr
31ee27435a
htlcswitch: add resume modified HTLC action to switch
Introduce `ResumeModified` action to resume standard behavior of a p2p
message with optional modifications as specified by the client during
interception.
2024-05-15 16:47:10 +01:00
ffranr
406fbe243e
lnwire: specify random fields for UpdateFulfillHTLC message in fuzz test
This commit defines random fields for the `UpdateFulfillHTLC` message
as part of the encode/decode unit tests.
2024-05-15 16:47:10 +01:00
ffranr
5c3f7bec0f
lnwire: add encoding/decoding unit tests for UpdateFulfillHTLC message 2024-05-15 16:47:10 +01:00
ffranr
d247cc9498
lnwire: add custom records field to type UpdateFulfillHtlc
- Introduce the field `CustomRecords` to the type `UpdateFulfillHtlc`.
- Encode and decode the new field into the `ExtraData` field of the
`update_fulfill_htlc` wire message.
- Empty `ExtraData` field is set to `nil`.
2024-05-15 16:47:10 +01:00
ffranr
6fa2db0663
lnwire: rand CustomRecords for UpdateAddHTLC encode/decode fuzz test
This commit adds a random `CustomRecords` field to the `UpdateAddHTLC`
message encode/decode unit test.
2024-05-15 16:47:09 +01:00
ffranr
b93d2885e3
lnwire: add encoding/decoding unit tests for UpdateAddHtlc message 2024-05-15 16:47:09 +01:00
ffranr
2b3618c14d
lnwire: add custom records field to type UpdateAddHtlc
- Introduce the field `CustomRecords` to the type `UpdateAddHtlc`.
- Encode and decode the new field into the `ExtraData` field of
  the `update_add_htlc` wire message.
2024-05-15 16:47:09 +01:00
ffranr
41a5b9abf8
lnwire: add ExtraOpaqueData helper functions and methods
- Add instance constructor `NewExtraOpaqueDataFromTlvTypeMap`.
- Add method `Copy`.
- Add method `RecordProducers`.
2024-05-15 16:47:08 +01:00
ffranr
795aff5f42
lnwire: add unit tests for ExtraOpaqueData.PackRecords 2024-05-15 16:47:08 +01:00
ffranr
71c32511dd
lnwire: add type CustomRecords
This commit introduces the `CustomRecords` type in the `lnwire` package,
designed to hold arbitrary byte slices. Each entry in this map can
associate with TLV type values that are greater than or equal to 65536.
2024-05-15 16:47:08 +01:00
ffranr
8b1d9c9248
htlcswitch: add missing method doc 2024-05-14 11:57:17 +01:00
ffranr
043f6963e8
multi: improve comment grammar 2024-05-14 11:57:16 +01:00
Oliver Gugger
81970eac6a
Merge pull request #8684 from lightningnetwork/aux-leaf-fetcher
[2/?]: lnwallet+channeldb: add new AuxLeafStore for dynamic aux leaves
2024-05-01 15:51:11 +02:00