Commit Graph

7923 Commits

Author SHA1 Message Date
Conner Fromknecht
9157c88f93
watchtower/wtclient: dedup backups across restarts
Now that the committed and acked updates are persisted across restarts,
we will use them to filter out duplicate commit heights presented by the
client.
2019-05-24 18:24:41 -07:00
Conner Fromknecht
3be651b0b3
watchtower/wtdb: add ClientDB
This commit adds the full bbolt-backed client database as well as a set
of unit tests to assert that it exactly implements the same behavior as
the mock ClientDB.
2019-05-24 18:24:41 -07:00
Wilmer Paulino
682aebdd53
sweep: broadcast sweep transactions in descending fee rate order
In this commit, we address another issue that arose with the
introduction of the fee rate buckets. We'll use an example to explain
the problem space:

Let's say we have inputs A, B, and C within the same fee rate bucket. If
A's fee rate is bumped to a higher bucket, then it's currently possible
for the lower fee rate bucket to be swept first, which would produce an
invalid RBF transaction since we're removing an input from the original
without providing a higher fee. By the time we get to the higher fee
rate bucket, we broadcast a valid RBF transaction _only_ sweeping input
A, which would evict the transaction sweeping inputs B and C from the
mempool.

To prevent this eviction, we can simply broadcast the higher fee rate
sweep transactions first, to ensure we have valid RBF transactions.
2019-05-24 15:30:39 -07:00
Wilmer Paulino
5172a5e255
multi: support arbitrary client fee preferences to UtxoSweeper
In this commit, we introduce support for arbitrary client fee
preferences when accepting input sweep requests. This is possible with
the addition of fee rate buckets. Fee rate buckets are buckets that
contain inputs with similar fee rates within a specific range, e.g.,
1-10 sat/vbyte, 11-20 sat/vbyte, etc. Having these buckets allows us to
batch and sweep inputs from different clients with similar fee rates
within a single transaction, allowing us to save on chain fees.

With this addition, we can now get rid of the UtxoSweeper's default fee
preference. As of this commit, any clients using the it to sweep inputs
specify the same fee preference to not change their behavior. Each of
these can be fine-tuned later on given their use cases.
2019-05-24 15:30:38 -07:00
Wilmer Paulino
138d9b68f0
lnwallet+sweep: add String method to FeePreference 2019-05-24 15:30:36 -07:00
Olaoluwa Osuntokun
eba989048c
Merge pull request #3117 from halseth/update-neutrino-dep
[dependency update]: update to latest neutrino dep
2019-05-24 13:02:06 -07:00
AdamISZ
9b3676fdd4
Allow unit-cover target for make to filter by package
Previous to this commit, running `make unit-cover pkg=xx`
would ignore the selected package and run unit tests and
coverage for all packages.
After this commit, the package selected with pkg= is the
only one that is tested and coverage output generated for.
If no pkg is selected, the default is as before, all pkgs.
2019-05-24 12:51:35 +02:00
Johan T. Halseth
ea50502a79
go mod: update to latest neutrino dep 2019-05-24 12:41:31 +02:00
Johan T. Halseth
af3b04e53f
Merge pull request #3103 from halseth/syncmanager-resync-historical
discovery/sync_manager: restart historical sync on first connected peer
2019-05-24 12:17:02 +02:00
Johan T. Halseth
6ba6982ae7
discovery/sync_manager_test: add TestSyncManagerHistoricalSyncOnReconnect
TestSyncManagerHistoricalSyncOnReconnect tests that the sync manager will
re-trigger a historical sync when a new peer connects after a historical
sync has completed, but we have lost all peers.
2019-05-24 11:05:30 +02:00
Johan T. Halseth
526486ae24
discovery/sync_manager: restart historical sync on first connected peer
To handle the case where we have been without peers, and get a new
connection, we reset the historical scan booleans when the first active
syncer is connected to trigger another historical sync.
2019-05-24 11:05:29 +02:00
Conner Fromknecht
b35a5b8892
watchtower/wtclient: integrate ClientChannelSummaries
In this commit, we utilize the more generic ClientChanSummary instead of
exposing methods that only allow us to set and fetch sweep pkscripts.
2019-05-23 20:48:50 -07:00
Conner Fromknecht
25fc464a6e
watchtower/wtdb/client_chan_summary: add ClientChanSummary
A ClientChanSummary will be inserted for each channel registered with
the client, which for now will just track the sweep pkscript to use. In
the future, this will be extended with additional information to enable
the client to efficiently compute which historical states need to be
backed up under a given policy.
2019-05-23 20:48:36 -07:00
Conner Fromknecht
440ae7818a
watchtower/wtmock/client_db: adjust mock clientdb behavior
In advance of the upcoming wtdb.ClientDB, we'll modify the behavior
of the mockdb to be more like the final bbolt backed one, and assert
that all or our tests are still passing.
2019-05-23 20:48:23 -07:00
Conner Fromknecht
2a904cb69f
watchtower/wtdb: add Encode/Decode methods to wtclient structs 2019-05-23 20:48:08 -07:00
Conner Fromknecht
1db9bf2fd4
watchtower/wtdb: create embedded ClientSessionBody
This commit splits out the portions of the ClientSession into an
embedded ClientSessionBody, since these fields will be serialized
together on-disk.
2019-05-23 20:47:49 -07:00
Conner Fromknecht
5ad9530502
watchtower/wtdb: return sorted ClientSession.CommittedUpdates
This commit replaces the map-based CommittedUpdates field with a slice.
When reading from disk, these will already be sorted by bbolt, so the
client restore the updates as presented without needing to sort them
first.

Since the key in the map variant was the sequence number, we refactor
the CommittedUpdate struct to have a sequence number and an embedded
CommittedUpdateBody (which is equivalent to the old CommittedUpdate).
The database is then expected to populate the sequence number from the
key on disk.

Since the sequence number is now directly integrated in the
CommittedUpdate struct, this allow allows us to remove the now redundant
seqNum argument from CommitUpdate.
2019-05-23 20:47:36 -07:00
Conner Fromknecht
3509c0c991
watchtower/multi: use proper TowerID type
This allows serialization methods to be added with TowerID method
receivers.
2019-05-23 20:47:22 -07:00
Conner Fromknecht
ec7c16fdc1
watchtower/wtdb: prepare for addition of client db
This commit renames the variables dbName to towerDBName and dbVersions
to towerDBVersions, to distinguish between the upcoming clientDBName
clientDBVersions. We also move resusable portions of the database
initialization and default endianness to its own file so that it can be
shared between both tower and client databases.
2019-05-23 20:47:08 -07:00
Wilmer Paulino
6e0084fec9
Merge pull request #3075 from cfromknecht/crtr-nil-path-curves
routing/router: nil path pubkeys before spewing
2019-05-23 20:01:54 -07:00
Olaoluwa Osuntokun
0c762af263
scripts: update bitcoind version to 0.18 2019-05-23 18:08:58 -07:00
Olaoluwa Osuntokun
50f0ac5683
Merge pull request #2308 from chokoboko/channels-in-getnodeinfo
rpcserver: add channels to GetNodeInfo response
2019-05-23 18:01:12 -07:00
Olaoluwa Osuntokun
18b9e1dd16
build: update to latest btcwallet+btcd 2019-05-23 17:38:43 -07:00
chokoboko
51dc422721 rpcserver: add channels to GetNodeInfo response 2019-05-23 16:03:39 +03:00
Johan T. Halseth
6cd71b7f7a
Merge pull request #2312 from xsb/color-node-update
rpc: add node color to NodeUpdate and GetInfo
2019-05-23 14:21:05 +02:00
John Griffith
f6058b4117 server: added new variables to gossiper config 2019-05-23 10:51:25 +01:00
John Griffith
cf2885dd4a discovery: test we calculate and generate correct sub batch sizes 2019-05-23 10:51:25 +01:00
John Griffith
9eb5fe9587 discovery: split gossiper announcement into sub batches 2019-05-23 10:51:25 +01:00
Xavi Soler
0e38c722b3
lncli: include color in getinfo response 2019-05-23 10:52:22 +02:00
Xavi Soler
f4f3cea9a6
rpcserver: include color to getinfo and topology update 2019-05-23 10:52:18 +02:00
Xavi Soler
28021361d1
routing: add color to node update 2019-05-23 10:52:12 +02:00
Xavi Soler
ee2e49141e
lnrpc: add color to GetInfoResponse and NodeUpdate 2019-05-23 10:51:59 +02:00
Olaoluwa Osuntokun
063ecedf3a
Merge pull request #3082 from joostjager/upgrade-gen-go
lnrpc: upgrade to protobuf v1.3.1
2019-05-22 21:10:26 -07:00
Olaoluwa Osuntokun
649b5208a6
Merge pull request #3111 from cfromknecht/fix-bitcoind-initial-install
scripts/install_bitcoind: fix initial install
2019-05-22 20:06:49 -07:00
Conner Fromknecht
b34150144d
scripts/install_bitcoind: fix initial install 2019-05-22 19:21:24 -07:00
Olaoluwa Osuntokun
c654b829f4
Merge pull request #3104 from wpaulino/lncli-create-restore-backup
cmd/lncli: properly parse channel backup within lncli create
2019-05-22 17:12:25 -07:00
Olaoluwa Osuntokun
0afc70ec67
Merge pull request #3108 from cfromknecht/build-bitcoind-0.17
travis: install bitcoind 0.17.1 binaries manually
2019-05-22 16:58:11 -07:00
Conner Fromknecht
98f8696e68
travis: install bitcoind 0.17.1 binaries 2019-05-22 16:35:46 -07:00
Johan T. Halseth
4806003b74
Merge pull request #2704 from MDrollette/multiple-opts
config: allow adding multiple tls ips and domains
2019-05-22 08:59:19 +02:00
Johan T. Halseth
437f83998e
Merge pull request #3098 from cfromknecht/increase-funding-timeout
fundingmanager: bump max non-initiator funding timeout to 2 weeks
2019-05-22 08:46:54 +02:00
Wilmer Paulino
92d780f157
cmd/lncli: properly parse channel backup within lncli create 2019-05-21 15:16:44 -07:00
Johan T. Halseth
339080394d
Merge pull request #3096 from grunch/add-minchansize-to-sample-conf
Add minchansize to sample config file
2019-05-21 09:52:03 +02:00
Olaoluwa Osuntokun
57715b5192
Merge pull request #3093 from wpaulino/lncli-openchannel-unconfirmed
cmd/lncli: properly spend unconfirmed utxos with openchannel
2019-05-20 18:07:04 -07:00
Joost Jager
9a4c0d5699
lnrpc: upgrade to protobuf v1.3.1
This commit upgrades the protobuf version. Compared to the previous
v1.2.0 it generates smaller diffs in generated code. This change was
introduced in:

fffb0f7828
2019-05-20 15:35:14 +02:00
Johan T. Halseth
777f1b7b23
Merge pull request #3076 from sangaman/proto-typos
lnrpc: fix typos
2019-05-20 15:00:55 +02:00
Johan T. Halseth
2c1c29e060
Merge pull request #3081 from halseth/route-remove-totalfees
routing/route+multi: remove redundant TotalFees field
2019-05-20 15:00:01 +02:00
Johan T. Halseth
60bad9a4e5
Merge pull request #2974 from OpinionatedGeek/patch-1
Build LND subservers when building docker image
2019-05-20 14:40:53 +02:00
Conner Fromknecht
08654786ad
fundingmanager: bump max non-initiator funding timeout to 2 weeks
The previous value was set to two days, which may not be enough to
handle large fee spikes where users still which to submit channels with
a low fee and don't mind lowering their time preference. Since the
timeout is only applied to channels that we don't initiate, there's real
downside since it's not our funds that are locked up.
2019-05-18 15:21:56 -07:00
Francisco Calderón
8a31da9d09
Add minchansize to sample config file 2019-05-18 12:31:32 -03:00
Olaoluwa Osuntokun
f20ab2fc7b
Merge pull request #3090 from cfromknecht/range-loop-fixes
utxonursery+chanbackup: fix range loop binding bugs
2019-05-17 15:50:54 -07:00