Commit graph

585 commits

Author SHA1 Message Date
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
yyforyongyu
c64e3a6c34
lnwire: fix linter 2025-06-25 14:53:22 +08:00
yyforyongyu
828486e35a
lnwire: fix unit test for DynCommit 2025-06-25 14:53:20 +08:00
Keagan McClelland
a72cadf2ed
lnwire: convert DynPropose and DynCommit to use typed tlv records 2025-06-25 02:22:22 +08:00
Keagan McClelland
79e4e74447
lnwire: change DynPropose/DynCommit TLV numbers to align with spec 2025-06-25 02:09:08 +08:00
Keagan McClelland
72582d4acc
lnwire: add HtlcMinimum to DynPropose and DynCommit 2025-06-25 02:08:58 +08:00
Keagan McClelland
f40530e4f4
lnwire: remove FundingKey from DynPropose and DynCommit 2025-06-25 02:08:56 +08:00
Keagan McClelland
cbca5b1152
lnwire: remove kickoff feerate from propose/commit 2025-06-25 02:08:22 +08:00
Keagan McClelland
36f53d74ab
lnwire: add convenience functions for protocol validation 2025-06-25 02:06:16 +08:00
yyforyongyu
42089b19d6
lnwire: add DynCommit message to match spec 2025-06-25 01:10:54 +08:00
Keagan McClelland
60887ad3ef
lnwire: add signature to DynAck 2025-06-25 01:10:49 +08:00
Keagan McClelland
c6861770de
lnwire: remove no longer used initiator field 2025-06-25 01:10:46 +08:00
Elle Mouton
667e0aadc3
lnwire: fix test data race
Ensure that tests can run in parallel without causing a data race by
adding a `makeTestChannelUpdate` constructor rather than sharing the
same `testChannelUpdate` type between tests. This is needed since some
tests write to the type.
2025-06-20 12:22:59 +02:00
Elle Mouton
420001a98c
lnwire: add InboundFee TLV record to ChannelUpdate 2025-06-09 08:32:52 +02:00
Elle Mouton
412e05f85f
lnwire: add *OpaqueAddrs case in WriteElements
And then expand the chanbackup unit tests to cover such a case.
2025-05-23 16:14:47 +02:00
Elle Mouton
a15489159a
lnwire: remove duplicated logic
Use existing serialisation helpers for serialising TC Pand Onion
addresses in WriteElement.
2025-05-23 16:12:28 +02:00
Elle Mouton
1410a0949d
lnwire: validate that gossip messages contain valid TLV
In this commit, we check that the extra bytes appended to gossip
messages contain valid TLV streams. We do this here for:
- channel_announcement
- channel_announcement_2
- channel_update
- channel_update_2
- node_announcement

This is in preparation for the SQL version of the graph store which will
normalise TLV streams at persistence time.
2025-05-22 14:14:41 +02:00
Elle Mouton
ad38ed73c7
go.mod+lnwire: bump TLV dep and fix MilliSatoshi Record
In this commit, we update the `tlv` package version which includes type
constraints on the `tlv.SizeBigSize` method parameter. This exposes a
bug in the MilliSatoshi Record method which is fixed here.

This was not caught in tests before since currently only
our TLV encoding code makes use of this SizeFunc (so we would write 0
size to disk) but then when we read the bytes from disk and decode, we
dont use the SizeFunc and our MilliSatoshi decode method makes direct
use of the `tlv.DBigSize` function which _currently does not make use of
the `l` length variable passed to it_. So it currently does correctly
read the data.
2025-05-07 19:36:25 +02:00
xinhangzhou
b7e3c20383 refactor: use maps.Copy for cleaner map handling
Signed-off-by: xinhangzhou <shuangcui@aliyun.com>
2025-03-25 01:19:55 +08:00
Olaoluwa Osuntokun
05a6b6838f
lnwire: add new TestSerializedSize method
This uses all the interfaces and implementations added in the prior test.
2025-03-20 18:28:53 -07:00
Olaoluwa Osuntokun
b2f24789dc
lnwire: revamp TestLightningWireProtocol using new rapid test gen
With what we added in the prior commit, we can significantly shrink the
size of this test. We also make it easier to extend in the future, as
this will fail if a new message is added, that doesn't have the needed
methods, as long as MsgEnd is updated.
2025-03-20 18:28:23 -07:00
Olaoluwa Osuntokun
eb877db2ff
lnwire: add new TestMessage interface for property tests
In this commit, we add a new `TestMessage` interface for use in property
tests. With this, we'll be able to generate a random instance of a given
message, using the rapid byte stream. This can also eventually be useful
for fuzzing.
2025-03-20 18:28:07 -07:00
Olaoluwa Osuntokun
56a100123b
lnwire: add new SerializedSize method to all wire messages
This'll be useful for the bandwidth based rate limiting we'll implement
in the next commit.
2025-03-20 18:27:52 -07:00
Olaoluwa Osuntokun
14eca4406e lnwire: update closing_complete and closing_sig to latest spec draft
Both these messages now carry the address of both parties, so you can
update an address without needing to send shutdown again.
2025-03-18 11:44:20 -05:00
Olaoluwa Osuntokun
752fc86c7d lnwire: add feature bits for new rbf coop close 2025-03-18 11:44:20 -05:00
Elle Mouton
c5cff4052b
lnwire_test: fix test doc string
This test started out demonstrating a bug. But that bug has since been
fixed. Fix the comment to reflect.
2025-02-05 08:17:42 +02:00
Nishant Bansal
7f8e89f3b4
lnwire: add 'x' separator in ShortChannelID method
Add the `AltString` method for `ShortChannelID` to produce a
human-readable format with 'x' as a separator
(block x transaction x output).

Signed-off-by: Nishant Bansal <nishant.bansal.282003@gmail.com>
2025-01-15 15:25:40 +05:30
Olaoluwa Osuntokun
540d3c0fc7
multi: switch to lock time from sequence for coop close v2 2024-12-10 23:07:01 +01:00
Olaoluwa Osuntokun
fb429d658b
Merge pull request #9330 from ProofOfKeags/update/fn2
multi: update to fn v2
2024-12-09 12:56:23 +01:00
Keagan McClelland
ed2989ae33
multi: update to fn v2 2024-12-04 13:19:00 -07:00
yyforyongyu
d108e14c5d
multi: rename lll to ll and remove unused nolint 2024-12-04 07:20:59 +08:00
Elle Mouton
ab7aae0708
multi: rename nolint:lll to nolint:ll
Find and replace all nolint instances refering to the `lll` linter and
replace with `ll` which is the name of our custom version of the `lll`
linter which can be used to ignore log lines during linting.

The next commit will do the configuration of the custom linter and
disable the default one.
2024-12-02 09:14:21 +02:00
Keagan McClelland
7a5b55a473
lnwire: signal that we support quiescence 2024-11-26 13:51:56 -07:00
Keagan McClelland
c9debea408
lnwire: add IsChannelUpdate function to distinguish channel updates 2024-11-26 13:51:56 -07:00
Carla Kirk-Cohen
f02bb58486
multi: add experimental endorsement feature bit and disable option 2024-11-22 09:16:58 -05:00
Carla Kirk-Cohen
774bfa740a
htlcswitch: relay experimental endorsement signal with update_add_htlc 2024-11-22 09:16:56 -05:00
Matt Morehouse
75bdf2d252
lnwire: use assertEqualFunc in onion failure harness
Simplifies the code slightly and improves the error message printed if
the original and deserialized messages do not match.
2024-11-13 10:25:16 -06:00
Matt Morehouse
d0e6a7a37b
lnwire: adapt harness for custom equality funcs
There are several fuzz targets that can't use the standard require.Equal
check for various reasons. By adapting the harness to accept a custom
equality function, we can reduce code duplication in these targets.
2024-11-13 10:25:16 -06:00
Matt Morehouse
b9381acb2d
lnwire: move message prefixing to the harness
The prefixing is done every time the harness is used, so it may as well
reside in the harness itself.
2024-11-13 10:25:16 -06:00
Matt Morehouse
b7a1a1e9b8
lnwire: s/harness/wireMsgHarness
This slightly more descriptive name distinguishes the wire message
harness from the onion failure harness while also obviating the
repetitive comments at every call site.
2024-11-13 10:25:16 -06:00
Matt Morehouse
4097527efc
lnwire: remove superfluous "Prefix with..." comments
These comments add nothing of value since the following line is always
self-documenting:

  data = prefixWithMsgType(data, MsgTypeToBePrefixed)
2024-11-13 10:25:12 -06:00
Matt Morehouse
4f7267ecea
lnwire: add fuzz target for Fee TLV
The new Fee TLV is not included in any other messages within the lnwire
package, so it currently has no fuzzing coverage.  This fuzz target
directly tests the encoding/decoding of the TLV to get some coverage.
2024-11-08 15:03:30 -06:00
Matt Morehouse
f1b7d52308
lnwire: add fuzz target for Schnorr sig conversion
Analogous to FuzzConvertFixedSignature but for Schnorr signatures.
2024-11-08 15:01:48 -06:00
Matt Morehouse
b82ae51a0b
lnwire: add fuzz target for route blinding message
Add a simple decode/encode target for the FailInvalidBlinding message.
2024-11-08 15:00:06 -06:00
Matt Morehouse
2784da13f8
lnwire: add fuzz targets for gossip 1.75 messages
Add simple decode/encode targets for AnnouncementSignatures2,
ChannelAnnouncement2, and ChannelUpdate2.
2024-11-08 14:57:13 -06:00
Elle Mouton
a5f3fa17e7
lnwire21: update Msat and TrueBoolean
Add the TrueBoolean type along with its Record method. Also update the
Millisatoshi type with a Record method. Both of these will be used in an
upcoming commit which adjusts a mission control migration to use pure
TLV types.
2024-11-01 08:59:54 +02:00
Olaoluwa Osuntokun
7f9268c38f
lnwire: add new taproot chans overlay feature bit 2024-10-02 18:10:04 -07:00
Olaoluwa Osuntokun
bf0bd64023
lnwire: modify TestLightningWireProtocol to use sub-tests
This way, it's possible to run induvidual tests to target failures.
2024-10-02 18:09:48 -07:00
Olaoluwa Osuntokun
099f5566bc
lnwire: add CustomRecords to shutdown message 2024-09-19 10:18:39 +02:00
Oliver Gugger
83923c7f33
lnwire: add MergedCopy method to CustomRecords 2024-09-19 09:21:38 +02:00