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

2245 commits

Author SHA1 Message Date
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
Dominique
f5a626686f
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-04 17:29:55 +01:00
Pierre-Marie Padiou
167d65bc36
Added a 'category' in logs (#1227)
Also added paymentHash to MDC context
2019-12-04 14:17:56 +01:00
pm47
801ac2e43b
Merge branch 'master' into android 2019-12-02 16:26:37 +01:00
Bastien Teinturier
12f95ca8f5
Handle chain re-org in balance computation (#1228)
If a chain re-org happens and a new ShortChannelId is assigned,
the `Relayer` kept both entries (new and old).

This resulted in an incorrect balance because we effectively counted this channel twice.
2019-12-02 16:15:56 +01:00
Bastien Teinturier
215be94640
Fix onion codec test (#1229)
While #1222 was being reviewed, a new unit test was added to OnionCodecsSpec.
It didn't cause any file conflict so Github didn't warn about merging #1222.
However this test needed to be updated to the new truncated int format.
2019-12-02 11:40:22 +01:00
Dominique
fd5d9aec0a
High level payments overview method (#1225)
Add a method to fetch a high level/high performance overview of the 
payments from the payment database.
2019-12-02 11:35:34 +01:00
Bastien Teinturier
20380b2991
Rework truncated integers codecs (#1212)
The spec defines tu64 (and friends) without the length prefix.
Multi-part uses a tu64 without a length prefix inside the PaymentData record.

Our previous implementation only supported using tu64 alone in a TLV record.
We make this more flexible by separating the length encoding.
2019-12-02 11:06:47 +01:00
Pierre-Marie Padiou
b5f993c1ab
Extended doHandle to other messages in MultiPartHandler (#1226) 2019-11-29 17:03:26 +01:00
sstone
23830cbdfc
Merge branch 'master' into android 2019-11-29 15:54:45 +01:00
Bastien Teinturier
d1342eb072
Avoid incoherent payment request features. (#1222)
MPP implies payment secret.
Avoid raising exceptions in PaymentInitiator: validate invoice instead of using a require.
This way senders always get a response.
2019-11-29 10:43:23 +01:00
Bastien Teinturier
631336ed84
Fix MPP post-restart HTLC clean-up (#1224)
We previously had some logic where we would fail incoming HTLCs
for which we were the final recipient when a channel would come online.

That made sense when we didn't have MPP, but with MPP we cannot do that.
There is a risk that we would be failing HTLCs that are considered received by the MPP FSM.
Instead we need to use the CommandBuffer when we are the final recipient.
This way pending commands cannot be lost and HTLCs are cleaned-up on restart.
2019-11-28 18:06:29 +01:00
sstone
e78e091e62
Merge branch 'master' into android 2019-11-28 17:18:28 +01:00
Pierre-Marie Padiou
0937af3a0b
Improved tracing of single/multi-part payments (#1218)
This includes a bit of refactoring in `MultiPartPaymentLifecycle`. Note
that we can't use the `onTermination` handler to finish the spans,
because it is asynchronous and may not be called after a long time.
That's why we use a dedicated `myStop` function.

In Kamon 2.0, by default spans are automatically generated for tracked
actors, which we don't want because we define our own spans. That's why
there is an additional configuration in `application.conf`.
2019-11-22 11:57:28 +01:00
n1bor
ff3aefa45e Add networkstats API call to allow display of network stats (#1221) 2019-11-22 09:58:08 +01:00
Bastien Teinturier
321ecef35c
MPP routing improvements (#1219)
MPP split/retry improvements:
* Only use public channels when sending to remote node
* Don't retry when sending to direct peer
* Blacklist channels that are a bad route prefix
2019-11-21 09:29:49 +01:00
sstone
96e847926c
Merge branch 'master' into android 2019-11-19 14:05:35 +01:00
Bastien Teinturier
c76cc5bfe6
PaymentLifecycle should tell the router to ignore route prefix (#1217)
When paying a multi-part payment, we tell the PaymentLifecycle to use a route prefix that contains the first hop (for example a -> b via channel 1).

We need to also tell the router to ignore the nodes that are in the route prefix, otherwise when retrying it may try some completely dumb routes that have no chance of succeeding.
2019-11-18 15:25:38 +01:00
Dominique
f45dc1c0fd
Fallback ElectrumClient to TLS 1.2 if 1.3 is not supported (#1216)
Blindly enabling TLS 1.3 raises an error on android < 10. 
Support should be checked beforehand, and client must fallback 
to `TLSv1.2`.
2019-11-18 15:23:58 +01:00
araspitzu
ac9c091fca
Fix /allupdates API (#1187)
* Fix `allUpdates` API when used with the public key filter, the API now returns all updates that involve a channel of which the filter key has made an update
2019-11-18 14:51:46 +01:00
dpad85
3437b86dc8
Fixed configuration loaders for lite setups 2019-11-18 11:07:01 +01:00
sstone
71527148c2 Merge branch 'master' into android 2019-11-15 10:14:17 +01:00
Bastien Teinturier
11003097cf
Refactor: move channel relaying to a ChannelRelayer actor. (#1215)
The relayer is the top-level orchestrator that forwards to a payment handler, channel relayer or (coming) node relayer.
2019-11-14 16:40:21 +01:00
Bastien Teinturier
859b405587
Update invoice test vectors. (#1213)
The spec PR was updated to modify the feature bits in the official test vectors.
2019-11-14 16:21:32 +01:00
Bastien Teinturier
6bc5fcfecf
Add trampoline onion support (#1209)
This commit adds support for creating and decrypting trampoline onions.
It doesn't add support for forwarding/routing trampoline payments yet.
2019-11-14 11:38:00 +01:00
sstone
7f7f737381 Merge branch 'master' into android 2019-11-14 10:13:34 +01:00
Fabrice Drouin
30a0e9935a
Payment Request: speed up node id computation (#1203)
* Payment Request: speed up node id computation

Use native secp256k1 pubkey recovery for faster node id computation
2019-11-14 10:04:51 +01:00
Pierre-Marie Padiou
95586300a0
Ignore NPE in tests (#1211)
This is due to a callback being executed after the parent actor has been
cleaned up. We don't really care about the result anyway, so we can
safely ignore, even if the issue only arises in tests.

The root problem here is that we are making references to actor methods
from a callback, which we shouldn't do, because whatever we reference
may have disappeared by the time the callback tries to access it. A
better pattern would be to `pipe` the results of the `Future` to
oneself, but that would require more work and possibly change the FSM,
which seems overkill for the issue at hand.
2019-11-14 09:55:09 +01:00
sstone
cd460eec6a Merge branch 'master' into android 2019-11-14 09:48:35 +01:00
Pierre-Marie Padiou
e5060d9377
Fixed race condition on payment handler init (#1208)
When an actor sends a message to itself as part of its class definition,
there is no guarantee that this message will be processed first. Relying
on that to set the default payment handler is problematic and causes
race conditions in tests.
2019-11-13 11:05:01 +01:00
Pierre-Marie Padiou
dd86f8701a
Fixed composition of receive handlers (#1207)
It was only working with one custom receive handler, but what we really want is the ability to stack multiple handlers.
2019-11-13 09:50:07 +01:00
Bastien Teinturier
ed022b00ea
Multi part payments (#1153)
Add support for multi-part payments (MPP).
We can now send and receive multi-part payments, with a somewhat basic splitting algorithm that will be refined based on real-world usage.
Compatibility with other implementations hasn't been tested yet as they don't have a branch ready.
This compatibility testing may reveal small details that need to be changed and may invalidate pending multi-part invoices.
2019-11-12 16:06:41 +01:00
sstone
5f4527a11d Merge branch 'master' into android 2019-11-08 10:50:00 +01:00
sstone
2d5faf842b Update Kamon mocks 2019-11-06 13:53:53 +01:00
Pierre-Marie Padiou
9d95b55e97
Minor: fixed format in exception message (#1199) 2019-11-05 16:39:38 +01:00
sstone
f57d152415 Merge branch 'master' into android 2019-11-05 11:02:46 +01:00
Pierre-Marie Padiou
5a6b791203
More metrics (#1196)
* added metrics on bitcoin rpc

* added metrics on lightning message codec
2019-11-04 16:19:15 +01:00
araspitzu
e831c2a4ba
Add 'getnewaddress' API (#1190)
* Add 'getdnewaddress' API

* Restrict newaddress API usage to bitcoin core wallet
2019-11-04 14:54:02 +01:00
sstone
ba2321688a Merge branch 'master' into android 2019-10-31 17:23:05 +01:00
Bastien Teinturier
fbdb369e82
Fix codecov unknown tag (#1181) 2019-10-23 10:04:13 +02:00
Bastien Teinturier
b3543a4841
Refactor Upstream/Origin (#1176)
This is a small refactoring of how we handle upstream/origin HTLC.
2019-10-22 14:16:50 +02:00
Bastien Teinturier
f48b423a93
Fix ignored duplicate amounts in htlc-value-in-flight (#1180)
Credits to @btcontract for finding the bug
2019-10-22 11:49:27 +02:00
Fabrice Drouin
b9252cdf87
Release 0.3.2 (#1177)
Set version to 0.3.3-SNAPSHOT
2019-10-15 19:26:42 +02:00
Fabrice Drouin
5ff8828d07
Check configuration for obsolete keys in startup (#1175)
* Check configuration for obsolete keys on startup

We now check the loaded configuration for obsolete keys (that have been moved to a new section) and throw an error if any are found, which will prevent eclair from starting.
2019-10-15 16:37:19 +02:00
Pierre-Marie Padiou
bdb093a7a8
Update assisted channels (#1172)
When sending a payment, if a node on the route answers with an
`UPDATE`-type error, we update our routing table with the new
`channel_update` that is attached to the error message.

But additional routing info (provided by receiver in payment requests)
take precedence over whatever data is in the routing table. If one of
the nodes contained in the routing info replies with a newer
`channel_update`, we will indeed update our routing table, before
retrying, but then we will override it by the (untouched) assisted routes.

We know also update the assisted routes.
2019-10-14 18:09:03 +02:00
Fabrice Drouin
064f780680
Sqlite: use TEXT type for strings (#1159)
* SqliteNetworkDb: add failing test

If a txid starts with 0, it will be stored as NUMERIC, leading 0s will be stripped, and we won't be able to read it back as a ByteVector32

* Sqlite: use TEXT type for strings

* Check that creating a table that already exists with different column types is a NOOP
2019-10-14 11:31:20 +02:00