Commit Graph

3936 Commits

Author SHA1 Message Date
447a031435 peer: reject remote closes with active HTLCs
In this commit, we follow up to the prior commit by ensuring we won't
accept a co-op close request for a chennel with active HTLCs. When
creating a chanCloser for the first time, we'll check the set of HTLC's
and reject a request (by sending a wire error) if the target channel
still as active HTLC's.
2018-03-30 13:06:57 -07:00
ecbeca5f29 rpc: disallow attempting a co-op close of a channel with active HTLCs
In this commit, we fix a bug that at times could cause any dangling
HTLC's to be sent to miner's fees if a user attempted to close out a
channel cooperatively that still had pending HTLC's. We'll first prevent
this at the RPC level by rejecting any attempts to trigger a co-op
channel closure while a channel still have dangling HTLC's.
2018-03-30 12:51:01 -07:00
ef4512d1d8 rpc: limit the larger invoice expiry to 1 year
This is a follow up to the prior commit. In order to add an additional
layer of defense, we'll reject any expiry greater than 1 year.
2018-03-29 16:25:11 -07:00
10847170ee zpay32: adjust uint64 encoding to account for math.MaxUnit64
In this commit, we fix a logic error in our routine for converting a
uint64 to/from base32. Before this commit, we assumed that the max
number of groups was 12. However, the math.MaxUint64 (1<<64 - 1) can
actually consume more than 12 groups with an extra set of bits. Before
this commit, we would panic when attempting to parse an invoice
generated like so:
  * addinvoice --amt 1337000 --expiry 99999999999999999

To fix this issue, we modify our logic to expect at most 13 groups.
Additionally, we've added a new test that would panic before applying
this commit.

Fixes #972.
2018-03-29 16:24:20 -07:00
a0fe4fb716 Merge pull request #968 from halseth/chanarb-doublespend
contractcourt/channel_arbitrator: ignore ErrDoubleSpend on force close
2018-03-29 16:11:38 -07:00
117441b7d0 Merge pull request #928 from adrienemery/python-docs
docs: encode macaroon in python grpc example
2018-03-29 15:36:30 -07:00
1a8bec4ed1 Merge pull request #967 from halseth/breachretribution-curve-nil
[mini] contractcourt/chain_watcher: don't print curve of DoubleTweak
2018-03-29 15:34:51 -07:00
d216416db8 contractcourt/channel_arbitrator: ignore ErrDoubleSpend on force close
This commit mitigates a problem within the ChannelArbitrator, where
after a restart we would start up in the state StateBroadcastCommit but
fail to broadcast out commitment because a conflicting transaction (most
likely our own commitment) was already broadcast. A more complete fix
for this case will be added later, but this commit let the
ChannelArbitrator continue, trying to close out the channel.
2018-03-29 11:15:41 +02:00
5bf5a823ff contractcourt/chain_watcher: don't print curve of DoubleTweak 2018-03-29 11:11:54 +02:00
87d77a1b87 Merge pull request #962 from cfromknecht/makefile-dep
Makefile w/ dep
2018-03-28 20:07:19 -07:00
b13970da70 cmd/lncli: add commit version hook and print in version 2018-03-28 18:19:15 -07:00
70038754ff version: append commit hash to version string 2018-03-28 18:19:15 -07:00
3d29e9dc66 lnd: add Commit hook for git hash -ldflag 2018-03-28 18:19:15 -07:00
e549a79eb3 Makefile: update #689 to use dep in Makefile
This commit continues the work started by @sp4ke, in createing
a simple Makefile for lnd. The following commands are included:

 * make - builds everything (deps, lnd, and lncli) from scratch
 * make deps - installs dep if needed, then runs dep ensure
 * make install - builds lnd and lncli

 * make check - runs unit and itests
 * make unit - runs the unit tests for all packages
 * make itest - installs lnd and runs integration tests

 * make fmt - go fmt's all files
2018-03-28 18:19:15 -07:00
0162b93e13 Merge pull request #957 from cfromknecht/bump-ltc-dust-limit
chainregistery: correct ltc dust limit
2018-03-28 16:10:42 -07:00
90a13aedcf Merge pull request #954 from halseth/remove-breacharbiter-signal
[mini] rpcserver: remove uneccessary signal to breacharbiter at force close
2018-03-28 15:21:42 -07:00
41ea771989 Merge pull request #953 from cfromknecht/mark-open-in-mem
channeldb: update ShortChanID in-mem during MarkAsOpen
2018-03-28 15:19:56 -07:00
c2e5ba3b43 config: determine the bitcoind chain directory from the chain params instead of the config file. This is more reliable in case the chain was selected with a bitcoind commandline option instead of a line in the config file. 2018-03-28 15:19:00 -07:00
6c00de1865 neutrino: stop the chainservice before node DB
When in neutrino mode, it seems that the node is not closed during the cleanup, so if a block is received between the time the DB is closed and the server is closed (or if the process is still running after the server is shutdown like on a mobile app), the code panic's and crashes with:

panic: unable to write block header: database not open
goroutine 41 [running]:
github.com/lightningnetwork/lnd/vendor/github.com/lightninglabs/neutrino.(*blockManager).handleHeadersMsg(0x9a1ec0a0, 0x9a3e6030)
/ext-go/1/src/github.com/lightningnetwork/lnd/vendor/github.com/lightninglabs/neutrino/blockmanager.go:1164 +0x2224
github.com/lightningnetwork/lnd/vendor/github.com/lightninglabs/neutrino.(*blockManager).blockHandler(0x9a1ec0a0)
/ext-go/1/src/github.com/lightningnetwork/lnd/vendor/github.com/lightninglabs/neutrino/blockmanager.go:347 +0x3b4
created by github.com/lightningnetwork/lnd/vendor/github.com/lightninglabs/neutrino.(*blockManager).Start
/ext-go/1/src/github.com/lightningnetwork/lnd/vendor/github.com/lightninglabs/neutrino/blockmanager.go:200 +0xe8


Here's a log of shutdown before the change:
[INF] LTND: Gracefully shutting down the server...
[INF] FNDG: Funding manager shutting down
[INF] SPHX: Block epoch canceled, decaying hash log shutting down
[INF] CRTR: Channel Router shutting down
[INF] CRTR: FilteredChainView stopping
[INF] HSWC: HTLC Switch shutting down
[INF] UTXN: UTXO nursery shutting down
[INF] BRAR: Breach arbiter shutting down
[INF] DISC: Authenticated Gossiper is stopping
[INF] CNCT: Stopping ChainArbitrator
[INF] LTND: Shutdown complete


And here's a log of shutdown after the change:
[INF] LTND: Gracefully shutting down the server...
[INF] FNDG: Funding manager shutting down
[INF] SPHX: Block epoch canceled, decaying hash log shutting down
[INF] CRTR: Channel Router shutting down
[INF] CRTR: FilteredChainView stopping
[INF] HSWC: HTLC Switch shutting down
[INF] UTXN: UTXO nursery shutting down
[INF] BRAR: Breach arbiter shutting down
[INF] DISC: Authenticated Gossiper is stopping
[INF] CNCT: Stopping ChainArbitrator
[INF] LTND: Shutdown complete
[INF] BTCN: Block manager shutting down
[INF] BTCN: Address manager shutting down
2018-03-28 15:18:07 -07:00
1614fe0fa6 htlcswitch: trivial whitespace
Missing space results in `unable to get channel links: unable to locate channel link bydestination hop id` log messages
2018-03-28 15:16:06 -07:00
87c1755637 github: add GitHub issue template
Fixes #913.
2018-03-28 15:02:07 -07:00
51ae820a0c Merge pull request #959 from halseth/notifier-order
Add spend notification to client map before recording it with backend
2018-03-28 15:01:02 -07:00
d5b218b286 Merge pull request #911 from nalinbhardwaj/litecoin
Litecoin fixes
2018-03-28 14:59:16 -07:00
2f84d8ee2b add a basic makefile
Included commands:

- deps: install glide and dependencies
- install: install lnd
- fmt: run `go fmt` excluding vendor
- test: run `go test` as per documentation
2018-03-28 03:07:49 -07:00
13be19c9ec chainntnfs/bitcoind: move NotifySpent to after recording the outpoint
This commit moves the call to the bitcoind backend to start watching an
outpoint for spentness to after we have recorded the outpoint in our
list of clients. This is done to avoid a race that we saw using the btcd
backend, and it is probable that it can also happen using bitcoind.
2018-03-28 10:22:41 +02:00
b08fc05390 chainntnfs/btcd: move NotifySpent to after recording the outpoint
This commit moves the call to the btcd backend to start watching an
outpoint for spentness to after we have recorded the outpoint in our
list of clients. This is done to avoid a race that could occur if btcd
quicly sent a spend notification before we had been able to record it in
our map, essentially losing it.
2018-03-28 10:21:08 +02:00
8fd7b38e05 chainregistery: correct ltc dust limit
Corrects the ltc dust limit, making it 54600.
2018-03-28 01:02:07 -07:00
891fb20622 neutrinonotify: use epochqueue to notify block epochs 2018-03-28 08:13:10 +02:00
0f90c950da rpcserver: remove uneccessary signal to breacharbiter at force close
This signal is no longer needed, as the breacharbiter is given
the UnilateralClosure chain event.
2018-03-28 08:10:19 +02:00
f594a242ea channeldb/channel_test: test ShortChanID is updated in-mem
Modifies TestFetchPendingChannels to verify that calls to
MarkAsOpen also modify the in-memory state. Previously we
only tested the persistent state loaded immediately after.
2018-03-27 17:07:15 -07:00
9fd73af589 channeldb: update chanid in-mem during MarkAsOpen
Modifies the MarkAsOpen operation to also update the
ShortChanID and IsPending fields in-memory. Before,
only the on-disk representation was updated, which
may have lead to stale data channel states being
passed in-memory.
2018-03-27 17:05:22 -07:00
2b00e01c53 Merge pull request #930 from halseth/breacharbiter-broadcast-loop
breacharbiter: reuse spend events instead of re-registering
2018-03-27 15:39:16 -07:00
6103ccb081 lnwallet: ensure we only accept/produce sane commitments
In this commit, we add an additional check within CreateCommitTx to
ensure that we will never create or accept a commitment transaction that
wasn't valid by consensus. To enforce this check, we use the
blockchain.CheckTransactionSanity method.
2018-03-27 15:37:15 -07:00
b49d29c2b0 Merge pull request #943 from Roasbeef/btc-rounding-fix
lnwallet: use btcutil.NewAmount for BTC -> SAT conversions
2018-03-26 16:00:25 -07:00
9997014420 config: invoice macaroon path fix 2018-03-25 19:28:47 -07:00
4253b85309 test: ensure tests convert from BTC to SAT properly
This commit is a follow up to the prior commit which fixed a rounding
error bug in lnwallet. For uniformity, we also fix other occurrences in
the breach arbiter, as well as the integration tests.
2018-03-25 19:17:01 -07:00
af4afdb6f0 lnwallet: use btcutil.NewAmount for BTC -> SAT conversions
In this commit, we fix an existing rounding related bug in the codebase.
The RPC interface for btcd and bitcoind return values in BTC rather than
in satoshis. So in several places, we're forced to convert ourselves
manually. The existing logic attempted to do this, but didn't properly
account for rounding. As a result, our values can be off due to not
rounding incorrectly.

The fix for this is easy: simply properly use btcutil.NewAmount
everywhere which does rounding properly.

Fixes #939.
2018-03-25 19:15:18 -07:00
23b3eaf548 build: update lightning-onion commit hash
In this commit, we update the version of lightning-onion that we pin
against to point to a version that has recently had a nil pointer panic
bug fix.
2018-03-25 18:38:33 -07:00
bca87535b3 rpcserver: fix GetInfo testnet detection
Fixes bug with Litecoin testnet detection.
2018-03-24 15:01:12 +05:30
b2a4901aff chainparams: create isTestnet function
Tests if passed parameters correspond to a testnet configuration.
2018-03-24 15:01:12 +05:30
35fc4f48f7 sample-lnd.conf: Litecoin fixes
Fixes litecoin related configurations.
Changes bitcoind.zmqpath to be consistent with recent changes.
2018-03-24 15:01:12 +05:30
18e6705d97 config: fix linter error (gofmt -s) 2018-03-23 19:26:43 -07:00
c653b62832 build: update dep to latest zmq version with reconnection
In this commit, we update our set of dependencies to a new version of
our zmq lib that implements automatic reconnection. With this change,
bitcoind users will have a more robust experience, as if the connection
is dropped, we'll reconnect automatically.

Fixes #875.

Fixes #871.

Fixes #857.
2018-03-23 18:58:12 -07:00
ead55783c7 Merge pull request #916 from PWKad/master
Fix error labels when missing LTC configuration
2018-03-23 18:45:47 -07:00
69274ecaa4 Merge pull request #923 from brndnmtthws/master
config: Fix formatting, missing param check.
2018-03-23 18:42:26 -07:00
8a51043462 config: Fix formatting, missing param check.
Fixed formatting for autopilot config params, as well as added check for
`MaxChannels` param which was presumably a mistaken copypaste from the
`MaxChannelSize' param.
2018-03-23 21:11:45 -04:00
e1b8b1d84f Merge pull request #926 from Roasbeef/route-around-height-disagreements
routing: route around height disagreements during htlc routing attempts
2018-03-23 17:59:30 -07:00
1a05b48080 routing: add new test case to ensure we route around time lock failures 2018-03-23 17:55:16 -07:00
62b8ddb839 routing: update TestAddEdgeUnknownVertexes due to additional node in test graph 2018-03-23 17:55:15 -07:00
d5721165de routing: fix TestPathInsufficientCapacity to actually send 1 BTC 2018-03-23 17:55:15 -07:00