1
0
Fork 0
mirror of https://github.com/ACINQ/eclair.git synced 2025-03-13 19:37:35 +01:00
Commit graph

2240 commits

Author SHA1 Message Date
sstone
6200df8512
Merge branch 'master' into android 2020-01-16 11:04:59 +01:00
Bastien Teinturier
102e2a65d7
Fix Sphinx privacy leak (#1247)
* Final recipient should not collect a fee: see 
https://github.com/lightningnetwork/lightning-rfc/pull/711

* Fix Sphinx small privacy leak: see
https://github.com/lightningnetwork/lightning-rfc/pull/697
2020-01-15 15:48:25 +01:00
dpad85
caa79c2fb7
Merge branch 'android' into android-phoenix 2020-01-15 12:17:25 +01:00
sstone
a3a0dbbbcc
Merge branch 'master' into android 2020-01-15 11:11:05 +01:00
Fabrice Drouin
3d42bd0c13
Dependencies: use bitcoin-lib 0.17 (#1277)
It exposes an API that we need if we want to implement lnurl
2020-01-15 11:10:27 +01:00
sstone
68959f348c
Merge branch 'master' into android 2020-01-14 16:34:19 +01:00
Fabrice Drouin
9579127dd0
Electrum improvements (#1164)
ElectrumWatcher: don't ask for Merkle proofs for unconfirmed transactions
2020-01-14 16:33:36 +01:00
Bastien Teinturier
fe96132815
Add contributing instructions (#1252) 2020-01-14 16:14:21 +01:00
sstone
a540528141
Merge branch 'master' into android 2020-01-14 15:20:59 +01:00
Fabrice Drouin
90a1ee6abc
Fix how we split channel ids in channel queries (#1274)
* Add test to check that we split short channel ids correctly

reply_channel_range messages should not overlap i.e different replies should not contain
channel ids that have the same block height.

The test in this commit fails, because our 'split' function needs to be updated.

* Channel Queries: make sure that our replies match the request range (fixes #1269)

Even though it's not completely explicit in the specs, we should make sure that
the [firstBlock, numBlock] range that we cover in our replies is not computed
from the ids that we actually have but instead matches the [firstBlock, numBlock] range
that was requested.

* Make sure that serialised replies stay below the 65Kb limit

We prune short channel id chunks to make sure that serialised replies stay below the 65 Kb limit.
The pruning algo is very simple: for each chunk we randomly keep the first or last 3200 ids
Selection is random so peers that re-connect will eventually receive all channel info.
The limit of 3200 was chosen for the worst case where replies are not compressed and include timestamps and checksum.
It is a fairly conservative boundary, the highest number of public channels in a single block so far is <300, and
there 3200 is roughly the currently observed number of transactions in a "full" block.

* Set default ids chunk size to 1500

Have smaller chunks (smaller than 3200 / 2) reduces the probability of merging 2 chunks and having to prune the result because the encoded reply would be over 65K.

* Smarter algo for enforcing max chunk size policy

Instead of keeping either the first or last items, we use a random offset. This way peers will eventually receive info about all channels even if chunks are much larger than the max chunk size and are pruned.
2020-01-14 14:28:51 +01:00
Pierre-Marie Padiou
d3a2998998
Always encode empty list of scids as uncompressed (#1276)
For compatibility with c-lightning & lnd.

This is a simpler alternative to #1275.
2020-01-14 11:22:15 +01:00
Bastien Teinturier
c496a2264d
Avoid sending PaymentSecret/MPP in Init (#1273)
There is currently a backwards-compatibility issue with eclair-mobile.
Eclair-mobile mistakes feature bit 15 (payment_secret) for the
gossip_queries_ex prototype (which is incompatible with the spec-ed version).

To temporarily avoid this issue (until eclair-mobile is patched and all users have updated),
we never advertize those ambiguous bits in Init.
They're only really needed in the invoice so it's ok.
2020-01-10 15:57:01 +01:00
dpad85
4a7bd43e68
Merge branch 'android' into android-phoenix 2020-01-10 15:53:24 +01:00
dpad85
9f8f8e43ac
Remove feature graph validation in payment request
Due to changes in the features system (#1253), feature graph
validation would fail with legacy 1.0.1 Phoenix wallet. This check
should be disabled as long as there are 1.0.1 Phoenix wallet in
the wild.
2020-01-10 15:16:43 +01:00
sstone
5f401d8d86
Merge branch 'master' into android 2020-01-10 14:38:33 +01:00
Fabrice Drouin
34740fbdc2
Restore missing 'db.close()' methods (#1272)
* Db: restore missing 'close' methods

They are used by the mobile applications.
2020-01-10 14:37:37 +01:00
dpad85
641174db25
Merge branch 'android' into android-phoenix 2020-01-10 13:20:55 +01:00
dpad85
b1174b6c87
Merge branch 'android' into android-phoenix 2020-01-10 11:31:33 +01:00
sstone
9dc70a9482 Merge branch 'master' into android 2020-01-09 18:07:14 +01:00
Bastien Teinturier
72338ab58d
Flat features (#1253)
Implement https://github.com/lightningnetwork/lightning-rfc/pull/666

Keep the global/local split in Commitments to avoid backwards incompatibility in the codec.
Remove allowMultiPart API field: we instead rely on the MPP feature being set in nodeParams.
That means MPP-enabled nodes need to update their reference.conf.

Rework features:

* Add types to allow cleaner dependency validation.
* Most of the time we don't care whether a feature is activated as optional or mandatory, which caused duplicate code. This is now handled more cleanly.
* It also paves the way to annotate features with the places they should be advertised (Init vs NodeAnn vs ChannelAnn vs invoice).
2020-01-09 13:47:43 +01:00
Bastien Teinturier
dbb6c8ffdf
Disable Trampoline-MPP to non-Phoenix recipients (#1271)
This is safer for now since the splitting algorithm isn't working
well on nodes with a large number of channels and we don't
expect too many payments from Phoenix to non-Phoenix to
actually need MPP in the short term.
2020-01-08 16:47:01 +01:00
Fabrice Drouin
0a615489c6 Fix Outpoint JSON serialization (#1270)
We now use tx id instead of tx hash, so it can be copy/pasted 
into an explorer.
2020-01-08 14:09:18 +01:00
sstone
5e244f922a
Fix dependency conflict in eclair-node
We need to exclude an old version of shapeless that is pulled by spray (otherwise you
may get non-determinitsic 'class not found' errors at runtime).
2020-01-08 12:08:57 +01:00
sstone
e178ec345a
Merge branch 'master' into android 2020-01-08 11:46:50 +01:00
Bastien Teinturier
6773eda0ab
Remove mockito from switchboard tests (#1267)
Mockito sometimes throws an unnecessary stubbing exception, it's unclear whether the test is faulty or mockito has issues with our parallel setup.

Rewrite switchboard tests without mockito makes them more flexible.
In case they randomly fail we should get more useful data to help troubleshooting.
2020-01-07 16:49:38 +01:00
Pierre-Marie Padiou
5d3c85984e
More consistency in sending messages during sync (#1268)
Instead of sending messages to the connection actor, we put them in a
list and send during transitions, like it's done elsewhere in the
channel actor.
2020-01-07 16:44:51 +01:00
sstone
6ed591e978
Merge branch 'master' into android 2020-01-06 14:00:21 +01:00
Anton Kumaigorodski
7362f33a8a Remove repeated code (#1265)
Small refactoring of common tasks in channel management.
2019-12-24 13:06:45 +01:00
Mike W. Erwin
562ad5d4d8 Added some instructions for TOR auth (#1262) 2019-12-24 09:11:24 +01:00
dpad85
de553697f3
Keep connection to peer even with no channels
Phoenix requires a connection to a remote peer for several features
to function properly (pay-to-open, swap-in, ...). When initializing
a new wallet, we have a connection but no channels, and the current
logic will prevent the node to reconnect to its peer in case the
connection is lost.

This commit adds special cases for the Phoenix app.
2019-12-23 15:03:32 +01:00
dpad85
c4f25e870e
Back to development version 2019-12-23 12:25:08 +01:00
Bastien Teinturier
80b642089a
Improve CommandSend type (#1260)
Add type with upper bound to make `asInstanceOf` unnecessary.
Split `HasHtlcId` from `Command`: they are orthogonal traits.
2019-12-18 16:39:20 +01:00
Bastien Teinturier
611f0cfebe
Relay Trampoline payments (#1220)
Start relaying trampoline payments with multi-part aggregation (disabled by default,
must be enabled with config).
Recovery after a restart is correctly handled, even if payments were being forwarded.
No DB schema update in this commit.

The trampoline UX will be somewhat bad because many improvements/polish are missing.
Some shortcuts were taken, a few hacks here and there need to be fixed, but nothing too scary.
Those improvements will be done in separate commits before the next release.
2019-12-18 14:34:52 +01:00
Bastien Teinturier
2d95168749
Update Maven (3.6.3) (#1259) 2019-12-17 10:41:21 +01:00
Dominique
709e3f416a Add synchronization when locking database connection (#1200)
* Exclusive lock on eclair.sqlite method is now synchronized
* Close SQL connections if connection creation fails
2019-12-12 09:22:17 +01:00
Anton Kumaigorodski
7460f3b0d8 Add HasHtlcIdCommand trait (#1245) 2019-12-11 14:40:22 +01:00
Pierre-Marie Padiou
e1c48ebda1
Better randomization of reconnection delay (#1250)
Randomization is necessary, otherwise if two peers attempt to reconnect
to each other in a synchronized fashion, they will enter in a
disconnect-reconnect loop.

We already had randomization for the initial reconnection attempt, but
further reconnection attempts were using a deterministic schedule
following an exponential backoff curve.

Fixes #1238.
2019-12-11 14:16:48 +01:00
Pierre-Marie Padiou
e2d472a08e
Minor: missing log category in peer (#1241) 2019-12-11 14:03:30 +01:00
Bastien Teinturier
27a68a4898
MPP: don't retry if failure comes from final recipient (#1246) 2019-12-11 13:53:53 +01:00
Pierre-Marie Padiou
6ffd35f8a7
Minor: ignore "disconnecting" message in Channel (#1231)
This message is sent by the `Peer` in answer to a `Peer.Disconnect` command.
2019-12-10 13:40:38 +01:00
dpad85
bcfd72de8a
Release v0.3.4-android-phoenix 2019-12-09 18:43:23 +01:00
pm47
6858fb1c91
peer-backup: use a tlv-ready encoding 2019-12-09 18:02:43 +01:00
Fabrice Drouin
31c13c939f
Add a configurable time-out to onchain fee provider requests (#1244)
* Add a configurable time-out to onchain fee provider requests

We configure a timeout of 5 seconds, applicable to all fee providers. If a provider times out we switch to the next one in our list.
Our mobile app needs a feerate to start properly and currently waits too long when a fee provider is online but very slow to respond.
2019-12-09 17:23:48 +01:00
Fabrice Drouin
b6f922f3c3
Add a configurable time-out to onchain fee provider requests (#1244)
* Add a configurable time-out to onchain fee provider requests

We configure a timeout of 5 seconds, applicable to all fee providers. If a provider times out we switch to the next one in our list.
Our mobile app needs a feerate to start properly and currently waits too long when a fee provider is online but very slow to respond.
2019-12-09 16:18:12 +01:00
Bastien Teinturier
b6511ad904
Fix MPP flaky test (#1243)
We can't guarantee with the current algorithm that the last HTLC won't be
a small one (the leftovers).
If we see that happen in real scenario, we'll need to add heuristics to avoid it.
2019-12-09 14:12:27 +01:00
Pierre-Marie Padiou
be7429fad4
added blank lines to minimize conflicts (#1236)
See
https://about.gitlab.com/blog/2015/02/10/gitlab-reduced-merge-conflicts-by-90-percent-with-changelog-placeholders/
2019-12-06 14:23:56 +01:00
Pierre-Marie Padiou
38a3f07f83
Set akka.loglevel to DEBUG (#1235)
This allows us to only use logback.xml to control the log level.

From akka docs [1]:
> If you set the loglevel to a higher level than DEBUG, any DEBUG events
will be filtered out already at the source and will never reach the
logging backend, regardless of how the backend is configured.
> You can enable DEBUG level for akka.loglevel and control the actual
level in the SLF4J backend without any significant overhead, also for
production.

[1] https://doc.akka.io/docs/akka/current/logging.html
2019-12-06 13:57:45 +01:00
pm47
75ee80448f
write channel state in db on restore 2019-12-05 19:36:17 +01:00
pm47
503fd6c22a
support phoenix features
This commit adds support for:
- zero-reserve
- spend-unconfirmed
- pay-to-open
- trusted-swap-in
- trusted-swap-out
- peer-backup
- trampoline

This sets the version to 0.3.4-android-phoenix-SNAPSHOT.
2019-12-05 14:33:57 +01:00
Dominique
79d6dc227e
Fix outgoing payments order in payments overview (#1232)
Using the `max()` aggregating function on outgoing payments' 
timestamps, we can ensure that the non-aggregated columns 
for the outgoing payments contain the most recent/pertinent data.
2019-12-05 14:33:48 +01:00