Commit Graph

3989 Commits

Author SHA1 Message Date
Conner Fromknecht
cb7f34895c
keychain/btwallet: support coin type configuration
This commit allows for secret keyrings to be initialized
with a specific coin type, which allows us to use
different derivation paths for bitcion and litecoin.

It also provide default constants for Bitcion and
Litecoin BIP 44 coin types.
2018-03-13 16:33:46 -07:00
Conner Fromknecht
2447f3097f
chainregistry: init secret key ring wth CoinType from params 2018-03-13 16:33:45 -07:00
Conner Fromknecht
55da4cc547
chainparams: add CoinType to parameters for HD derivation 2018-03-13 16:33:45 -07:00
Conner Fromknecht
c1f0c4ffda
peer: DecodeOnionObfuscator -> ExractErrorEncrypter 2018-03-13 16:33:29 -07:00
Conner Fromknecht
a9904b328f
servrer: pass ExtractErrorEncrypter 2018-03-13 16:33:29 -07:00
Conner Fromknecht
f1e407cecc
htlcswitch/test_utils: DecodeOnionObfuscator - ExtractErrorEncrypter 2018-03-13 16:33:29 -07:00
Conner Fromknecht
c762fe0caa
htlcswitch/switch: pass ExtractErrorEncrypter to circuitMap 2018-03-13 16:33:29 -07:00
Conner Fromknecht
cee221f8cc
htlcswitch/mock: add Reextract NOP to mockObfuscator 2018-03-13 16:33:28 -07:00
Conner Fromknecht
2fbb0c8b92
htlcswitch/link_test: DecodeOnionObfuscator -> ExtractErrorEncrypter 2018-03-13 16:33:28 -07:00
Conner Fromknecht
d13a566284
htlcswitch/link: DecodeOnionObfuscator -> ExtractErrorEncrypter 2018-03-13 16:33:28 -07:00
Conner Fromknecht
3d487e3ca3
htlcswitch/iterator: extract error encrypter from ephemeral key 2018-03-13 16:33:28 -07:00
Conner Fromknecht
dccab0a654
htlcswitch/failure: add Reextract to SphinxErrorEncrypter 2018-03-13 16:33:28 -07:00
Conner Fromknecht
75c7349823
htlcswitch/circuit_test: use circuit map config and test rextraction 2018-03-13 16:33:28 -07:00
Conner Fromknecht
64ee4e0247
htlcswitch/circuit_map: add Config and Reextract obfuscators 2018-03-13 16:33:27 -07:00
Olaoluwa Osuntokun
4ced071a7d
cmd/lncli+log: fix linter error 2018-03-13 13:01:21 -07:00
Olaoluwa Osuntokun
813902ddeb
log: hook up the logger for the sphinx package
With this logger in place, we’ll properly get log updates whenever a
set of shared secrets is to be garbage collected.
2018-03-13 12:59:14 -07:00
Olaoluwa Osuntokun
ddfe73eedb
cmd/lncli: ensure mnemonic for restore flow is exactly 24 words 2018-03-13 12:57:13 -07:00
Olaoluwa Osuntokun
0933f42674
Merge pull request #829 from halseth/peer-failed-channel-tracking
peer: track failed channels
2018-03-13 12:55:14 -07:00
Olaoluwa Osuntokun
d75e2f76cc
Merge pull request #833 from wilmerpaulino/fix-macaroon-path
cmd/lncli: correctly set modified macaroon path
2018-03-13 12:33:59 -07:00
Wilmer Paulino
5a2a4a26b6
cmd/lncli: correctly set modified macaroon path 2018-03-13 12:17:49 -04:00
Johan T. Halseth
b2608dd292
htlcswitch/link_test: increase timeout for message sends
This commit increases the time we wait for a message to be sent for
several test cases, aiming to decrease the false negative rate on
Travis.
2018-03-13 12:20:58 +01:00
Johan T. Halseth
a6c2550404
peer: track failed channels
This commit adds a set used to track channels we consider failed. This
is done to ensure we don't end up in a connect/disconnect loop when we
attempt to re-sync the channel state of a failed channel with a peer.
2018-03-13 11:11:17 +01:00
Olaoluwa Osuntokun
3a53752d90
Merge pull request #783 from wilmerpaulino/config-node-dir
config+cmd/lncli: add flags to specify the base directory for lnd and supported backend nodes
2018-03-12 20:31:49 -07:00
Olaoluwa Osuntokun
24f9b6a342
Merge pull request #802 from wilmerpaulino/glide-to-dep
build: switch from glide to dep for dependency management
2018-03-12 20:30:39 -07:00
Olaoluwa Osuntokun
45eaa70814
Merge pull request #821 from cfromknecht/switch-early-shutdown
htlcswitch/switch: improve safety of switch shutdown
2018-03-12 19:57:19 -07:00
Olaoluwa Osuntokun
53045450ad
Merge pull request #823 from Roasbeef/chan-stream-buf-limit
peer: modify the msgStream to not buffer messages off the wire indefi…
2018-03-12 19:39:48 -07:00
Wilmer Paulino
9bf1b5399b
config: ensure all paths are cleaned and expanded after parsing options
In this commit, we ensure all paths to directories and files related to
LND are cleand and expanded before attempting to use them.

For example, in POSIX systems:
  - ~/lnd.conf would be expanded to /home/user/lnd.conf
  - $HOME/lnd.conf would be expanded to /home/user/lnd.conf
2018-03-12 22:24:32 -04:00
Wilmer Paulino
862729809e
config+cmd/lncli: ensure tilde in path is expanded to home dir
Since we're now able to create a base LND directory that no longer lives
under the OS specific application data directory, we modify
cleanAndExpandPath to replace the `~` in a path to the current user's
home directory, rather than the user's application data directory.
2018-03-12 22:24:04 -04:00
Wilmer Paulino
36e06cdd35
config: add flag to specify the dir for the supported backend nodes
In this commit, we introduce a new flag to set a custom path for a
backend node's data directory.
2018-03-12 22:24:03 -04:00
Wilmer Paulino
44bc563396
config+cmd/lncli: add flag to specify the base dir for lnd
In this commit, we introduce a new flag `--lnddir` that allows us to
set a different base directory, other than the OS specific application
data directory, for all related lnd files and directories.
2018-03-12 22:23:56 -04:00
PaddyQuinn
c67f1408eb funding: add zombie sweeper tests
Note: This commit also creates a function called
assertFundingMsgSent, which replaces checkNodeSendingFundingLocked
by doing the same work not just for FundingLocked messages but
also for AcceptChannel, FundingCreated, and FundingLocked messages.
2018-03-12 22:11:40 -04:00
PaddyQuinn
75e45b830b funding: implement reservation zombie sweeper
Before previous commits were squashed into this commit, zombie
reservations were cleaned up individually when they timed out.
However, this made the code more complex because each reservation
had its own individual timer and thus it would have required the
timer being cancelled any time the reservation was cancelled,
which would have been harder to maintain. With this commit,
zombie reservations are cleaned up by a zombie sweeper that is
set off by a ticker instead, to make the code more maintainable.
2018-03-12 21:58:51 -04:00
Olaoluwa Osuntokun
8988a07bce
htlcswitch: eliminate unnecessary indentation in processRemoteAdds
In this commit, we remove a ton of unnecessary indentation in the
processRemoteAdds method. Before this commit, we had a switch statement
on the type of the entry. This was required before when the method was
generic, but now since we already know that it’s an Add, we no longer
require such a statement.
2018-03-12 18:58:46 -07:00
Olaoluwa Osuntokun
069311c47f
htlcswitch: log dangling circuits in unable to create new commitment 2018-03-12 18:58:45 -07:00
Olaoluwa Osuntokun
bdd01cccb2
htlcswitch: remove getBandwidthCmd as it's no longer needed 2018-03-12 18:58:45 -07:00
Olaoluwa Osuntokun
1af8fa9367
htlcswitch: add additional comments and logging 2018-03-12 18:58:44 -07:00
Olaoluwa Osuntokun
c285bb5814 htlcswitch+peer: remove DecodeHopIterator from ChannelLinkConfig
In this commit, we remove the DecodeHopIterator method from the
ChannelLinkConfig struct. We do this as we no longer use this method,
since we only ever use the DecodeHopIterators method now.
2018-03-12 18:58:08 -07:00
Olaoluwa Osuntokun
f2b676e93c
Merge pull request #790 from halseth/wire-error-handoff
Wire error handoff
2018-03-12 18:56:35 -07:00
Olaoluwa Osuntokun
2a510e8409
Merge pull request #820 from cfromknecht/extend-lnwallet-timeout
lnwallet/interface_test: extend publish timeout
2018-03-12 17:00:30 -07:00
Conner Fromknecht
914c59eb30
htlcswitch/switch: ensures safe shutdown of switch 2018-03-12 16:40:16 -07:00
PaddyQuinn
5410725306 lnwallet: update comments 2018-03-12 19:37:18 -04:00
Olaoluwa Osuntokun
60c8257c3c
peer: modify the msgStream to not buffer messages off the wire indefinitely
In this commit, we modify the msgStream struct to ensure that it has a
cap at which it’ll continue to buffer messages. Currently we have two
msgStream structs per peer: the first for the discovery messages, and
the second for any messages that modify channel state. Due to
inefficiencies in the current protocol for reconciling graph state upon
connection (just dump the entire damn thing), when a node first starts
up, this can lead to very high memory usage as all peers will
concurrently send their initial message dump which can be in the
thousands of messages on testate.

Our fix is simple: make the message stream into a _bounded_ message
stream. The newMsgStream function now has a new argument: bufSize.
Internally, we’ll take this bufSize and create more or less an internal
semaphore for the producer. Each time the producer gets a new message,
it’ll try and read an item from the channel. If the queue still has
size, then this will succeed immediately. If not, then we’ll block
until the consumer actually finishes processing a message and then
signals by sending a new item into the channel.

We choose an initial value of 1000. This was chosen as there’s already
a max limit of outstanding adds on the commitment, and a value of 1000
should allow any incoming messages to be safely flushed and processed
by the gossiper.
2018-03-12 16:34:59 -07:00
Olaoluwa Osuntokun
a90939a717
Merge pull request #822 from cfromknecht/reorder-switch-itests
lnd_test: move retribution tests after switch persistence
2018-03-12 16:27:44 -07:00
Conner Fromknecht
36f0eb2799
lnd_test: move retribution tests after switch persistence 2018-03-12 14:46:29 -07:00
Conner Fromknecht
600ab9d149
lnwallet/interface_test: extend publish timeout
This commit extends the amount of time we wait
for transaction to enter the mempool from
10 to 30 seconds. The wallet's interface tests
seem to be particularly slow when run with the
race flag, a problem which is only exacerbated
by the slowness of travis.

With 10s and the race flag, I was able to repro
the issues locally fairly consistently.
2018-03-12 13:52:16 -07:00
Olaoluwa Osuntokun
6cb412bb8a
Merge pull request #814 from cfromknecht/rebcast-funding-txn
Rebroadcast Funding Txn
2018-03-12 12:06:02 -07:00
Naveen
c86e1b1a37 docs: update INSTALL.md to have Go 1.9 as min required version
Fixes #815.
2018-03-12 11:58:23 -07:00
rodasmith
6d4c9ca060 docker: remove deprecated --witness_only arg in docs
`lncli` command `walletbalance` apparently no longer supports the `--witness_only` argument. With the deprecated argument:
```
root@8a9ad8528430:/go/src/github.com/lightningnetwork/lnd# lncli walletbalance --witness_only=true
Incorrect Usage: flag provided but not defined: -witness_only

NAME:
   lncli walletbalance - Compute and display the wallet's current balance

USAGE:
   lncli walletbalance [arguments...]
[lncli] flag provided but not defined: -witness_only
```
After removing that argument:
```
root@8a9ad8528430:/go/src/github.com/lightningnetwork/lnd# lncli walletbalance
{
    "total_balance": "1505000000000",
    "confirmed_balance": "1505000000000",
    "unconfirmed_balance": "0"
}
```
2018-03-12 11:56:49 -07:00
rodasmith
0ae2affe49 docker: update go version in dockerfile to 1.10
* Update go version for Docker `lnd` build

Per #815, https://github.com/lightningnetwork/lnd/blob/master/htlcswitch/circuit.go#L21 depends on go version >= 1.9

Before this change:
```
Building lnd
Step 1/11 : FROM golang:1.8
...
Step 9/11 : RUN go install . ./cmd/...
 ---> Running in 7f5d6ac430e5
# github.com/lightningnetwork/lnd/htlcswitch
htlcswitch/circuit.go:21: syntax error: unexpected = in type declaration
ERROR: Service 'lnd' failed to build: The command '/bin/sh -c go install . ./cmd/...' returned a non-zero code: 2
```
After:
```
Building lnd
Step 1/11 : FROM golang:1.9
1.9: Pulling from library/golang
3e731ddb7fc9: Pull complete
47cafa6a79d0: Pull complete
79fcf5a213c7: Pull complete
68e99216b7ad: Pull complete
9fc7abc9c77e: Pull complete
7fefae002ae5: Pull complete
7eef770e7cf3: Pull complete
fea064ba669b: Pull complete
Digest: sha256:caa4d6b6a468ffc4cc1f2d88cd95019bf057eb33bea1407dd55bd79755a26bb4
Status: Downloaded newer image for golang:1.9
 ---> 8ebf49f75a15
...
Step 9/11 : RUN go install . ./cmd/...
 ---> Running in ba871e58d517
Removing intermediate container ba871e58d517
 ---> fe16f8578770
Step 10/11 : COPY "docker/lnd/start-lnd.sh" .
...
 ---> 1f1d47432540
Successfully built 1f1d47432540
Successfully tagged lnd:latest
...
```

* Use latest go version 1.10

Pre review feedback, use the latest version of go.
2018-03-12 11:56:02 -07:00
Wilmer Paulino
e4b286fd06
docker/lnd: install dependencies through dep 2018-03-12 13:38:39 -04:00