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

2167 commits

Author SHA1 Message Date
Bastien Teinturier
8144269a14
Allow deactivating MPP (#1289)
When paying an invoice, we weren't properly checking our own features.
If the invoice supported MPP, we would use it all the time.

If MPP isn't enabled in our features, we now default to a legacy payment.

(cherry picked from commit 60359c68e8)
2020-01-23 16:01:53 +01:00
dpad85
185e9edfbe
Back to development version 2020-01-23 15:40:28 +01:00
Bastien Teinturier
60359c68e8 Allow deactivating MPP (#1289)
When paying an invoice, we weren't properly checking our own features.
If the invoice supported MPP, we would use it all the time.

If MPP isn't enabled in our features, we now default to a legacy payment.
2020-01-23 15:38:40 +01:00
dpad85
7df9b79819
Merge branch 'android' into android-phoenix
Release 0.3.6-android-phoenix-RC1
2020-01-23 11:28:56 +01:00
dpad85
c42251aa0d
Release 0.3.6-android RC1 2020-01-22 18:59:56 +01:00
Fabrice Drouin
67118c888d
Read fee provider timeout from config correctly (#1288)
(cherry picked from commit 5551242ef0)
2020-01-22 18:57:56 +01:00
Fabrice Drouin
e3f6f08631
Peer: use a minimum reconnection delay of 200 ms (#1285)
If our initial random deconnnection delay is 0 (unlikely but possible) then all "exponential backoff" reconnection delays will be 0 too, so we set a minimum value of 200 milliseconds.

(cherry picked from commit a0ae5ef13f)
2020-01-22 18:57:40 +01:00
Fabrice Drouin
5551242ef0 Read fee provider timeout from config correctly (#1288) 2020-01-22 18:52:08 +01:00
dpad85
b6a4fe6b12
Back to development version 2020-01-22 14:27:54 +01:00
dpad85
1a8f225d76
Back to development version 2020-01-22 14:26:13 +01:00
Bastien Teinturier
d34d342528
Improve NodeRelayer errors (#1261)
Add new errors that let senders know they need to raise the trampoline fee/ctlv.
When the error is downstream, select the best error to forward.

Implement retry with more fees for trampoline payments.
This process is currently quite manual: the sender decides upfront on
each attempt's fee/cltv.
2020-01-21 17:27:26 +01:00
Fabrice Drouin
a0ae5ef13f
Peer: use a minimum reconnection delay of 200 ms (#1285)
If our initial random deconnnection delay is 0 (unlikely but possible) then all "exponential backoff" reconnection delays will be 0 too, so we set a minimum value of 200 milliseconds.
2020-01-21 17:16:50 +01:00
Bastien Teinturier
ca713ba883
Add networks to init message (#1254) 2020-01-21 13:14:38 +01:00
dpad85
d016847253
Release v0.3.5-android-phoenix 2020-01-21 10:37:58 +01:00
dpad85
f005a4fdb8
Merge branch 'android' into android-phoenix 2020-01-21 10:35:24 +01:00
dpad85
25b9505529
Release v0.3.5-android
Note that this release jumps straight from 0.3.3 to 0.3.5 so that
the android and android-phoenix branches have similar versions tags,
which makes it easier to track.

As such there is no 0.3.4-android version.
2020-01-21 10:21:05 +01:00
dpad85
5ef4edb348
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.

(cherry picked from commit 9f8f8e43ac)
2020-01-21 10:20:48 +01:00
Dave Scotese
01a30edc3c Better Non-segwit UTXOs assert message. (#1258) 2020-01-21 09:46:25 +01:00
Dave Scotese
c8dc9e7337 Provide solution to "non-segwit UTXO found." (#1256)
The term "non-segwit UTXOs" appears in the error message that results from having such outputs in your bitcoin core wallet, and now the readme contains that same term and the solution to make troubleshooting easier.
2020-01-21 09:45:14 +01:00
Fabrice Drouin
2c0732e6a3
Make sure that ids chunks strictly cover the requested range, without gaps (#1279)
lnd expects ids ranges in reply_channel_range messages to strictly follow each other, without gaps.
For example, using block heights and not ids, [1,2,4,5] would be split into (first=1, num=2, [1,2]) :: (first=3, num=2, [4, 5])

This is arguably a limitation of lnd (c-lightning does not requires this and it's not needed to properly process replies) but is easy to implement.
2020-01-20 15:33:58 +01:00
Bastien Teinturier
518e56f462
Broadcast gossip regardless of timestamp filters (#1284)
This is needed to make sure we broadcast our own gossip.
Otherwise we will try to gossip at the beginning of the connection,
when the peer hasn't set any timestamp, so our gossip will be dropped.

See https://github.com/lightningnetwork/lightning-rfc/pull/684
2020-01-20 15:32:43 +01:00
dpad85
e543dff0a2
Accept to pay amountless trampoline invoices (phoenix special) 2020-01-17 15:44:28 +01:00
dpad85
19b600e2be
Merge branch 'master' into android 2020-01-17 15:33:45 +01:00
Bastien Teinturier
aa137b7da6
MPP: allow using unannounced channels (#1283)
Otherwise eclair-mobile can't pay using MPP.
This heuristic was only here to help Trampoline nodes with a lot of
channels relay using MPP, but we disabled that in #1271 anyway.
We will reactivate Trampoline-MPP once split is done inside the router.
2020-01-17 15:11:26 +01:00
Bastien Teinturier
cb3ed7cde6
Improve error message when invalid funding tx (#1282)
Closes #1281
2020-01-17 13:39:53 +01:00
Anton Kumaigorodski
b81bf20d75 Find htlc by id method (#1266) 2020-01-16 13:16:34 +01:00
dpad85
a6d23d4f8a
Merge branch 'android' into android-phoenix 2020-01-16 11:50:35 +01:00
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