Commit Graph

9280 Commits

Author SHA1 Message Date
Johan T. Halseth
7b8eae38e5
peer: avoid chansync resend loop
If a peer receives a channel reestablish message shortly after the
channel has been closed, it will resend its own channel reestablish
message. In the meantime the other peer could also have seen the channel
being closed and will also resend its own message. This leads to a
resend loop that never terminates.

To avoid two peers getting into this situation, we now allow only one
such resent message per conection.
2020-03-11 12:13:25 +01:00
Oliver Gugger
7917d22daf
Makefile: don't format proto
There are different versions of clang-format being installed on
different versions of ubuntu that apparently produce different
results when formatting the proto files. This is likely too much
of a hurdle for new contributors to also manually install the
correct version of a command line tool just to format stuff.
2020-03-11 10:17:45 +01:00
Oliver Gugger
f55860ccd8
lncli: fix windows compilation 2020-03-11 10:07:43 +01:00
Oliver Gugger
3b8dd4bd63
travis: cross-compile windows 2020-03-11 09:12:52 +01:00
Oliver Gugger
0a9dc6aeb2
Merge pull request #4042 from guggero/travis-rpc
travis: format, compile and verify protos
2020-03-11 09:04:21 +01:00
Conner Fromknecht
fcecc5cc39
Merge pull request #4066 from guggero/unlock-stdin
lncli: allow unlock with password from stdin
2020-03-10 17:58:55 -07:00
Olaoluwa Osuntokun
113c5c2054
Merge pull request #4062 from cfromknecht/size-typo
input/size: correct NestedP2WSHSize comment
2020-03-10 17:40:44 -07:00
Oliver Gugger
59875b6ec4
github: add proto formatting to pull request template 2020-03-10 20:19:21 +01:00
Oliver Gugger
10e247540f
watchtowerrpc: fix typo 2020-03-10 20:19:21 +01:00
Oliver Gugger
1e1b68accf
lnrpc: update README to describe new commands 2020-03-10 20:19:20 +01:00
Oliver Gugger
fdcb30e57f
lnrpc: run clang-format 2020-03-10 20:19:08 +01:00
Conner Fromknecht
ae815f221f
input/size: correct NestedP2WSHSize comment 2020-03-10 11:53:58 -07:00
Wilmer Paulino
e17ad8bc84
Merge pull request #4048 from wpaulino/tor-hashed-password
server+tor: add support for Tor HASHEDPASSWORD authentication method
2020-03-10 11:12:41 -07:00
Tomas Carnecky
018e8b5b97
server+tor: add support for Tor HASHEDPASSWORD authentication method
This provides users an alternative over the SAFECOOKIE authentication
method, which may not be as useful if users are connecting to a remote
Tor sevrer due to lnd not being able to retrieve the cookie file.
2020-03-10 10:32:44 -07:00
Oliver Gugger
ed8924c6c5
lncli: allow unlock with password from stdin 2020-03-10 14:29:45 +01:00
Conner Fromknecht
7a1013fb9e
make+travis: verify compiled protos on travis 2020-03-10 13:03:01 +01:00
Olaoluwa Osuntokun
3dda93e30d
Merge pull request #3821 from halseth/pluggable-anchors-lnwallet
[anchor] pluggable anchor commitments
2020-03-09 19:49:05 -07:00
Olaoluwa Osuntokun
f29169e7d6
Merge pull request #4000 from joostjager/payment-raw-failure
routing+channeldb: mpp bucket structure
2020-03-09 18:57:04 -07:00
Conner Fromknecht
852ab592bb
Merge pull request #4034 from cfromknecht/nested-size-fix
input/size: correct NP2WKH and NP2SH input count
2020-03-09 18:24:52 -07:00
Olaoluwa Osuntokun
5ba630f02b
Merge pull request #3963 from guggero/safety-doc
doc: add Operational Safety Guidelines document
2020-03-09 17:39:03 -07:00
Olaoluwa Osuntokun
462048ae81
Merge pull request #1895 from Crypt-iQ/lnwire_fuzzing_09_11_2018
fuzz: new fuzz package and lnwire parsing harnesses
2020-03-09 17:23:19 -07:00
Olaoluwa Osuntokun
cbef26b9f6
Merge pull request #3993 from guggero/unconfirmed-chanbackup
chanbackup: update on-disk backup file with unconfirmed channels
2020-03-09 17:18:23 -07:00
Olaoluwa Osuntokun
1589810f07
build: update to x/crypto version w/o broken poly1305 arm assembly
In this commit, we update to a new version of `x/crypto` that drops
broken ARM assembly that can cause a segfault in systems like raspis.
The broken assembly was removed in this commit to the runtime:
8b774103d3.

Fixes #4052.
2020-03-09 12:29:43 -07:00
Joost Jager
c0cb05d7b4
lnrpc: expose raw htlc failure
Adds a new rpc field to the payment htlc proto message and populates it
with data that is now stored in the db.
2020-03-09 18:31:41 +01:00
Joost Jager
866623e84b
channeldb/migration13: migrate to mpp structure
This commit migrates the payments in the database to a new structure
that allows for multiple htlcs per payments. The migration introduces a
new sub-bucket that contains a list of htlcs and moves the old single
htlc into that.
2020-03-09 18:31:39 +01:00
Joost Jager
4cea2d5213
channeldb/migtest: add migration test tools
This commit adds test helper code to dump, restore and verify the
low-level bbolt database structure.
2020-03-09 18:31:37 +01:00
Joost Jager
f86e68a1a2
channeldb+routing: store full htlc failure reason
This commit extends the htlc fail info with the full failure reason that
was received over the wire. In a later commit, this info will also be
exposed on the rpc interface. Furthermore it serves as a building block
to make SendToRoute reliable across restarts.
2020-03-09 18:31:35 +01:00
Joost Jager
48c0e42c26
channeldb+routing: store all payment htlcs
This commit converts the database structure of a payment so that it can
not just store the last htlc attempt, but all attempts that have been
made. This is a preparation for mpp sending.

In addition to that, we now also persist the fail time of an htlc. In a
later commit, the full failure reason will be added as well.

A key change is made to the control tower interface. Previously the
control tower wasn't aware of individual htlc outcomes. The payment
remained in-flight with the latest attempt recorded, but an outcome was
only set when the payment finished. With this commit, the outcome of
every htlc is expected by the control tower and recorded in the
database.

Co-authored-by: Johan T. Halseth <johanth@gmail.com>
2020-03-09 18:31:33 +01:00
Johan T. Halseth
b7885dbbae
lnwallet+size: select HTLC fees based on channel type 2020-03-09 12:59:35 +01:00
Johan T. Halseth
ea2a58e80f
fundingmanager+lnwallet: enable anchor commitments
If both nodes are signalling the feature, make all opened channels using
this type.
2020-03-09 12:59:35 +01:00
Johan T. Halseth
7adb1bcbaa
chanbackup: disable channel backup for anchor types 2020-03-09 12:59:35 +01:00
Johan T. Halseth
fd93c568ea
config+link: disable watchtower for anchors 2020-03-09 12:59:34 +01:00
Johan T. Halseth
21126ab0f3
multi: optionally enable and signal anchor support
Defaults to disabled.
2020-03-09 12:59:34 +01:00
Johan T. Halseth
44756b5811
cfg: rename legacyprotocol to protocol
Since we are also going to use it for experimental new features.
2020-03-09 12:59:34 +01:00
Johan T. Halseth
51c5352ae4
itest: make commit type enum
To prepare for adding more commit types to test for basic channel
funding, we make the commit type an enum that gets its own set of
subtests.
2020-03-09 12:59:34 +01:00
Johan T. Halseth
f95a82bf5f
lnwallet+funding: create CommitmentType enum 2020-03-09 12:59:34 +01:00
Johan T. Halseth
8741b93723
lnwallet/reservation: add non-initiator balance check
If we are the initiator, we check that our starting balance after
subtracting fees are not less than two times the default dust limit.

This commit adds a similar check for the non-initiator case, checking
that the remote party has a starting balance of reasonable size.
2020-03-09 12:59:34 +01:00
Johan T. Halseth
ad8e9f30c6
lnwallet+breacharbiter: record local csv delay 2020-03-09 12:59:34 +01:00
Johan T. Halseth
92af2342da
lnwallet+nursery+input: set sequence=1 for direct HTLC spends 2020-03-09 12:59:33 +01:00
Johan T. Halseth
c5d58b4762
lnwallet: set 2nd level sequence according to channel type 2020-03-09 12:59:33 +01:00
Johan T. Halseth
bddd3e128c
lnwallet: make second level sigs using sighash single|anyonecanpay 2020-03-09 12:59:33 +01:00
Johan T. Halseth
d1089fb449
input/test_utils: make mockSigner use SigHashType from sign descriptor 2020-03-09 12:59:33 +01:00
Johan T. Halseth
6810912c86
lnwallet: choose HTLC scripts based on channel type 2020-03-09 12:59:33 +01:00
Johan T. Halseth
21c5a957bc
lnwallet/channel: add feerate sanity check 2020-03-09 12:59:22 +01:00
Johan T. Halseth
ea94dbbe34
input+lnwallet: use individual commit weight calculations for channel type
Based on the channel type, the commitment weight will be calculated.
2020-03-09 12:10:59 +01:00
Johan T. Halseth
1f28bd8086
contractcourt/commit_sweep_resolver: set sweep witness type based on witness script
We use the fact that we can tell whether the commit is local or remote
by inspecting the witness script. We cannot use the maturity delay
anymore, as we can have delayed to_remote outputs also now.

Co-authored-by: Joost Jager <joost.jager@gmail.com>
2020-03-09 12:10:59 +01:00
Johan T. Halseth
af68ff1640
lnwallet: add anchor commitmenttype
With this commitment type, we'll add extra anchor outputs to the
commitment transaction if the anchor channel type is active.
2020-03-09 12:10:59 +01:00
Johan T. Halseth
50199aeaf3
input/script_utils: add anchor scripts + tests 2020-03-09 12:10:59 +01:00
Johan T. Halseth
6deb913a8d
input: add CommitmentToRemoteConfirmed witness type 2020-03-09 12:10:59 +01:00
Johan T. Halseth
990992ce94
input/script_utils: add delayed to_remote script + tests 2020-03-09 12:10:59 +01:00