Commit Graph
289 Commits
Author SHA1 Message Date
Orbital 073c990c75 multi: Add --tor.encryptkey flag functionality to encrypt the Tor private key on disk
It's possible that a user might not want the Tor private key to sit on the disk in plaintext (it is a private key after all). So this commit adds a new flag to encrypt the Tor private key on disk using the wallet's seed. When the --tor.encryptkey flag is used, LND will still write the Tor key to the same file, however it will now be encrypted intead of plaintext. This essentially uses the same method to encrypt the Tor private key as is used to encrypt the Static Channel Backup file.
2022-09-30 01:53:46 -05:00
ueno c6c7f94668 docs: fix typo in watchtower document and code comment [skip ci] 2022-09-13 22:06:30 +09:00
Eng Zer Jun 6d00cdea45 watchtower/wtdb: use T.TempDir to create temporary test directory
Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>
2022-08-24 09:03:06 +08:00
yyforyongyu 0735522194 multi: fix make fmt 2022-08-23 22:10:24 +08:00
Olaoluwa Osuntokun dc16f5df53 watchtower: uses P2TR for sweep, delivery, and reward addresses
In this commit, we modify the watch tower to use P2TR addrs for just
about anything sweep related.

One eye sore in this diff are the changes to
`backup_task_internal_test.go`. All the values are hard coded, and now
either differ by a value of 48, or needed to be modified to account for
the new assumptions propagated to rewards values and fees.
2022-08-11 17:26:13 -07:00
Tommy Volk 9a10c80bcb multi: move many t.Fatalf calls to require.NoError 2022-06-17 04:26:55 +00:00
Olaoluwa Osuntokun 0ec88b5346 Merge pull request #6347 from yyforyongyu/5388-rm-revc-log
lnwallet+channeldb: store minimal info in revocation log bucket
2022-05-05 15:52:59 -07:00
Oliver Gugger 95ff670c0e multi: add MuSig2Cleanup method to MuSig2 signer 2022-05-04 19:23:58 +02:00
Oliver Gugger f7275c7fc4 multi: implement MuSig2 RPCs and remote signing 2022-04-29 11:41:09 +02:00
yyforyongyu 953767961e multi: use txid instead of tx in BreachRetribution
This commit replaces the field `BreachTransaction` with `BreachTxHash`
as there's no need to pass that large raw transaction.
2022-04-20 01:18:14 +08:00
Oliver Gugger f130eddb92 multi: use prev output fetcher where possible 2022-03-24 18:02:37 +01:00
Oliver Gugger 72c9582b85 multi: bump btcd to taproot aware version 2022-03-24 15:00:25 +01:00
Oliver Gugger 7dfe4018ce multi: use btcd's btcec/v2 and btcutil modules
This commit was previously split into the following parts to ease
review:
 - 2d746f68: replace imports
 - 4008f0fd: use ecdsa.Signature
 - 849e33d1: remove btcec.S256()
 - b8f6ebbd: use v2 library correctly
 - fa80bca9: bump go modules
2022-03-09 19:02:37 +01:00
Olaoluwa Osuntokun 10fba3d859 Merge pull request #6214 from yyforyongyu/server-start-order
server: start htlcswitch early in the pipeline
2022-02-24 15:32:46 -08:00
Oliver Gugger 67f5957c5e tlv+watchtower: move bench test
The benchmark tests import both the tlv and watchtower packages. To make
it possible to extract the tlv package into its own submodule, this test
is better located in the watchtower package.
2022-02-21 13:48:31 +01:00
yyforyongyu 1ad6bbfbc2 multi: add logs when subservers are starting
Also unified the log messages.
2022-02-11 21:17:03 +08:00
Oliver Gugger 895a2e497b multi: formatting and comment fixes 2022-02-10 11:02:02 +01:00
Oliver Gugger dfdc2bff8b multi: run gosimports 2022-02-10 11:02:01 +01:00
Dimitris Apostolou 530a2059e5 multi: Fix typos [skip ci] 2022-01-24 12:19:02 +02:00
eugene fdcd726f9a multi: replace DefaultDustLimit with script-specific DustLimitForSize
This commit updates call-sites to use the proper dust limits for
various script types. This also updates the default dust limit used
in the funding flow to be 354 satoshis instead of 573 satoshis.
2021-09-29 13:33:10 -04:00
ErikEk d5463818a8 bbolt sync-freelist ignored 2021-09-27 06:49:56 +01:00
yyforyongyu 879d3cc86c wtwire: remove reference from lnwire 2021-08-10 05:36:08 +08:00
Oliver Gugger 75531455da multi: make watchtower client/server DBs remote compatible
The final database that needs to be made remote compatible is the
watchtower server and client database.
They are handled a bit differently because both of them are not always
active, only when specifically turned on in the config.
2021-08-04 14:55:53 +02:00
Andras Banki-Horvath 14c851c8fc kvdb: move channeldb/kvdb to top level 2021-05-07 14:18:56 +02:00
Wilmer Paulino 7517243d6d wtclient: decrement pending tasks stats upon accepted task
We'd never decrement the number of pending backups upon a watchtower
accepting one, making it confusing for users to determine whether their
backups have actually been accepted. Along the way, we also rename
NumTasksReceived to NumTasksPending to better reflect its purpose.
2021-04-14 17:18:25 -07:00
Conner Fromknecht e0e57642b6 wtclient/client: fix missed prefix log 2021-01-04 08:33:34 -08:00
Conner Fromknecht 1d3535582b wtclient/seseion_queue: add prefix logging 2021-01-04 08:32:34 -08:00
Conner Fromknecht de09b8d9bd wtclient/session_negotiator: add prefix logging 2021-01-04 08:32:34 -08:00
Conner Fromknecht 505901d7b8 wtclient/task_pipeline: add prefix logging 2021-01-04 08:32:31 -08:00
Yong 582b164c46 kvdb: add timeout options for bbolt (#4787)
* mod: bump btcwallet version to accept db timeout

* btcwallet: add DBTimeOut in config

* kvdb: add database timeout option for bbolt

This commit adds a DBTimeout option in bbolt config. The relevant
functions walletdb.Open/Create are updated to use this config. In
addition, the bolt compacter also applies the new timeout option.

* channeldb: add DBTimeout in db options

This commit adds the DBTimeout option for channeldb. A new unit
test file is created to test the default options. In addition,
the params used in kvdb.Create inside channeldb_test is updated
with a DefaultDBTimeout value.

* contractcourt+routing: use DBTimeout in kvdb

This commit touches multiple test files in contractcourt and routing.
The call of function kvdb.Create and kvdb.Open are now updated with
the new param DBTimeout, using the default value kvdb.DefaultDBTimeout.

* lncfg: add DBTimeout option in db config

The DBTimeout option is added to db config. A new unit test is
added to check the default DB config is created as expected.

* migration: add DBTimeout param in kvdb.Create/kvdb.Open

* keychain: update tests to use DBTimeout param

* htlcswitch+chainreg: add DBTimeout option

* macaroons: support DBTimeout config in creation

This commit adds the DBTimeout during the creation of macaroons.db.
The usage of kvdb.Create and kvdb.Open in its tests are updated with
a timeout value using kvdb.DefaultDBTimeout.

* walletunlocker: add dbTimeout option in UnlockerService

This commit adds a new param, dbTimeout, during the creation of
UnlockerService. This param is then passed to wallet.NewLoader
inside various service calls, specifying a timeout value to be
used when opening the bbolt. In addition, the macaroonService
is also called with this dbTimeout param.

* watchtower/wtdb: add dbTimeout param during creation

This commit adds the dbTimeout param for the creation of both
watchtower.db and wtclient.db.

* multi: add db timeout param for walletdb.Create

This commit adds the db timeout param for the function call
walletdb.Create. It touches only the test files found in chainntnfs,
lnwallet, and routing.

* lnd: pass DBTimeout config to relevant services

This commit enables lnd to pass the DBTimeout config to the following
services/config/functions,
  - chainControlConfig
  - walletunlocker
  - wallet.NewLoader
  - macaroons
  - watchtower
In addition, the usage of wallet.Create is updated too.

* sample-config: add dbtimeout option
2020-12-07 15:31:49 -08:00
Conner Fromknecht 6b4df04950 wtclient_tests: remove expErr param from nextKeyIndex
This command cannot fail (apart from commit errors) so the linter
complained that the argument was always nil.
2020-12-01 16:55:24 -08:00
Conner Fromknecht 9bd73c0a85 wtdb+wtclient: segregate session-key-index reservations by blob-type
This commit introduces a change in the key format used to reserve/lookup
session-key-indexes. Currently the reservations are stored under the
tower id, however this creates issues when multiple clients are using
the same database since only one reservation is permitted per tower.

We fix this by appending the blob type to the session-key-index locator.
This allows multiple clients to reserve keys for the same tower, but
still limits each client to one outstanding reservation. The changes are
made in a way such that we fall back to the legacy format if the a
reservation under the new format is not found, but only if the blob type
matches blob.TypeAltruistCommit, which is so far the only actively
deployed blob type.
2020-12-01 16:24:16 -08:00
Olaoluwa Osuntokun 94f8311667 Merge pull request #4782 from cfromknecht/anchor-wtserver
watchtower: anchor channel support
2020-11-30 17:49:32 -08:00
Conner Fromknecht 1f86526250 wtclient: add backoff in negotiation when createSession() fails
Currently if the tower hangs up during session negotiation there is no
backoff applied. We add backoff here to avoid excessive CPU/network
utilization during unexpected failures.
2020-11-30 13:08:18 -08:00
Conner Fromknecht 5aa59906b5 wtclient: schedule ForceQuit first during Stop
Currently the ForceQuit call is scheduled after trying to stop the
backup queue. In certain cases, the call to stop the queue never
finishes, which means the force quit is never scheduled. We rememdy by
scheduling this call before any other operations to ensure we can always
exit ungracefully if necessary.
2020-11-30 13:08:04 -08:00
Conner Fromknecht 7fc4c7c412 wtclient: prefix client logs w/ legacy or anchor 2020-11-25 15:39:14 -08:00
Conner Fromknecht 781c6e5bea wtclient: add anchor-aware session negotiation and filtering 2020-11-25 15:05:36 -08:00
Conner Fromknecht eb00e496bf watchtower/wtclient: add anchor backup tasks 2020-11-25 15:05:17 -08:00
Conner Fromknecht 97cb030854 wtclient: error on unknown witness type for backup task 2020-11-25 15:04:57 -08:00
Conner Fromknecht 74416c63f8 watchtower/wtpolicy: add IsAnchorChannel helper 2020-11-25 15:04:23 -08:00
Conner Fromknecht dd325f04d2 watchtower/wtclient: parameterize backup task with channel type 2020-11-25 15:04:12 -08:00
Conner Fromknecht 3856acce50 wathtower/blob+wtserver: support anchor sessions 2020-11-25 15:04:00 -08:00
Conner Fromknecht 069296c46c watchtower/wtwire: add AnchorCommit feature bits
Adds the optional/required feature bit pair for negotiating sessions for
anchor channels under features bits 2+3.
2020-11-25 15:03:49 -08:00
Conner Fromknecht b9f031b3e3 Merge pull request #4746 from wpaulino/tower-last-addr
watchtower: prevent removal of last tower addr
2020-11-11 09:27:54 -08:00
Andras Banki-Horvath d89f51d1d0 multi: add reset closure to kvdb.Update
Similarly as with kvdb.View this commits adds a reset closure to the
kvdb.Update call in order to be able to reset external state if the
underlying db backend needs to retry the transaction.
2020-11-05 17:57:12 +01:00
Andras Banki-Horvath 2a358327f4 multi: add reset closure to kvdb.View
This commit adds a reset() closure to the kvdb.View function which will
be called before each retry (including the first) of the view
transaction. The reset() closure can be used to reset external state
(eg slices or maps) where the view closure puts intermediate results.
2020-11-05 17:57:12 +01:00
Wilmer Paulino d3157bcaf8 watchtower: prevent removal of last tower addr
This addresses a potential panic when a tower has one of its candidate
sessions chosen, but its only reachable address was removed by a
user-initiated RPC before the fact.
2020-11-04 15:43:18 -08:00
Olaoluwa Osuntokun 50976e5418 Merge pull request #4576 from cfromknecht/anchor-justice-txn
watchtower: conditionally reconstruct justice txns for anchor channels
2020-09-22 21:10:53 -07:00
yyforyongyu ef38b12fda multi: use timeout field in dialer 2020-09-16 11:50:04 +08:00
Conner Fromknecht a0e54a9650 watchtower/lookout: use correct to-local-penalty size for anchors
This commit fixes the to-local-witness estimate to use the correct
witness size estimate for anchor channels. We retain the off-by-one bug
from the original constant otherwise.
2020-09-15 12:48:23 -04:00