Commit Graph

16737 Commits

Author SHA1 Message Date
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
Oliver Gugger
72f7b80c28 lnwallet: thread thru input.AuxTapleaf to all relevant areas
In this commit, we start to thread thru the new aux tap leaf structures to all relevant areas. This includes: commitment outputs, resolution creation, breach handling, and also HTLC scripts.
2024-05-01 11:19:55 +02:00
Oliver Gugger
33f2db1c25 multi: thread thru the AuxLeafStore everywhere 2024-05-01 11:19:55 +02:00
Olaoluwa Osuntokun
2ac360a1b6 lnwallet: add TLV blob to PaymentDescriptor + htlc add
In this commit, we add a TLV blob to the PaymentDescriptor struct. We also now thread through this value from the UpdateAddHTLC message to the PaymentDescriptor mapping, and the other way around.
2024-05-01 11:19:55 +02:00
Olaoluwa Osuntokun
2cf38540e0 channeldb: add HtlcIndex to HTLCEntry
This may be useful for custom channel types that base everything off the index (a global value) rather than the output index (can change with each state).
2024-05-01 11:19:53 +02:00
Olaoluwa Osuntokun
d5f595e641 channeldb: add custom blobs to RevocationLog+HTLCEntry
This'll be useful for custom channel types that want to store extra information that'll be useful to help handle channel revocation cases.
2024-05-01 11:19:20 +02:00
Olaoluwa Osuntokun
0bf20500a7 channeldb: convert RevocationLog to use RecordT 2024-05-01 11:19:19 +02:00
Olaoluwa Osuntokun
f3655da070 channeldb: convert HTLCEntry to use tlv.RecordT 2024-05-01 11:19:15 +02:00
Olaoluwa Osuntokun
258dd5c96e lnwallet+channeldb: add new AuxLeafStore for dynamic aux leaves
In this commit, we add a new AuxLeafStore which can be used to dynamically fetch the latest aux leaves for a given state. This is useful for custom channel types that will store some extra information in the form of a custom blob, then will use that information to derive the new leaf tapscript leaves that may be attached to reach state.
2024-05-01 10:13:10 +02:00
Olaoluwa Osuntokun
fc44ff4bff input: add some utility type definitions for aux leaves
In this commit, we add some useful type definitions for the aux leaf.
2024-05-01 10:13:10 +02:00
Olaoluwa Osuntokun
12acbac16a lnwallet: add custom tlv blob to internal commitment struct
In this commit, we also add the custom TLV blob to the internal commitment struct that we use within the in-memory commitment linked list.

This'll be useful to ensure that we're tracking the current blob for our in memory commitment for when we need to write it to disk.
2024-05-01 10:13:10 +02:00
Olaoluwa Osuntokun
5733bbb55c lnwallet: export the HtlcView struct
We'll need this later on to ensure we can always interact with the new aux blobs at all stages of commitment transaction construction.
2024-05-01 10:13:09 +02:00
Olaoluwa Osuntokun
cbaa0c780d channeldb: new custom blob nested TLV
In this commit, for each channel, we'll now start to store an optional custom blob. This can be used to store extra information for custom channels in an opauqe manner.
2024-05-01 10:13:09 +02:00
Oliver Gugger
51c2a1a9eb mod: bump tlv to v1.2.5 2024-05-01 10:13:09 +02:00
Olaoluwa Osuntokun
6cf449168c input+lnwallet: update taproot scripts to accept optional aux leaf
In this commit, we update all the taproot scripts to also accept an
optional aux leaf. This aux leaf can be used to add more redemption
paths for advanced channels, or just as an extra commitment space.
2024-05-01 10:13:09 +02:00
Oliver Gugger
fb632bb945 Merge pull request #8712 from djkazic/invoice-gc-noop
invoices: if there are no invoices make gc noop
2024-05-01 08:31:56 +02:00
yyforyongyu
3f8da16b77 sweep: make TxPublisher.currentHeight atomic 2024-05-01 12:16:54 +08:00
Oliver Gugger
bb44793cbd Merge pull request #8683 from lightningnetwork/funding-tapcript
[1/?]: multi: add ability to fund+use musig2 channels that commit to a tapscript root
2024-04-30 18:12:16 +02:00
djkazic
1542424782 invoices: if there are no invoices make gc noop 2024-04-30 11:58:18 -04:00
Olaoluwa Osuntokun
26ce8ee729 lnwallet: add initial unit tests for musig2+tapscript root chans 2024-04-30 16:39:21 +02:00
Olaoluwa Osuntokun
66fa0a20c1 lnwallet+peer: add tapscript root awareness to musig2 sessions
With this commit, the channel is now aware of if it's a musig2 channel, that also has a tapscript root. We'll need to always pass in the tapscript root each time we: make the funding output, sign a new state, and also verify a new state.
2024-04-30 16:39:21 +02:00
Olaoluwa Osuntokun
9466224805 lnwallet: update internal funding flow w/ tapscript root
This isn't hooked up yet to the funding manager, but with this commit, we can now start to write internal unit tests that handle musig2 channels with a tapscript root.
2024-04-30 16:39:20 +02:00
Olaoluwa Osuntokun
a4a7d11e88 multi: update GenTaprootFundingScript to pass tapscript root
In most cases, we won't yet be passing a root. The option usage helps us keep the control flow mostly unchanged.
2024-04-30 16:39:20 +02:00
Olaoluwa Osuntokun
8a0c25b5d6 lnwallet/chanfunding: add optional tapscript root 2024-04-30 16:39:20 +02:00
Olaoluwa Osuntokun
159f853bb2 input: add new tapscript root func op to GenTaprootFundingScript
This'll allow us to create a funding output that uses musig2, but uses a tapscript tweak rather than a normal BIP 86 tweak.
2024-04-30 16:39:20 +02:00
Olaoluwa Osuntokun
89cf4c274f channeldb: add optional TapscriptRoot field + feature bit 2024-04-30 16:39:18 +02:00
Olaoluwa Osuntokun
1f110dcb24 channeldb: consolidate root bucket TLVs into new struct
In this commit, we consolidate the root bucket TLVs into a new struct.
This makes it easier to see all the new TLV fields at a glance. We also
convert TLV usage to use the new type param based APis.
2024-04-30 16:37:43 +02:00
Oliver Gugger
e8a1d4876e Merge pull request #8705 from yyforyongyu/fix-typo
lnrpc: fix typo
2024-04-30 12:11:25 +02:00
Olaoluwa Osuntokun
9f4e92c518 Merge pull request #8706 from guggero/release-notes-fix
0.18: add contributors from git log, polish release notes
2024-04-29 16:09:28 -07:00
Olaoluwa Osuntokun
bb0fb862f5 lnwallet/chanfunding: rename assembler.go to interface.go
In this commit, we rename the files as assembler.go houses the primary
interfaces/abstractions of the package. In the rest of the codebase,
this file is near uniformly called interface.go, so we rename the file
to make the repo more digestible at a scan.
2024-04-29 21:36:31 +02:00
Oliver Gugger
6159d41970 docs: remove entry for fix within release
This commit removes an entry that was fixed in the same release as it
was introduced. So nobody should've been running into it yet.
2024-04-29 19:17:52 +02:00
Oliver Gugger
9dbf7e2133 docs: cleanup release notes
This commit removes a duplicate, fixes some typos and grammar issues and
removes an empty section/heading.
2024-04-29 19:17:52 +02:00
Oliver Gugger
3d56ffd0e4 Merge pull request #8662 from fuyangpengqi/master
chore: fix function names in comment
2024-04-29 15:10:20 +02:00
Oliver Gugger
be6b9b4b47 docs: update contributor list from git log
This commit adds contributors that didn't add themselves to the release
notes by extracting their GitHub username (or, if available their
name and surname from GitHub) from the git log manually.
2024-04-29 13:45:51 +02:00
yyforyongyu
9f2995251e lnrpc: fix typo 2024-04-29 19:14:27 +08:00
Oliver Gugger
0419074ab8 Merge pull request #8695 from bitromortac/linter-cache
make: add cache directory for linter
2024-04-29 11:14:06 +02:00
Carla Kirk-Cohen
6e3a46ee91 itest: add more comprehensive assertions before HTLC cleared check
We mine quite a few blocks in this test to trigger a htlc timeout,
so it can be pretty slow. This fix adds assertions for additional
"state steps" that happen in between the failing of the htlc on-chain
and asserting that we're fully cleared out so that slower running
machines won't timeout.
2024-04-27 11:42:35 -04:00
Olaoluwa Osuntokun
ded995a843 Merge pull request #8701 from Roasbeef/0-18-branch
build: bump version to v0.18.0-beta.rc1
v0.18.0-beta.rc1
2024-04-26 19:45:41 -07:00
Olaoluwa Osuntokun
3b6103d29f build: bump version to v0.18.0-beta.rc1 2024-04-26 19:19:23 -07:00
Olaoluwa Osuntokun
b92216ea13 Merge pull request #8700 from Roasbeef/kvdb-update-1-4-8
build: update to kvdb v1.4.8
2024-04-26 19:09:13 -07:00
Olaoluwa Osuntokun
f536c9b608 build: update to kvdb v1.4.8 2024-04-26 16:17:19 -07:00
Olaoluwa Osuntokun
5148941ed9 Merge pull request #8699 from Roasbeef/kvdb-sqlite-update-4-26
build: update to sqldb v1.0.2
kvdb/v1.4.8
2024-04-26 16:10:49 -07:00
Olaoluwa Osuntokun
e80adcde8e Merge pull request #8692 from guggero/tlv-types
tlv: add new types and functions
tlv/v1.2.5
2024-04-26 16:10:24 -07:00
Olaoluwa Osuntokun
7302051f44 build: update to sqldb v1.0.2
In this commit, we update the project and relevant sub-modules to sqldb
v1.0.2. The next step is to tag a new version of kvdb, then update the
main module to use that.
2024-04-26 15:31:14 -07:00
Olaoluwa Osuntokun
abcad6218e Merge pull request #8696 from Roasbeef/sqlite-update
sqldb+kvdb: update to sqlite v1.29.8
kvdb/v1.4.7 sqldb/v1.0.2
2024-04-26 15:25:33 -07:00
Olaoluwa Osuntokun
b0463124d0 Merge pull request #8694 from Roasbeef/fix-pkg-race
channeldb: fix race in TestPackager by removing global test var
2024-04-26 15:18:00 -07:00
Olaoluwa Osuntokun
675ae6e213 Merge pull request #8693 from yyforyongyu/add-default-conf
rpc: add default conf target back
2024-04-26 12:45:06 -07:00
Olaoluwa Osuntokun
add2691954 Merge pull request #8485 from carlaKC/7298-3-forwardblindedroutes
[3/3]: Blinded Route Error Handling
2024-04-26 12:39:11 -07:00
Olaoluwa Osuntokun
fe8784aa0c channeldb: fix race in TestPackager by removing global test var
In this commit, we fix a race in the `TestPackager` series on channeldb.
A few tests were sharing the same global variable of the set of log
updates, which includes a pointer to an HTLC. The `ExtraData` value of
the HTLC would then be mutated once we go to encode the message on disk.

To fix this, we the global with a function that returns a new instance
of all the test data.

```
==================
WARNING: DATA RACE
Write at 0x0000021b0a48 by goroutine 2896:
  github.com/lightningnetwork/lnd/lnwire.(*ExtraOpaqueData).PackRecords()
      /home/runner/work/lnd/lnd/lnwire/extra_bytes.go:74 +0x546
  github.com/lightningnetwork/lnd/lnwire.EncodeMessageExtraData()
      /home/runner/work/lnd/lnd/lnwire/extra_bytes.go:121 +0x4d
  github.com/lightningnetwork/lnd/lnwire.(*UpdateAddHTLC).Encode()
      /home/runner/work/lnd/lnd/lnwire/update_add_htlc.go:164 +0x5af
  github.com/lightningnetwork/lnd/lnwire.WriteMessage()
      /home/runner/work/lnd/lnd/lnwire/message.go:330 +0x351
  github.com/lightningnetwork/lnd/channeldb.WriteElement()
      /home/runner/work/lnd/lnd/channeldb/codec.go:186 +0x1975
  github.com/lightningnetwork/lnd/channeldb.WriteElements()
      /home/runner/work/lnd/lnd/channeldb/codec.go:247 +0x14f
  github.com/lightningnetwork/lnd/channeldb.serializeLogUpdate()
      /home/runner/work/lnd/lnd/channeldb/channel.go:2529 +0x3c
  github.com/lightningnetwork/lnd/channeldb.putLogUpdate()
      /home/runner/work/lnd/lnd/channeldb/forwarding_package.go:525 +0xae
  github.com/lightningnetwork/lnd/channeldb.(*ChannelPackager).AddFwdPkg()
      /home/runner/work/lnd/lnd/channeldb/forwarding_package.go:489 +0x684
  github.com/lightningnetwork/lnd/channeldb_test.TestPackagerOnlyAdds.func1()
      /home/runner/work/lnd/lnd/channeldb/forwarding_package_test.go:283 +0x4c
  github.com/btcsuite/btcwallet/walletdb/bdb.(*db).Update()
      /home/runner/go/pkg/mod/github.com/btcsuite/btcwallet/walletdb@v1.4.2/bdb/db.go:429 +0xe5
  github.com/lightningnetwork/lnd/kvdb.Update()
      /home/runner/go/pkg/mod/github.com/lightningnetwork/lnd/kvdb@v1.4.6/interface.go:16 +0x258
  github.com/lightningnetwork/lnd/channeldb_test.TestPackagerOnlyAdds()
      /home/runner/work/lnd/lnd/channeldb/forwarding_package_test.go:282 +0x17b
  testing.tRunner()
      /home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.21.4.linux-amd64/src/testing/testing.go:1595 +0x238
  testing.(*T).Run.func1()
      /home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.21.4.linux-amd64/src/testing/testing.go:1648 +0x44

Previous write at 0x0000021b0a48 by goroutine 2898:
  github.com/lightningnetwork/lnd/lnwire.(*ExtraOpaqueData).PackRecords()
      /home/runner/work/lnd/lnd/lnwire/extra_bytes.go:74 +0x546
  github.com/lightningnetwork/lnd/lnwire.EncodeMessageExtraData()
      /home/runner/work/lnd/lnd/lnwire/extra_bytes.go:121 +0x4d
  github.com/lightningnetwork/lnd/lnwire.(*UpdateAddHTLC).Encode()
      /home/runner/work/lnd/lnd/lnwire/update_add_htlc.go:164 +0x5af
  github.com/lightningnetwork/lnd/lnwire.WriteMessage()
      /home/runner/work/lnd/lnd/lnwire/message.go:330 +0x351
  github.com/lightningnetwork/lnd/channeldb.WriteElement()
      /home/runner/work/lnd/lnd/channeldb/codec.go:186 +0x1975
  github.com/lightningnetwork/lnd/channeldb.WriteElements()
      /home/runner/work/lnd/lnd/channeldb/codec.go:247 +0x14f
  github.com/lightningnetwork/lnd/channeldb.serializeLogUpdate()
      /home/runner/work/lnd/lnd/channeldb/channel.go:2529 +0x3c
  github.com/lightningnetwork/lnd/channeldb.putLogUpdate()
      /home/runner/work/lnd/lnd/channeldb/forwarding_package.go:525 +0xae
  github.com/lightningnetwork/lnd/channeldb.(*ChannelPackager).AddFwdPkg()
      /home/runner/work/lnd/lnd/channeldb/forwarding_package.go:489 +0x684
  github.com/lightningnetwork/lnd/channeldb_test.TestPackagerAddsThenSettleFails.func1()
      /home/runner/work/lnd/lnd/channeldb/forwarding_package_test.go:490 +0x4c
  github.com/btcsuite/btcwallet/walletdb/bdb.(*db).Update()
      /home/runner/go/pkg/mod/github.com/btcsuite/btcwallet/walletdb@v1.4.2/bdb/db.go:429 +0xe5
  github.com/lightningnetwork/lnd/kvdb.Update()
      /home/runner/go/pkg/mod/github.com/lightningnetwork/lnd/kvdb@v1.4.6/interface.go:16 +0x2cd
  github.com/lightningnetwork/lnd/channeldb_test.TestPackagerAddsThenSettleFails()
      /home/runner/work/lnd/lnd/channeldb/forwarding_package_test.go:489 +0x1e7
  testing.tRunner()
      /home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.21.4.linux-amd64/src/testing/testing.go:1595 +0x238
  testing.(*T).Run.func1()
      /home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.21.4.linux-amd64/src/testing/testing.go:1648 +0x44

Goroutine 2896 (running) created at:
  testing.(*T).Run()
      /home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.21.4.linux-amd64/src/testing/testing.go:1648 +0x82a
  testing.runTests.func1()
      /home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.21.4.linux-amd64/src/testing/testing.go:2054 +0x84
  testing.tRunner()
      /home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.21.4.linux-amd64/src/testing/testing.go:1595 +0x238
  testing.runTests()
      /home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.21.4.linux-amd64/src/testing/testing.go:2052 +0x896
  testing.(*M).Run()
      /home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.21.4.linux-amd64/src/testing/testing.go:1925 +0xb57
  github.com/lightningnetwork/lnd/kvdb.RunTests()
      /home/runner/go/pkg/mod/github.com/lightningnetwork/lnd/kvdb@v1.4.6/test_utils.go:23 +0x26
  github.com/lightningnetwork/lnd/channeldb.TestMain()
      /home/runner/work/lnd/lnd/channeldb/setup_test.go:10 +0x308
  main.main()
      _testmain.go:321 +0x303

Goroutine 2898 (running) created at:
  testing.(*T).Run()
      /home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.21.4.linux-amd64/src/testing/testing.go:1648 +0x82a
  testing.runTests.func1()
      /home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.21.4.linux-amd64/src/testing/testing.go:2054 +0x84
  testing.tRunner()
      /home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.21.4.linux-amd64/src/testing/testing.go:1595 +0x238
  testing.runTests()
      /home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.21.4.linux-amd64/src/testing/testing.go:2052 +0x896
  testing.(*M).Run()
      /home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.21.4.linux-amd64/src/testing/testing.go:1925 +0xb57
  github.com/lightningnetwork/lnd/kvdb.RunTests()
      /home/runner/go/pkg/mod/github.com/lightningnetwork/lnd/kvdb@v1.4.6/test_utils.go:23 +0x26
  github.com/lightningnetwork/lnd/channeldb.TestMain()
      /home/runner/work/lnd/lnd/channeldb/setup_test.go:10 +0x308
  main.main()
      _testmain.go:321 +0x303
==================
```
2024-04-26 12:36:53 -07:00
Olaoluwa Osuntokun
eb605a02fd sqldb+kvdb: update to sqlite v1.29.8
Updates to SQLite 3.45.3: https://www.sqlite.org/releaselog/3_45_3.html.

May also address https://github.com/lightningnetwork/lnd/issues/8666.
2024-04-26 12:26:59 -07:00