Commit graph

16743 commits

Author SHA1 Message Date
Olaoluwa Osuntokun
daa9226dae
peer: decorate delivery addr w/ internal key
In this commit, we move to add the internal key to the delivery addr. This way, we give the aux chan closer the extra information it may need to properly augment the normal co-op close process.
2024-06-04 16:06:04 +02:00
Olaoluwa Osuntokun
fed81436d0
server+peer: init peer struct w/ AuxChanCloser if present 2024-06-03 11:33:36 +02:00
Olaoluwa Osuntokun
3262c45266
contractcourt: fix taproot coop close db record bug
In this commit, we fix an issue with co-op closes for taproot channels. Before this commit, we'd think that the remote party broadcasted a state very far in the future, and try to execute DLP. The wallet would properly credit the settled funds, but we'd mark the close in the DB as a force close.

To fix this, we also watch for the RBF sequence number we use in this scenario.
2024-06-03 11:33:36 +02:00
Olaoluwa Osuntokun
e7747442d3
lnwallet: modify CoopCloseBalance to not depend on chan commit 2024-06-03 11:33:36 +02:00
Olaoluwa Osuntokun
c76376594b
lnwallet/chancloser: add aux chan closer, use in coop flow 2024-06-03 11:33:36 +02:00
Olaoluwa Osuntokun
db373c5da9
lnwallet/chancloser: add new AuxChanCloser interface 2024-06-03 11:33:35 +02:00
Olaoluwa Osuntokun
a7c8595d2b
lnwallet: add ability to do custom sort for coop close txn 2024-06-03 11:33:35 +02:00
Olaoluwa Osuntokun
7ee24fcb13
lnwallet: add ability to add extra co-op close outputs 2024-06-03 11:33:35 +02:00
Olaoluwa Osuntokun
73407be75d
lnwallet: add FundingBlob method to LightningChannel 2024-06-03 11:33:35 +02:00
Olaoluwa Osuntokun
21cb454664
lnwire: add CustomRecords to shutdown message 2024-06-03 11:33:35 +02:00
Oliver Gugger
1f86f38f36
Merge remote-tracking branch 'origin/master' into 0-19-staging 2024-05-28 13:55:23 +02:00
Oliver Gugger
e4e04b6a0d
Merge pull request #8771 from lightningnetwork/custom-channels-integration-invoice
[6/5]: invoice+rpc: add exit hop InvoiceAcceptor sub-systems and RPC calls
2024-05-28 11:49:59 +02:00
ffranr
197b291aae
multi: pass UpdateAddHtlc message custom records to invoice modifier 2024-05-28 08:07:47 +02:00
Olaoluwa Osuntokun
ff85328050
Merge pull request #8774 from yyforyongyu/fix-size-calc
lnwallet+sweep: fix wrong unit used in fee calculation
2024-05-27 18:44:29 -07:00
ffranr
c0d2b53816
itest: add basic invoice HTLC modifier integration test
This commit introduces a basic integration test for the invoice
HTLC modifier. The test covers scenarios where an invoice is settled with a
payment that is less than the invoice amount, facilitated by the invoice
HTLC modifier.
2024-05-27 20:33:52 +02:00
ffranr
08429c63fc
lntest: add HtlcModifier support to node RPC harness
This commit enhances the itest LND node harness to include support for
the new `HtlcModifier` RPC endpoint.
At the same time we move another method to the correct file.
2024-05-27 20:33:52 +02:00
ffranr
2580661acb
invoicesrpc: add HtlcModifier RPC endpoint and modifier RPC server
This commit introduces a singleton invoice HTLC modifier RPC server and
an endpoint to activate it. The server interfaces with the internal
invoice HTLC modifier interpreter, handling the marshalling between RPC
types and internal formats.
2024-05-27 20:33:52 +02:00
ffranr
73f52c8b11
invoicesrpc: add HTLC modifier to invoices RPC server
This commit integrates the HTLC modifier service into the
invoices RPC server.
2024-05-27 20:23:02 +02:00
ffranr
7e8a3b0df7
lnd: initialize invoice settlement interceptor at server startup
This commit initiates the invoice settlement interceptor during the
main server startup, assigning it a handle within the server.
2024-05-27 20:23:02 +02:00
ffranr
12ad0cbf5a
invoices: integrate settlement interceptor with invoice registry
This commit updates the invoice registry to utilize the settlement
interceptor during the invoice settlement routine. It allows the
interceptor to capture the invoice, providing interception clients an
opportunity to determine the settlement outcome.
2024-05-27 20:23:01 +02:00
ffranr
72abc94fe8
invoices: add invoice htlc interceptor service
This commit introduces a new invoice htlc interceptor service
that intercepts invoice HTLCs during their settlement phase. It forwards
HTLCs to a subscribed client to determine their settlement outcomes.

This commit also introduces an interface to facilitate integrating the
interceptor with other packages.
2024-05-27 20:23:01 +02:00
Oliver Gugger
b628483120
routing: update TLV traffic shaper interface 2024-05-27 20:23:01 +02:00
Oliver Gugger
1404468299
routing: remove unused struct member 2024-05-27 20:23:01 +02:00
Oliver Gugger
8865484fb7
routing+lnrpc: fix log statements 2024-05-27 20:23:01 +02:00
Oliver Gugger
a3cdae0f7a
htlcswitch: override amount check on custom records 2024-05-27 20:23:00 +02:00
Oliver Gugger
be752ac2d3
Merge pull request #8641 from lightningnetwork/custom-channels-integration
[5/5]: lnwallet: extensions to aux leaf store to integrate custom channels
2024-05-27 20:22:02 +02:00
Oliver Gugger
d2d50649ce
lnwallet: add HTLC index to commitment sorting function
To avoid sorting issues with identical HTLCs (equal size, equal payment
hash, equal CLTV), we need to also use the HTLC index to be able to
distinguish between them.
2024-05-27 18:19:47 +02:00
Oliver Gugger
a62600799e
htlcswitch+channeldb+lnwallet: fix CustomRecord decoding
It doesn't make sense to do multiple encode/decode round trips on the
custom data of an HTLC. So we just use the same custom record type
everywhere, which also simplifies some of the code again.
2024-05-27 18:19:47 +02:00
Oliver Gugger
f59c0c12cf
channeldb: add NextHeight, fix formatting 2024-05-27 18:19:45 +02:00
Oliver Gugger
b2d41ee4aa
server: fix logging of pubkey 2024-05-27 18:19:41 +02:00
Oliver Gugger
2ef42c6c51
lntest: fix comments 2024-05-27 15:53:11 +02:00
Oliver Gugger
a780c81340
lnd: add aux data parser
This commit adds an optional data parser that can inspect and in-place
format custom data of certain RPC messages.
We don't add an implementation of the interface itself, as that will be
provided by external components when packaging up lnd as a bundle with
other software.
2024-05-27 15:53:11 +02:00
Oliver Gugger
1b3f386979
lnrpc+rpcserver: add and populate custom channel data 2024-05-27 15:53:11 +02:00
Oliver Gugger
8a0222c347
cmd/commands: export StripPrefix 2024-05-27 15:53:11 +02:00
Oliver Gugger
c25b04fbea
lnwallet: add Tree() method, fix formatting 2024-05-27 15:53:10 +02:00
Oliver Gugger
1552a67f3f
lnwallet: export GenTaprootHtlcScript 2024-05-27 15:53:10 +02:00
Oliver Gugger
74ba9e9e4d
lnwallet: export AnchorSize 2024-05-27 15:53:10 +02:00
Oliver Gugger
1f3f954a02
lnwallet: add AddHeight and RemoveHeight funcs 2024-05-27 15:53:10 +02:00
Oliver Gugger
26e759423b
cmd/lncli: move commands and export
We want to export some of our CLI code to re-use in other projects. But
in Golang you cannot import code from a `main` package.
So we need to move the actual code into its own package and only have
the `func main()` in the `main` package.
2024-05-27 15:53:10 +02:00
Oliver Gugger
626a1b87fa
Merge pull request #8632 from lightningnetwork/aux-leaf-signing
[4/5]: lnwallet: add new AuxSigner interface to mirror SigPool
2024-05-27 15:46:24 +02:00
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
Olaoluwa Osuntokun
ebf9856fac
lnwallet: obtain+verify aux sigs for all second level HTLCs
In this commit, we start to use the new AuxSigner to obtain+verify aux sigs for all second level HTLCs. This is similar to the existing SigPool, but we'll only attempt to do this if the AuxSigner is present (won't be for most channels).
2024-05-27 13:02:16 +02:00
Olaoluwa Osuntokun
9b869f95bf
lnwallet: add WithAuxSigner option to channel 2024-05-27 13:02:16 +02:00
Olaoluwa Osuntokun
d908e8c2f7
lnwallet: add new AuxSigner interface to mirror SigPool
In this commit, we add a new aux signer interface that's meant to mirror the SigPool. If present, this'll be used to (maybe) obtain signatures for second level HTLCs for certain classes of custom channels.
2024-05-27 13:02:16 +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