Commit Graph

2699 Commits

Author SHA1 Message Date
b2d86bffc5 lnwire: remove deprecated single funding wire messages
This commit removes the original single funder wire messages as they’ve
now been deprecated by the new commitment and HTLC structure within the
latest draft of the specification.
2017-07-30 17:47:29 -07:00
78f6caf5d2 features: add temporary feature for encrypted payment errors 2017-07-14 20:09:00 -07:00
a04fa76a4c lnwire+htlcswitch: minor grammatical, formatting fixes after error PR 2017-07-14 20:08:37 -07:00
79b8d26b1a htlcswitch+router+server: handle payment error topology updates
In previous commits we have intoduced the onion errors. Some of this
errors include lnwire.ChannelUpdate message. In order to change
topology accordingly to the received error, from nodes where failure
have occured, we have to propogate the update to the router subsystem.
2017-07-14 19:08:04 -07:00
6bbb7cbfc3 lnd: hook up encrypted onion error scaffolding
In this commit daemon have been changed to set the proper hooks in the
channel link and switch subsystems so that they could send and receive
encrypted onion errors.
2017-07-14 19:08:04 -07:00
2d378b3280 htlcswitch+router: add onion error obfuscation
Within the network, it's important that when an HTLC forwarding failure
occurs, the recipient is notified in a timely manner in order to ensure
that errors are graceful and not unknown. For that reason with
accordance to BOLT №4 onion failure obfuscation have been added.
2017-07-14 19:08:04 -07:00
ef73062c14 peer+server+htlcswitch: add reason to disconnnect function
In order to recognize exact reason of the disconnect the additional
field have been added in the disconnect function.
2017-07-14 19:08:04 -07:00
46ba18db9b lnwire: add update_fail_malformed_htlc message
In this commit BOLT#4 specification message have been added to the
lnwire package. This messsage is needed in order to notify payment
sender that forwarding node unable to parse the onion blob.
2017-07-14 19:08:04 -07:00
98956bc2fe lnwire: add specification onion errors
In this commit onion routing error from BOLT#4 have been added, the
initial error construction have been splitted on two parts: The first
part which contains the actual data will reside inside the lnwire
package because it contains all necessary function to decode/encode
the data. The second part obfuscation and hmac checking will resides
inside the lighting-onion package because it requires the key
generation.
2017-07-14 19:08:04 -07:00
d43a660cb1 build: update to latest version of neutrino+btcwallet
The latest builds of neutrino and btcwallet include a number of
performance optimizations that should speed up the sync of neutrino
nodes while ensuring all the pessary data is in place for re-org
safety.
2017-07-14 18:36:03 -07:00
6128fc6971 funding: avoid dereferencing a nil localDiscoverySignal
This commit fixes a possible panic within the funding manger’s workflow
for pending channels. We now ensure that the local discovery signal
retrieved from the localDiscoverySignals map is always non-nil.
Otherwise, we risk a server panic in the case that a node retransmits
the FundingLocked message after a channel has been fully processed, or
even just sends a FundingLocked message for a non-existent channel.
2017-07-14 17:14:22 -07:00
14832d8c09 lnwallet+lnwire: minor grammatical fixes after UpdateFee merge 2017-07-14 17:10:42 -07:00
adbbd1e80f peer: handle received update_fee message. 2017-07-14 16:39:15 -07:00
f4db249cb8 htlcswitch: handle update_fee message received from peer.
This commit makes the channellink update a channel's fee
if an update_fee message is received from the peer.
2017-07-14 16:39:15 -07:00
ebe05f6568 lnwallet: add update_fee message support.
This commit adds the possibility for the initiator of a
channel to send the update_fee message, as specified
in BOLT#2. After the message is sent and both parties
have committed to the updated fee, all new commitment
messages in the channel will use the specified fee.
2017-07-14 16:39:15 -07:00
a3836d5241 lnwire: add update_fee message type. 2017-07-14 16:39:15 -07:00
9c16319e0d build: update to latest build of the sphinx processing package
This new build of lightning-onion includes the routines necessary to
implement the encryption and decryption of HTLC errors as defined
within the specification.
2017-07-13 23:50:52 -07:00
c47047c0b8 chainntnfs: extend interface test to ensure initial conf height is correct 2017-07-11 17:38:43 -07:00
352461d551 config: add regtest support to lnd
Support for regtest allows us to create integration tests to verify
interoperability with other implementations. This seems to work, and
allows to connect to `btcd` and indirectly to `bitcoind` so we can run
lnd on the same network as eclair and c-lightning.

For details about my integration framework check this repo:
cdecker/lightning-integration
2017-07-11 16:54:43 -07:00
cc8008d5e1 build: update glide file to point to latest version of btcwallet
A rather nasty re-org related bug was recently fixed in the upstream
version of roasbeef’s btcwallet. In order to fix this within the main
lnd build, we update the glide files such that the latest changes will
be pulled in.
2017-07-11 16:29:43 -07:00
f9f9d68543 test: ensure the WaitForBlockchainSync grouting always exits
This commit fixes a minor bug in the goroutine that’s launched to check
the sync status of a particular node. Previously, the goroutine could
end up infinitely stuck on a send as once the chain has been detected
as synced, it didn't exit.

We fix this now by ensure that the goroutine always terminates after
the initial notification to the caller. Additionally, we not ensure
that both the internal and exterior goroutine are both reading off of
the peer’s quit channel.
2017-07-11 16:29:35 -07:00
2e6800e1ed integration tests: add -logoutput flag that can be used to log output from the seed nodes to files. 2017-07-06 18:41:21 -07:00
906771ba16 features: add temporary feature for proper HTLC dust accounting 2017-07-06 18:30:51 -07:00
7fbb1e5a37 lnwallet: refactor dust limit tests
Split up and simplified dust limit tests.
2017-07-06 18:05:43 -07:00
73767f8c78 lnwallet: factor createHTLC out of unit tests 2017-07-06 18:05:43 -07:00
5068541044 lnwallet: apply dust HTLC amounts to fees
If an HTLC’s value is below a node’s dust limit, the amount for that
HTLC should be applied to to the fee used for the channel’s commitment
transaction.
2017-07-06 18:05:43 -07:00
497b522c13 lnd: update logging interaction to latest API changes 2017-07-06 14:37:02 -07:00
4c3e24567e build: update new logging related dependancies to latest versions 2017-07-06 14:36:16 -07:00
21cb3837c4 test: add synchronization to testDisconnectingTargetPeer 2017-07-06 14:18:04 -07:00
dc0ab06d91 config: Specify gRPC proxy port with --restport command line arg 2017-07-05 11:57:12 -07:00
e60a370d46 docker: create distinct containers for blockchains
Create disctinct containers for Litecoin and Bitcoin, and also change
the readme accordingly.
2017-07-05 10:41:31 -07:00
816b9ada44 docker: add "CHAIN" parameter
After addition of the Litecoin client image (ltcd), we should add
additional parameter to notify the start script which network we should
use.
2017-07-05 10:41:31 -07:00
25970bc113 docker: add ltcd image
Intoduce the Litecoin network daemon, which will be needed in order
to interact with Litecoin blockchain.
2017-07-05 10:41:31 -07:00
24ae098d18 docker: change BITCOIN_NETWORK -> NETWORK
This parameter now might not belong to the Bitcoin network, because we
introduce the Litecoin image soon.
2017-07-05 10:41:31 -07:00
1cd576e93a docker: switch to use glide installation
In order to make the installation process of the btcd robust we should
use "glide" instead of "go get".
2017-07-05 10:41:31 -07:00
f39b7aaaf9 build: create parallel travis builds to isolate race condition tests
This commit modifies the travis build script, and our local test script
to ensure that the race condition builds are conducted in a parallel
build. After this commit two travis builds will be kicked off for each
push/commit: one that runs the race condition tests in isolation, and
another that runs the integration tests then the coverage tests.

In order to do the above cleanly, the integration tests are now guarded
behind a build flag. In order to run the integration tests, one now
needs to specify the `-tags rpctest` flag when running the `go test`
command.
2017-07-04 16:05:22 -07:00
01d54c29af htlcswitch: restore the ability to properly handle debughtlc recv's
This commit fixes a regression introduce in the prior commit which
added full verification of the per-hop payloads to the ChannelLink
interface. When this was initially implemented, the added checks
weren’t guarded on the existence of debughtlc’s. As a result,
debughtlc’s would be rejected as they don’t match the expected invoice
value.

This commit fixes that issue by only checking the hop payload if debug
HTLC mode isn’t on.
2017-07-04 15:58:23 -07:00
a824a2a855 cmd/lncli: properly display errors when sending payments 2017-07-04 15:55:34 -07:00
c5f4049394 chainntnfs: convert ChainNotifier interface tests to use sub-tests 2017-07-04 15:54:45 -07:00
9daa659bb3 routing/chainview: convert chainview integration tests to use sub-tests 2017-07-04 15:53:58 -07:00
3b1db2b186 test: update integration test set up to reflect recent RPC change
A prior commit modified the walletbalance RPC to return satoshi instead
of BTC. As a result, we need to update the SetUp method in the
networkHarness to ensure we expect the proper value when asserting
wallet balances.
2017-07-04 15:53:06 -07:00
7c5af4b851 rpc: properly return satoshis in WalletBalance response 2017-07-04 15:51:08 -07:00
58d3fd9dd8 lnrpc: WalletBalance now returns satoshis instead o fBTC 2017-07-04 15:50:33 -07:00
c13e36617c htlcswitch: return time result from bidirection test 2017-06-26 20:26:27 +03:00
2acb2bb373 travis: use glide install of btcd
In order to have more stable builds we should use use glide install
directly, instead of "go get".
2017-06-26 20:26:27 +03:00
0a7aa623b6 test: execute package tests linearly once again 2017-06-25 14:19:56 +01:00
aed2e5865f test: hack fix of panic by disabling btcrpcclient log 2017-06-25 14:19:56 +01:00
8fa2b95c12 lnd: remove seelog logger
The btclog package has been changed to defining its own logging
interface (rather than seelog's) and provides a default implementation
for callers to use.

There are two primary advantages to the new logger implementation.

First, all log messages are created before the call returns.  Compared
to seelog, this prevents data races when mutable variables are logged.

Second, the new logger does not implement any kind of artifical rate
limiting (what seelog refers to as "adaptive logging").  Log messages
are outputted as soon as possible and the application will appear to
perform much better when watching standard output.

Because log rotation is not a feature of the btclog logging
implementation, it is handled by the main package by importing a file
rotation package that provides an io.Reader interface for creating
output to a rotating file output.  The rotator has been configured
with the same defaults that btcd previously used in the seelog config
(10MB file limits with maximum of 3 rolls) but now compresses newly
created roll files.  Due to the high compressibility of log text, the
compressed files typically reduce to around 15-30% of the original
10MB file.
2017-06-25 14:19:56 +01:00
c233b8816e htlcswitch: increase payment timeout in bydirectional unit test
During travis tests the latency of payment might lead to test failure,
for that reason we increase the waiting timeout.
2017-06-25 14:19:56 +01:00
9b9f419e51 routing: fix vet error, ensure wait group in topologyClient isn't copied 2017-06-25 13:48:52 +01:00