Commit Graph

3476 Commits

Author SHA1 Message Date
Olaoluwa Osuntokun 4cba9dc8d3
docs: add new documentation for configuring lnd+tor 2018-02-09 12:16:16 -08:00
Olaoluwa Osuntokun 2aac20ec12
docs: update sample-lnd.conf with Tor info 2018-02-09 12:16:16 -08:00
Olaoluwa Osuntokun abcf822bf9
config: add new option to the tor config for stream isolation 2018-02-09 12:16:13 -08:00
Olaoluwa Osuntokun 2eb9059cf7
torsvc: add support for stream isolation
In this commit, we extend the TorDial function and add a new attribute
to the TorProxyNet struct to allow the caller to opt for stream
isolation or not. Using stream isolation, we ensure that each new
connection uses a distinct circuit.
2018-02-08 20:09:04 -08:00
Olaoluwa Osuntokun 9f52372cd2
autopilot: modify interfaces to specify *exactly* how many chans to open
In this commit, we fix a regression introduced by a recent change which
would allow the agent to detect a channel as failed, and blacklist the
node, promising faster convergence with the ideal state of the
heuristic.

The source of this bug is that we would use the set of blacklisted
nodes in order to compute how many additional channels we should open.
If 10 failures happened, then we would think that we had opened up 10
channels, and stop much earlier than we actually should.

To fix this, while ensuring we don’t retry to failed peers, the
NeedMoreChans method will now return *how* anymore channels to open,
and the Select method will take in how many channels it should try to
open *exactly*.
2018-02-08 20:08:18 -08:00
Olaoluwa Osuntokun d1c12202ca
chancloser: initiator always sends the first CloseSigned msg
In this commit, we update the chan closer state machine to be fully
spec compliant. A recent change was made to the spec to enforce a
strict ordering such that, the negotiation is well formed. To enact
this change, we’ll ensure that before the closeFeeNegotiation phase,
the *initiator* is always the one that sends the CloseSigned message
first.
2018-02-08 19:43:09 -08:00
Olaoluwa Osuntokun 2e090ee2ab
peer: only return a channel snapshot if the channel can route
In this commit, we fix a slight miscalculation within the GetInfo call.
Before this commit, we would list any channel that the peer knew of as
active, instead of those which are, well, actually *active*. We fix
this by skipping any channels that we don’t have the remote revocation
for.
2018-02-08 19:40:54 -08:00
Olaoluwa Osuntokun 1b504b6041
Merge pull request #715 from cfromknecht/reconnect-backoff
server: adds truncated exponential backoff + rand for retry
2018-02-08 19:37:31 -08:00
Conner Fromknecht a03e95410b
server: adds truncated exponential backoff + rand for retry
This commit adds an backoff policy to the peer termination
watcher to avoid getting stuck in tight connection loops
with failing peers. The maximum backoff is now set to 128s,
and each backoff is randomized so that two instances using
the same algorithm have some hope of desynchronizing.
2018-02-08 18:15:20 -08:00
Olaoluwa Osuntokun d61212cf26
Merge pull request #443 from halseth/chanConstraints
Validate channel constraints
2018-02-08 16:53:04 -08:00
Johan T. Halseth f6d357e122
breacharbiter tests: set MinHtlc=0 during tests 2018-02-08 18:35:25 -05:00
Johan T. Halseth 82dc8e0794
lnwallet test: add channel constraints tests
This commit adds the tests TestMaxAcceptedHTLCs,
TestMaxPendingAmount, TestChanReserve and TestMinHTLC.
2018-02-08 18:35:25 -05:00
Johan T. Halseth f9701cde63
lnwallet tests: set channel reserve during channel tests 2018-02-08 18:35:25 -05:00
Johan T. Halseth 7b9f098fe6
lnwallet: fully validate all channel constraints in validateCommitmentSanity
This commit introduces changes to the validateCommitmentSanity
function to fully validate all channel constraints.
validateCommitmentSanity now validates that the
MaxPendingAmount, ChanReserve, MinHTLC, & MaxAcceptedHTLCs
limits are all adhered to during the lifetime of a channel.

When applying a set of updates, the channel constraints are
validated from the point-of-view of either the local or the
remote node, to make sure the updates will be accepted.

Co-authored-by: nsa <elzeigel@gmail.com>
2018-02-08 18:35:25 -05:00
Johan T. Halseth 1873fe1381
lnwallet/channel: move common calculation of balance into computeView
This commit moves common logic used to calculate the state
of a commitment after applying a set of HTLC updates, into
the new method computeView. This method can be used when
calculating the available balance, validating the sanity
of a commitment after applying a set of updates, and also
when creating a new commitment, reducing the duplication
of this logic.
2018-02-08 18:35:25 -05:00
Johan T. Halseth 98d28611e4
lnwallet/channel: let evaluateHTLCView take mutate boolean
This commit adds a new boolean parameter mutateState to
evalueteHTLCView, that let us call it without neccessarily
mutating the addHeight/removeHeight of the HTLCs, which is
useful when evaluating the commitment validity without
mutating the state.
2018-02-08 18:35:25 -05:00
Johan T. Halseth 78514acd49
integration tests: accoount for channel reserve when sending payments. 2018-02-08 18:35:24 -05:00
Johan T. Halseth a3a0efbeb0
lnd: populate channel constraints closures in fundingConfig. 2018-02-08 18:35:24 -05:00
Johan T. Halseth 997b1ea8ee
fundingmanager: channel constraints closures
This commit makes more channel constraints available
via closures part of the fundingConfig, moving them
from the reservation.RemoteChanConstraints method.
2018-02-08 18:35:24 -05:00
Johan T. Halseth 509adce2ad
htlcswitch test: add TestChannelLinkBandwidthChanReserve 2018-02-08 18:35:24 -05:00
Johan T. Halseth e6f7a46d90
htlcswitch: don't return negative value from Bandwidth()
This commits prevents the Bandwith() method from returning
a negative value if the channel reserve is larger than
the actual available balance.
2018-02-08 18:35:24 -05:00
Johan T. Halseth 50f495fae1
lnwallet: cleanup of reservation.CommitConstraints, and move RemoteChanConstraints.
This commit adds some more comments and checks to
reservation.CommitConstraints, including making
MinHTLC value one of the passed constraints.

RemoteChanConstraints is also moved out of
reservation.
2018-02-08 18:35:24 -05:00
Johan T. Halseth 65723387fa
channeldb: update ChannelConstraints godoc
This commit changes the definition of the
constraints in the ChannelConstraints struct
to specify that these are all constraints the
*owner* of the set of constraints must *never
violate*.

This is done to make it easier to check that
a particular node is not violating any
constraint for a gien update, as before it
could violate constraints found both in its
local and the remote contraints.
2018-02-08 18:35:24 -05:00
nsa d924fcfdf4
funding test: add default constraints to wallet config 2018-02-08 18:35:23 -05:00
nsa 7e84892c21
htlcswitch: account for channel reserve in Bandwidth 2018-02-08 18:35:23 -05:00
nsa 7e7516137d
lnwallet: validate commited channel constraints 2018-02-08 18:35:23 -05:00
Olaoluwa Osuntokun b5bb1e027d
Merge pull request #741 from cfromknecht/utxn-witness-indexes
utxonursery: fix witness overwriting bug on sweep txn
2018-02-08 15:25:22 -08:00
Juan Ignacio Donoso bb42cb55ba config: adds an extra tls ip to config
This commit adds the `tlsextraip` flag to the cli to add an
ip to the generated certificate. This is usefull when using
a loadbalancer to access the node.
2018-02-08 15:23:52 -08:00
Olaoluwa Osuntokun 8cb2097db2
Merge pull request #743 from cfromknecht/brar-infinite-loop-fix
breacharbiter: avoid infinite loop in exactRetribution
2018-02-08 15:22:48 -08:00
Olaoluwa Osuntokun 80df5cd06c
Merge pull request #742 from cfromknecht/switch-control-quit
htlcswitch/switch: select on quit channels for switch commands
2018-02-08 15:21:57 -08:00
MeshCollider 966d25849a lnwire: Fix incorrect variable name in comment 2018-02-08 15:21:04 -08:00
MeshCollider 61414df669 multi: Fix two minor typos 2018-02-08 15:21:04 -08:00
MeshCollider 3e702f09ec docs: Make spacing in sample config consistent 2018-02-08 15:21:04 -08:00
MeshCollider 61eedfbeb7 config: Clarify the default behaviour of externalip 2018-02-08 15:21:04 -08:00
MeshCollider 50815cc8ba docs: Add alias and color examples to sample-lnd.conf 2018-02-08 15:21:04 -08:00
Conner Fromknecht 1dc12549d2
htlcswitch/switch: select on quit channels for switch commands
This commit fixes a deadlock scenario caused when some
switch methods are waiting for a response on the
command's done/err chan. However, no such response will
be delivered if the main event loop has already exited.
This is resolved by selecting on the command's done/err chan
and the server's quit chan simultaneously.
2018-02-07 20:43:53 -08:00
Conner Fromknecht 3021a246f1
breacharbiter: avoid infinite loop in exactRetribution
After a shutdown has been initiated, both registrations
for spend ntfns and publishing txns can fail. The current
behavior in the face of such failures is to continue trying,
which is fine if we are online. However, this causes an
infinite loop during shutdown, and lnd cannot exit since
the routine is tracked by the brar's waitgroup.

A simple fix is to select on the brar's quit channel after
detecting a failure from either, allowing the breach arbiter
to break out of this death cycle.
2018-02-07 17:42:48 -08:00
Conner Fromknecht 04487a4a76
utxonursery: fix witness overwriting bug
Fixes a minor indexing bug that could cause the
utxonursery to accidentally overwrite CSV
witnesses with other CLTV witnesses when populating
a sweep txn. Each type of output is treated
separately internally, the bug is introduced by
using the relative indexes of both sets as the final
indexes into the txins.

The fix adds an offset, equal to the number of CSV
outputs, to the relative indexes of the CLTV inputs.
This matches the order in which CSV and CLTV outputs
are added to the raw txn.
2018-02-07 17:17:46 -08:00
Olaoluwa Osuntokun 7bbcbc6fea
Merge pull request #706 from Roasbeef/gc-fixes-reject-cache
multi: memoize pubkey+signature decoding to reduce GC bursts, add reject cache to stop zombie churn
2018-02-06 20:37:41 -08:00
Olaoluwa Osuntokun bf05e47780
discovery: add additional gossiper level reject cache
In this commit, we’ll add a new reject cache to ensure that we don’t
attempt to re-process any announcements already rejected by the
ChannelRouter.
2018-02-06 20:14:35 -08:00
Olaoluwa Osuntokun e578cea375
channeldb: fix linter errors 2018-02-06 20:14:34 -08:00
Olaoluwa Osuntokun b54b8dd7f1
routing: reject any new announcements which were pruned as zombies 2018-02-06 20:14:34 -08:00
Olaoluwa Osuntokun 6d05cb5aae
routing: extract zombie pruning to distinct method 2018-02-06 20:14:34 -08:00
Olaoluwa Osuntokun 1f3124f48a
routing: use [33]byte instead of *btcutil.Publickey for SendToSwitch
With this change, we can avoid unnecessarily serializing a public key.
2018-02-06 20:14:33 -08:00
Olaoluwa Osuntokun 22951cb364
lnd: account for new lnwire.Sig API and channeldb API changes 2018-02-06 20:14:33 -08:00
Olaoluwa Osuntokun 9f0214428a
zpay32: update parsing to use new lnwire.Sig API 2018-02-06 20:14:33 -08:00
Olaoluwa Osuntokun 6751cd8b9f
routing: update package to account for recent channeldb API changes 2018-02-06 20:14:32 -08:00
Olaoluwa Osuntokun cb48a5827a
autopilot: update API usage to account for recent channeldb changes 2018-02-06 20:14:32 -08:00
Olaoluwa Osuntokun cd9d2d7e6f
discovery: update graph API usage to match recent API changes 2018-02-06 20:14:32 -08:00
Olaoluwa Osuntokun 5e9166e478
channeldb: use raw pub keys and signatures directly in vertex/edge structs
In this commit, we make an API change that’s meant to reduce the amount
of garbage we generate when doing pathfinding or syncing nodes with our
latest graph state. Before this commit, we would always have to fully
decode the public key and signatures when reading a edge or vertex
struct. For the edges, we may need several EC operations to fully
decode all the pubkeys. This has been seen to generate a ton of
garbage, as well as slow down path finding a good bit.

To remedy this, we’ll now only ever read the *raw* bytes from disk. In
the event that we actually need to verify a signature (or w/e), only
*then* will we fully decode everything.
2018-02-06 20:14:31 -08:00