Commit Graph

7026 Commits

Author SHA1 Message Date
Conner Fromknecht
3ef2a36733
watchtower/wtdb/tower_db: add TowerDB and db versioning 2019-04-26 17:21:35 -07:00
Conner Fromknecht
c99d1313fe
watchtower/wtdb/log: add WTDB logs 2019-04-26 17:21:20 -07:00
Conner Fromknecht
a36397e21a
watchtower/wtdb/codec_test: encode/decode quick checks 2019-04-26 17:21:05 -07:00
Conner Fromknecht
7ba197c6a7
watchtower/wtdb: add encode/decode to session info + updates 2019-04-26 17:20:52 -07:00
Conner Fromknecht
dccef4c8bf
watchtower/wtdb/codec: import channeldb code for extension 2019-04-26 17:20:36 -07:00
Conner Fromknecht
678ca9feff
channeldb/codec: add NewUnknownElementType constructor 2019-04-26 17:20:23 -07:00
Conner Fromknecht
2ce6228021
watchtower/wtmock/tower_db: move mock tower db to wtmock pkg 2019-04-26 17:19:58 -07:00
Olaoluwa Osuntokun
a783f35ad4
Merge pull request #2932 from wpaulino/sync-manager-improvements
discovery: SyncManager improvements
2019-04-26 15:59:38 -07:00
Olaoluwa Osuntokun
c6b2c375f6
Merge pull request #2866 from cfromknecht/inc-worker-timeout
pool/worker: increase worker timeout to 90s
2019-04-26 15:46:59 -07:00
Olaoluwa Osuntokun
bdf1194835
contractcourt: detect local force closes based on commitment outputs
In this commit, we modify the way we detect local force closes. Before
this commit, we would directly check the broadcast commitment's txid
against what we know to be our best local commitment. In the case of DLP
recovery from an SCB, it's possible that the user force closed, _then_
attempted to recover their channels. As a result, we need to check the
outputs directly in order to also handle this rare, but
possible recovery scenario.

The new detection method uses the outputs to detect if it's a local
commitment or not. Based on the state number, we'll re-derive the
expected scripts, and check to see if they're on the commitment. If not,
then we know it's a remote force close. A new test has been added to
exercise this new behavior, ensuring we catch local closes where we have
and don't have a direct output.
2019-04-26 15:13:01 -07:00
Olaoluwa Osuntokun
30e0dd7311
Merge pull request #3015 from wpaulino/lntest-subscribe-graph-race
lntest: use test subscription to prevent SubscribeChannelGraph race
2019-04-26 15:11:23 -07:00
Olaoluwa Osuntokun
32b7ce0756
Merge pull request #3013 from halseth/go-mod-btcwallet-9d95f76e99a7
[dependency update] update to latest btcwallet, btcutil, btcd, neutrino
2019-04-26 15:09:37 -07:00
Johan T. Halseth
1387af8c94
Merge pull request #2982 from Roasbeef/faster-chain-watcher-dlp-tests
contractcourt: speed up TestChainWatcherDataLossProtect by ditching q…
2019-04-26 10:27:56 +02:00
Johan T. Halseth
ef6c2f5adc
mod: update to latest btcwallet, btcd, btcutil, neutrino
Resolves a crash when using neutrino backend, and a bugfix for filter
matchin.
2019-04-26 10:17:02 +02:00
Wilmer Paulino
1ad4528975
lntest: use test subscription to prevent SubscribeChannelGraph race
This race was possible due to us making a subscription request before
the ChannelRouter has started. We address it by creating a dummy
subscription before proceeding to the real one to ensure we can do so
successfully. We use a dummy one in order to not consume an update from
the real one. This addresses the common "timed out waiting for opened
channel" flake within the integration test suite since the subscription
was never properly created, so we'd never be notified of when new graph
updates were received.
2019-04-25 18:53:36 -07:00
Olaoluwa Osuntokun
f1df2eadb7
Merge pull request #2820 from cfromknecht/session-key-derivation
wtclient: session private key derivation
2019-04-25 17:59:46 -07:00
Olaoluwa Osuntokun
b44556fa8a
Merge pull request #1926 from halseth/lnd-package
Move daemon from main to lnd package
2019-04-25 17:52:19 -07:00
Olaoluwa Osuntokun
279a17b3bf
contractcourt: speed up TestChainWatcherDataLossProtect by ditching quickcheck
In this commit, we speed up the `TestChainWatcherDataLossProtect`
_considerably_ by enumerating relevant tests using table driven tests
rather than generating random tests via the `testing/quick` package.
Each of these test cases are also run in parallel bringing down the
execution time of this test from a few minutes, to a few seconds.
2019-04-25 16:03:28 -07:00
Olaoluwa Osuntokun
b63584980a
Merge pull request #3008 from halseth/lntest-dont-return-nil-error
[trivial] lntest: don't return from ensureConnected on non-error
2019-04-24 17:07:06 -07:00
Olaoluwa Osuntokun
7ba1344468
Merge pull request #3007 from halseth/lnd-test-balance-flake
lnd_test: check Dave's balance in WaitNoErr
2019-04-24 17:05:12 -07:00
Olaoluwa Osuntokun
d32db4a813
Merge pull request #2956 from halseth/complete-payment-request-wait-for-update
[lnd_test] wait for state update in completePaymentRequests
2019-04-24 17:04:06 -07:00
Wilmer Paulino
d68842ee9e
discovery: queue active syncers until initial historical sync signal
In this commit, we begin to queue any active syncers until the initial
historical sync has completed. We do this to ensure we can properly
handle any new channel updates at tip. This is required for fresh nodes
that are syncing the channel graph for the first time. If we begin
accepting updates at tip while the initial historical sync is still
ongoing, then we risk not processing certain updates since we've yet to
learn of the channels themselves.
2019-04-24 13:20:57 -07:00
Wilmer Paulino
07136a5bc2
discovery: handle initial historical sync disconnection
In this commit, we add logic to handle a peer with whom we're performing
an initial historical sync disconnecting. This is required to ensure we
get as much of the graph as possible when starting a fresh node. It will
also serve useful to ensure we do not get stalled once we prevent active
GossipSyncers from starting until the initial historical sync has
completed.
2019-04-24 13:20:55 -07:00
Wilmer Paulino
227e492ccf
discovery: make historicalSync transition synchronous
We do this to ensure that the state transition from chansSynced to
syncingChans has occurred by the time we return back to the caller.
2019-04-24 13:20:18 -07:00
Wilmer Paulino
72e9674cff
discovery: simplify chooseRandomSyncer helper 2019-04-24 13:20:16 -07:00
Wilmer Paulino
29baa12254
discovery: synchronize new/stale GossipSyncers with syncerHandler
Now that the roundRobinHandler is no longer present, this commit aims to
clean up and simplify some of the logic surrounding initializing/tearing
down new/stale GossipSyncers from the SyncManager. Along the way, we
also synchronize these calls with the syncerHandler, which will serve
useful in future work that allows us to recovery from initial historical
sync disconnections.
2019-04-24 13:19:09 -07:00
Wilmer Paulino
5db2cf6273
discovery+server: remove roundRobinHandler and related code
Since ActiveSync GossipSyncers no longer synchronize our state with the
remote peers, none of the logic surrounding the round-robin is required
within the SyncManager.
2019-04-24 13:19:07 -07:00
Wilmer Paulino
9a6e8ecb9e
discovery: remove channel synchronization from ActiveSync GossipSyncers
In this commit, we remove the ability for ActiveSync GossipSyncers to
synchronize our graph with our remote peers. This serves as a starting
point towards allowing the daemon to only synchronize our graph through
historical syncs, which will be routinely done by the SyncManager.
2019-04-24 13:19:06 -07:00
Johan T. Halseth
7f4d1cee6d
lntest: don't return from ensureConnected on non-error
This would casue the method to return before the peer list check was
performed.
2019-04-24 09:44:15 +02:00
Johan T. Halseth
ab327dc8c1
lnd_test: check Dave's balance in WaitNoErr
Resolves a flake.
2019-04-24 09:01:38 +02:00
Conner Fromknecht
d1ff783a9e
watchtower/wtclient/client_test: test no ack create session 2019-04-23 20:08:02 -07:00
Conner Fromknecht
71f72894f8
watchtower/wtclient/client: ensure dispatcher can force quit...
during session creation.
2019-04-23 20:07:46 -07:00
Conner Fromknecht
9603bfa602
watchtower/wtclient/session_negotiator: don't backoff on first attempt 2019-04-23 20:07:29 -07:00
Conner Fromknecht
1622a212d7
watchtower/wtserver: add NoAckCreateSession for testing 2019-04-23 20:07:12 -07:00
Conner Fromknecht
1000223c71
watchtower/wtwire/error_code: add DeleteSessionCodeNotFound string 2019-04-23 20:06:56 -07:00
Conner Fromknecht
590f5811e8
watchtower/wtserver/server: print connFailure error code name 2019-04-23 20:06:38 -07:00
Conner Fromknecht
ec6e2010d6
watchtower/wtmock: validate key index reservation 2019-04-23 20:06:20 -07:00
Conner Fromknecht
978a0a8de6
watchtower/wtserver/server: permit unused session overrwite 2019-04-23 20:06:04 -07:00
Conner Fromknecht
9b1bc9fd79
watchtower/wtwire/create_session_reply: return last applied 2019-04-23 20:05:47 -07:00
Conner Fromknecht
9aa775e64e
watchtower/wtserver/server: only generate addrs for reward sessions 2019-04-23 20:05:29 -07:00
Conner Fromknecht
999cbbdc54
watchtower/wtserver/server: check blob type first 2019-04-23 20:05:12 -07:00
Conner Fromknecht
bebe6461a9
watchtower/wtclient: use HD session key derivation 2019-04-23 20:04:55 -07:00
Conner Fromknecht
0404aedede
watchtower/wtclient/interface+wtmock: add session key reservation 2019-04-23 20:04:40 -07:00
Conner Fromknecht
df390df966
watchtower/wtmock/client_db: clone bytes w/ nil 2019-04-23 20:04:23 -07:00
Conner Fromknecht
c6f95c5667
watchtower/wtdb/client_session: replace keydesc w/ KeyIndex 2019-04-23 20:04:06 -07:00
Conner Fromknecht
2f9f46cf24
keychain/derivation: adds watchtower session key family 2019-04-23 20:03:48 -07:00
Conner Fromknecht
3af6eafc8e
watchtower/wtclient/interface: add SecretKeyRing iface 2019-04-23 20:03:15 -07:00
Conner Fromknecht
7d99005dde
watchtower/wtclient/interface: add LoadTower and mock impl 2019-04-23 19:17:21 -07:00
Conner Fromknecht
1c22474ad3
Merge pull request #2989 from meeDamian/gateway-v1.0.5
Update jackpal/gateway to v1.0.5
2019-04-23 14:14:30 -07:00
Johan T. Halseth
ccff4fc0a5
make: point makefile to new main package 2019-04-23 20:57:33 +02:00