Commit Graph
1343 Commits
Author SHA1 Message Date
bitromortac fa5722355f itest: test channel update subscription 2026-02-20 10:47:04 +01:00
Olaoluwa Osuntokun 3fb59b1b6b multi: increase min cltv delta to 24 2026-01-16 13:06:30 -08:00
Olaoluwa Osuntokun 0f59756b40 lntest: add new wait for conf helper method to ChainNotifier 2026-01-15 16:22:26 -08:00
Olaoluwa Osuntokun eb7fbd47d3 Merge pull request #10460 from ziggie1984/fix-flake-revoked_uncooperative_close_retribution
itest fix flake in revokedCloseRetributionRemoteHodlCase
2026-01-14 16:51:16 -08:00
elnosh 6f49bea52b server: remove accountability signal experiment period
In the previous iteration with endorsement
signaling, the recommendation was for the sender to
set it to 1 and that could have had privacy concerns
when first deploying given that the default was to
downgrade the signal to 0. In the latest proposal
the recommended default for both sending and
forwarding nodes is to set `accountable` to 0.
As a result, the dates have been removed given
that there are no privacy risks associated
with relaying the signal with zero values.
2026-01-06 09:12:34 -05:00
elnosh 34329c684e multi: rename experimental endorsement signal to accountable
Renames the endorsement signal to accountable to
match the latest proposal https://github.com/lightning/blips/pull/67
2026-01-06 09:12:31 -05:00
ziggie 5f30797738 itest: fix endorsement itests
Due to the signaling period expiring tests had to be adopted bc
they were not taking the activation time period into account.
2026-01-05 14:28:14 +01:00
ziggie ece8469051 lntest: make sure HTLCs are locked in when sending a payment
Before this change, CompletePaymentRequestsNoWait would return as
soon as the channel's NumUpdates increased by at least one. When
sending multiple payments, this meant the function could return
while some HTLCs were still in-flight and not yet committed to the
channel state.

The problem occurred when tests captured the channel state
immediately after calling this function. Even though we read the
current NumUpdates from the channel, HTLCs could still be in the
process of being committed. This led to a race where the channel
would progress to a new state after we thought we had correctly
captured it, causing tests to see unexpected commitment heights.

Fix this by waiting for all outgoing HTLCs to appear in
PendingHtlcs before returning. We count outgoing HTLCs before
sending, then wait until exactly len(paymentRequests) new HTLCs
are present. This guarantees all payments have fully completed
their commitment exchange and are locked in on both sides.

Fixes the flaky revokedCloseRetributionRemoteHodlCase test where
backups would capture state at height N+1 instead of the expected
  height N.
2025-12-21 21:52:22 +01:00
ziggie c493f7d9dd itest: accept NO_ROUTE or TIMEOUT in testLocalClaimOutgoingHTLC
Fix flaky test due to race between channel closure propagation and
payment timeout. Both failure reasons are correct depending on timing.
2025-12-19 00:27:20 +01:00
Elle Mouton fb48697ffa itest+lntest: add coordinator pattern test for combined nonce
Add integration test for MuSig2RegisterCombinedNonce and
MuSig2GetCombinedNonce RPCs to verify the coordinator pattern workflow.

The test:
- Creates three signing sessions without initial nonce exchange
- Manually aggregates nonces using the coordinator pattern (btcec musig2)
- Tests v0.4.0 returns unsupported errors (as expected)
- Tests v1.0.0rc2 successfully registers and retrieves combined nonces
- Verifies mutual exclusivity (error: already have all nonces)
- Completes a full signing flow to ensure signatures are valid

Also adds the required RPC harness wrapper methods to lntest/rpc/signer.go for
the new RPCs and adds MuSig2RegisterNoncesErr wrapper for error testing.
2025-12-10 07:19:04 +02:00
Elle Mouton c945f6749e input+signrpc+lnwallet+multi: implement combined nonce support
Add CombinedNonce() and RegisterCombinedNonce() methods with full implementation
stack.

Interface and core implementation:
- input/musig2.go: Added methods to MuSig2Session and MuSig2Signer interfaces
- input/musig2_session_manager.go: MusigSessionManager implementation using
  HaveAllNonces flag for state tracking (simplified, no extra fields)
- internal/musig2v040: Stub implementations returning ErrUnsupportedMethod
- Mock implementations (MockInputSigner, MockSigner, DummySigner)

RPC layer:
- lnrpc/signrpc/signer.proto: RPC method definitions and messages
- lnrpc/signrpc/signer.yaml: REST API endpoint mappings
- Generated protobuf code (all .pb.go files)
- lnwallet/rpcwallet/rpcwallet.go: RPCKeyRing client implementation

The proto types and RPCKeyRing are added together since RPCKeyRing implements
the Signer interface and requires proto types to fulfill the contract.

For v0.4.0, these methods return ErrUnsupportedMethod. Use MuSig2Version100RC2
to access these features.
2025-12-10 07:15:06 +02:00
Gijs van Dam 07dc74e198 multi: endpoints for onion messages
This commit creates the necessary endpoints for onion messages.
Specifically, it adds the following:

- `SendOnionMessage` endpoint to send onion messages.
- `SubscribeOnionMessages` endpoint to subscribe to incoming onion
  messages.

It uses the `msgmux` package to handle the onion messages.
2025-11-12 22:54:04 +08:00
yyforyongyu 6c56f33a70 lntest: fix error msg in ReceiveChannelEvent 2025-09-18 22:24:43 +08:00
Boris Nagaev c86826ac5b lntest: fix error check in shutdownAllNodes
Previously the test failed only if the last node failed to shutdown. The code
was updated to fail if any node failed to shutdown.
2025-08-30 14:13:44 -03:00
Boris Nagaev dee8ad3754 multi: context.Background() -> t.Context()
Use the new feature of Go 1.24, fix linter warnings.

This change was produced by:
 - running golangci-lint run --fix
 - sed 's/context.Background/t.Context/' -i `git grep -l context.Background | grep test.go`
 - manually fixing broken tests
 - itest, lntest: use ht.Context() where ht or hn is available
 - in HarnessNode.Stop() we keep using context.Background(), because it is
   called from a cleanup handler in which t.Context() is canceled already.
2025-08-30 14:13:44 -03:00
MPins c00939d0a6 lntest: add functions for DeleteCanceledInvoice itest 2025-07-25 21:21:58 -03:00
Elle add81f1388 Merge pull request #10064 from ellemouton/getChanInfoGrpcErr
rpcserver: return consistent grpc NotFound error for GetChaninfo & LookupInvoice
2025-07-14 08:34:46 +02:00
Oliver Gugger 63609b0801 Merge pull request #10061 from yyforyongyu/fix-listsweep-itest
itest+lntest: fix flake in `testListSweeps`
2025-07-11 00:25:48 -06:00
Torkel Rogstad c8b04d03f5 itest+lntest: add grpc NotFound error code test 2025-07-10 11:36:20 +02:00
yyforyongyu 52d963bae0 itest+lntest: fix flake in testListSweeps
We now make sure we assert the `ListSweeps` results in a wait closure.
2025-07-09 20:52:02 +03:00
yyforyongyu 56fd8eeb43 lntest: add RPC SubscribePeerEvents
And a few assertion helpers.
2025-07-04 04:19:59 +08:00
yyforyongyu 624dc6c26a lntest: assert CustomRecords fields on channel policy
Make sure the `CustomRecords` field is asserted.
2025-07-01 19:59:50 +08:00
Elle Mouton 8cf567b948 multi: use the "errors" package everywhere
Replace all usages of the "github.com/go-errors/errors" and
"github.com/pkg/errors" packages with the standard lib's "errors"
package. This ensures that error wrapping and `errors.Is` checks will
work as expected.
2025-06-30 09:46:55 +02:00
Oliver Gugger a9b530ce4a Merge pull request #9984 from starius/lntest-feeservice-mutex
lntest: do not do IO under mutex in fee_service
2025-06-24 14:09:10 +02:00
Elle Mouton 63fbd5fbcb lntest: make nobootstrap configurable
This will allow us to test bootstrapping in an itest.
2025-06-24 12:48:01 +02:00
Boris Nagaev 61b3670113 lntest: do not do IO under mutex in fee_service
If HTTP response is consumed slowly, this might block other HTTP requests to
the fee service, because the mutex is held.
2025-06-24 00:44:45 -03:00
yyforyongyu 343ae963b0 lntest: add a new basedir flag to keep test data 2025-06-23 17:29:26 +08:00
yyforyongyu 0d20e96e96 lntest: create GenBaseDir to generate the base dir 2025-06-23 17:28:48 +08:00
Boris Nagaev 9100be5ba5 lntest: add method P2PAddr to backend
It is useful if we want to keep bitcoind main itest mode, but connect one node
using neutrino.
2025-06-22 11:06:54 -03:00
Boris Nagaev 07217f2dd8 lntest: fix p2p port binding
Use an additional -bind flag instead of -port to specify the default p2p port.

Flag -port sets the default port number that will be used for any -bind or
-whitebind that does not explicitly specify a port. So if we have the p2p
port set in -port and the tor p2p port set in a single -bind, bitcoind binds
only one port - the tor p2p port. And the default p2p port remained not bound!
2025-06-22 11:06:54 -03:00
Boris Nagaev 3d0031435c lntest: serve compact filters for neutrino
Enable this in bitcoind mode as well to be able to let a subset of LND nodes
to use neutrino with bitcoind backend.
2025-06-22 11:06:49 -03:00
yyforyongyu 9caa5f220d itest+lntest: add more itest for accessman 2025-06-19 16:05:59 +08:00
yyforyongyu 26960e36ce htlcswitch+lntest: add more debug logs 2025-06-06 19:40:35 +08:00
Oliver Gugger fc906f2a65 Merge pull request #9127 from MPins/issue-8993
Add the option on path creator to specify the incoming channel on blinded path
2025-06-05 08:47:05 +02:00
yyforyongyu f97f60d3d4 lntest+itest: add testBumpFeeExternalInput 2025-05-26 19:41:24 +08:00
MPins b95d48971d lntest: add the function RPC call to asserts errors on AddInvoice 2025-05-13 17:02:44 -03:00
yyforyongyu 8f936aa9eb itest: update num of sweeps in AssertNumPendingSweeps
Since we now return all sweeps, we need to update the call to include
immature sweeps.
2025-04-29 14:15:31 +08:00
András Bánki-Horváth 579f6f0f68 Merge pull request #9724 from bhandras/fundpsbt-custom-input-lock
walletrpc: allow custom lock ID and duration in `FundPsbt`
2025-04-17 17:31:48 +02:00
Andras Banki-Horvath fbe645f96a itests: add FundPsbt custom lock ID and duration test 2025-04-17 15:25:12 +02:00
yyforyongyu 0daadb05bf lntest: add SendAllCoins and remove standby nodes context
Standby nodes are no longer used so we update `AssertNumUTXOs` to remove
the confusing check.
2025-04-17 09:32:28 +08:00
Oliver Gugger 6d648ad90a Merge pull request #9684 from ziggie1984/master
multi: update new walletdb version in main go.mod and kvdb go.mod
2025-04-14 15:56:16 +02:00
ffranr 24ba098798 lntest: assert shutdown via logs only if log handle is present
Ensure shutdown assertions through log inspection are only performed
when the harness node has an active log file handle. This avoids
errors during shutdown when log file output is disabled.
2025-04-11 15:30:13 +01:00
ziggie 490347b056 multi: update walletdb package 2025-04-09 18:47:53 +02:00
Olaoluwa Osuntokun 1fc2c64770 itest: test all combos of rbf close and taproot chans
In this commit, we test all the combinations of rbf close and taproot
chans. This ensures that the downgrade logic works properly.

Along the way we refactor the tests slightly, and also split them up, as
running all the combos back to back mines more than 50 blocks in a test,
which triggers an error in the itest sanity checks.
2025-04-03 16:23:36 -07:00
yyforyongyu 64f7a7f3d0 lntest+itest: update block height in MineBlockWithTx
Make sure we update the harness's current height and assert nodes have
been synced. Also fixes some typo found.
2025-03-26 18:24:47 +08:00
yyforyongyu 883381d266 lntest+itest: return the tx from FundCoins
This is used is a following test.
2025-03-26 18:24:46 +08:00
Oliver Gugger 0aea482b51 multi: add testnet4 support 2025-03-24 11:53:23 -05:00
yyforyongyu 652d39dcc7 itest: fix flakeSkipPendingSweepsCheckDarwin
Now that we have the new RPC to assert the HTLC state, this flake should
be fixed.
2025-03-21 03:25:24 +08:00
Yong 09b6745086 Merge pull request #9600 from lightningnetwork/yy-more-flakes
lntest+itest: document and fix more flakes
2025-03-21 03:23:02 +08:00
Olaoluwa Osuntokun 3681ba6d8b peer: for RBF state machine block req if RBF iterating is outstanding
This fixes an issue in the itests in the restart case. We'd see an error
like:
```
2025-03-12 23:41:10.754 [ERR] PFSM state_machine.go:661: FSM(rbf_chan_closer(2f20725d9004f7fda7ef280f77dd8d419fd6669bda1a5231dd58d6f6597066e0:0)): Unable to apply event err="invalid state transition: received *chancloser.SendOfferEvent while in ClosingNegotiation(local=LocalOfferSent(proposed_fee=0.00000193 BTC), remote=ClosePending(txid=07229915459cb439bdb8ad4f5bf112dc6f42fca0192ea16a7d6dd05e607b92ae, party=Remote, fee_rate=1 sat/vb))"
```

We resolve this by waiting to send in the new request unil the old one
has been completed.
2025-03-18 11:44:59 -05:00