Commit Graph

15198 Commits

Author SHA1 Message Date
ThomasV c6f940d092 trampoline: less verbose, do not log routes that are not tried 2022-09-03 18:24:58 +02:00
ThomasV 26245c1ac9 unit tests: split test_payment_trampoline into two tests 2022-09-03 11:16:37 +02:00
ThomasV 14e96f4d53 Index request by ID instead of receiving address.
Replace get_key_for_outgoing_invoice, get_key_for_incoming_request
with Invoice.get_id()

When a new request is created, reuse addresses of expired requests (fixes #7927)

The API is changed for the following commands:
 get_request, get_invoice,
 list_requests, list_invoices,
 delete_request, delete_invoice
2022-09-02 10:58:11 +02:00
ThomasV 7d317761da wallet API: remove get_request_status, it is redundant with get_invoice_status 2022-09-01 10:01:09 +02:00
ThomasV 70da10d662 fix watchtower regtest flakiness caused by CTN variability. fixes #7961 2022-09-01 09:56:46 +02:00
Sander van Grieken 6d77253ac2 qml: remove log statement 2022-08-31 13:50:26 +02:00
Sander van Grieken 40e8ff6ce2 qml: add hack to delay rendering of QR until dialog is shown.
unfortunately, using standard QtQuick Image.asynchronous=true leads
to a deadlock at app exit so we can't use it a.t.m.
2022-08-31 13:33:58 +02:00
Sander van Grieken 179666612e qml: fix get_request in qerequestdetails 2022-08-31 13:31:19 +02:00
ThomasV f20b371737 fix #7959 2022-08-31 11:03:04 +02:00
SomberNight 42f2a3da31 Qt pay_lightning_invoice: handle NoDynamicFeeEstimates
`wallet.make_unsigned_transaction` can raise NotEnoughFunds or NoDynamicFeeEstimates.
These are "expected" exceptions that need to be handled or worked around. Added a note
of this in the docstring now.

We now handle NoDynamicFeeEstimates by allowing a static fallback fee in
`wallet.can_pay_onchain` and `lnworker.suggest_funding_amount`. It should be
fine to have a static fallback in these cases, as the user still has a chance
to set their own fee later in the flow.
(though ofc the static fallback might be too high in some mempool conditions,
in which case e.g. can_pay_onchain might return a false-negative, but this
is still an improvement over raising I believe)

fixes https://github.com/spesmilo/electrum/issues/5784
2022-08-30 11:46:52 +00:00
SomberNight a143d05fb9 mac build: bump pyinstaller (4.2 -> 5.3) 2022-08-29 15:22:47 +00:00
SomberNight b3e869a5de build win/mac: do not pass custom args to pyinstaller; use envvars
custom args no longer work with pyinstaller 5.0 (see https://github.com/pyinstaller/pyinstaller/issues/6762 )

```
option(s) not allowed:
  ...
makespec options not valid when a .spec file is given
```
2022-08-29 15:22:43 +00:00
SomberNight 2d458d3b06 (trivial) contrib/build-wine: convert line-endings (CRLF -> LF)
otherwise no-op
2022-08-29 15:20:26 +00:00
SomberNight 89e1bbf4ec mac build: add message to camera permission prompt, in Info.plist
based on https://github.com/Electron-Cash/Electron-Cash/commit/0b5b5fb228dbd3be60197b7ccde27ff32d9786ad

Co-authored-by: Calin Culianu <calin.culianu@gmail.com>
2022-08-29 13:46:47 +00:00
SomberNight e39ab1623a mac build: set minimum system version to 10.13.0 in Info.plist
based on https://github.com/Electron-Cash/Electron-Cash/commit/907e5e7009e00815f8df3925c50e8d246d3d0359

This way users get more feedback from the OS when they attempt to launch the app on old macOS.

Co-authored-by: Calin Culianu <calin.culianu@gmail.com>
2022-08-29 13:43:57 +00:00
SomberNight 859d43d0b2 mac build: let pyinstaller handle Info.plist
note: newer versions of pyinstaller (4.4+ ?) want to sign the bundle
themselves, in which case modifying the Info.plist file after
pyinstaller returns invalidates the sig.
2022-08-29 13:35:39 +00:00
SomberNight d37b5e7d75 Qt ReceiveTabWidget: change cursor to hint QR code can be clicked 2022-08-29 13:30:59 +00:00
SomberNight abec59e17d mac build: rm unused BUILDDIR 2022-08-29 12:47:31 +00:00
SomberNight 20997cf60b wallet: follow-up removal of get_request_status
follow-up d9f77a50e8
2022-08-29 12:27:05 +00:00
ThomasV 6a9e8da218 remove sign_payment_request: broken and not used 2022-08-29 12:50:02 +02:00
ThomasV 2df45faeae follow-up previous commit 2022-08-29 10:27:56 +02:00
ThomasV cf94ebc106 If an invoice cannot be parsed in import_invoices or import_requests,
raise FileImportFailed. Fixes #7950
2022-08-29 10:21:14 +02:00
ThomasV d9f77a50e8 wallet API: remove get_request_status, it is redundant with get_invoice_status 2022-08-29 09:48:08 +02:00
Sander van Grieken 291ca40c9e qml: fix missing param in userNotify 2022-08-27 13:41:59 +02:00
SomberNight 12e628e2e6 aiorpcx: fix bug in timeout_after monkeypatch
fixes https://github.com/spesmilo/electrum/issues/7952

see in particular https://github.com/spesmilo/electrum/issues/7952#issuecomment-1227225602
> So the issue is with the aiorpcx monkey patch in util.py, as it
> relies on side-effecting the asyncio.Task, and it patches Task.cancel.
> However, aiohttp also uses Task.cancel for its own timeouting of the
> http request, with the same Task object, and this confuses timeout_after.
> Ultimately FxThread.run exits.

related https://github.com/kyuupichan/aiorpcX/pull/47

---

note: I am not content at all with this monkey-patching approach,
but at the same time I don't see how to properly fix this handling all
edge-cases in aiorpcx.

python 3.11 is finally adding an implementation of TaskGroup [0] and
an async timeout context manager [1] in the asyncio module of the stdlib.
Looking at the implementations, they look unfeasible to backport:
much of the implementation of asyncio.Task had to be changed for them
to work, and TaskGroup in particular relies on the new ExceptionGroups.
Some of these edge cases we are battling with aiorpcx.curio look
difficult to fix without those stdlib changes...
Anyway, when we bump the min python to 3.11, I look forward to switching
to that code instead, and ripping this stuff out.

[0]: https://docs.python.org/3.11/library/asyncio-task.html#task-groups
[1]: https://docs.python.org/3.11/library/asyncio-task.html#asyncio.timeout
2022-08-26 15:27:53 +00:00
Sander van Grieken 629b0c56f3 qml: fix missing import 2022-08-26 15:15:40 +02:00
Sander van Grieken 34c901b1a6 qml: add Save Backup dialog when no onchain backup, some initial work on incomplete funding TX 2022-08-26 15:06:10 +02:00
ghost43 b6d744df04 Merge pull request #7955 from SomberNight/202208_fxrate_more_robust
exchange_rate: more robust spot price against temporary network issues
2022-08-26 11:54:05 +00:00
SomberNight 03b514863e exchange_rate: more robust spot price against temporary network issues
We poll the fx rate provider every 2.5 minutes (unchanged).
Previously if there was any error during a tick, there was no fx rate
available in the client until the next tick.
Now, instead, we keep the last rates received with a 10 minute expiry.

One potential drawback is that previously there was instant feedback
to the user when e.g. changing proxy settings, and this is no longer
the case. E.g. consider a provider that bans Tor exit nodes. If a user
enables using a Tor proxy in the network settings, the fxrate used to
disappear immediately - but now the cached rate would still be
available.
2022-08-26 11:48:51 +00:00
Sander van Grieken b9f381a133 qml: fix channel double add to list on open, better display errors 2022-08-26 13:21:49 +02:00
Sander van Grieken e582ae0486 qml: add QEAmount.copyFrom(QEAmount) so we can take a new amount object without changing the instance.
This avoids crashes when a QEAmount is already referenced in QML, and then replaced with another instance (e.g. in qetxfinalizer.py)
2022-08-26 11:57:00 +02:00
Sander van Grieken f398404e04 qml: add server and proxy config dialogs, forgot new files 2022-08-25 11:13:42 +02:00
ThomasV dd95369685 qml: fix undefined name (flake8 mandatory test) 2022-08-25 09:51:32 +02:00
Sander van Grieken 7b17626c4c qml: PIN error message also when setting new pin and second entry doesn't match 2022-08-24 16:21:14 +02:00
TadeuBAS 39c3d0585d build scripts: add quotes around some paths (#7949)
* Update make_libsecp256k1.sh

Avoid error when parent folder has spaces `./make_libsecp256k1.sh: line 31: cd: too many arguments`

* Avoid error when parent folder has spaces, fix for make_libsecp256k1.sh, make_zbar.sh and make_libusb.sh

Co-authored-by: ghost43 <somber.night@protonmail.com>
2022-08-24 14:18:39 +00:00
Sander van Grieken 3295671e5b qml: show when PIN is wrong 2022-08-24 16:16:50 +02:00
SomberNight 8cbf49fec9 Qt balance dialog: use monospace font for btc amounts 2022-08-24 14:05:35 +00:00
Sander van Grieken 9a72f98855 qml: add server and proxy config dialogs 2022-08-24 16:01:50 +02:00
SomberNight 757ec53ea2 AddressSynchronizer: set diagnostic_name for better logs
fixes regression from https://github.com/spesmilo/electrum/commit/121d8732f1e1d97f70a0f72221b4acca1e818319

in particular, this is needed for Synchronizer.diagnostic_name and SPV.diagnostic_name
2022-08-24 11:05:01 +00:00
Sander van Grieken dea30f96a1 qml: small fixes, cleanup 2022-08-24 12:38:25 +02:00
Sander van Grieken c37e202e44 qml: implement scrollbar drag in history listview 2022-08-24 12:25:51 +02:00
Sander van Grieken b0cfc2ab14 qml: add channel backup option to channel details page 2022-08-24 10:15:44 +02:00
Sander van Grieken bb8af0cd08 qml: add help_text to GenericShareDialog 2022-08-24 10:15:03 +02:00
Sander van Grieken 1e375ae9e1 qml: allow separate data for clipboard/share and QR code in GenericShareDialog 2022-08-23 20:21:18 +02:00
Sander van Grieken 65b3c1abb3 qml: fix derivation prefix not available for watch-ony wallets 2022-08-23 22:04:08 +02:00
Sander van Grieken f05ff0c9b8 qml: add QERequestDetails component.
Auto binds to wallet request status update signal so qml doesn't have to.
implements timer to update status string when near expiry.
2022-08-23 17:13:22 +02:00
SomberNight 4f574afe5a Merge remote-tracking branch 'remotes/spesmilo/appimage-debian-base'
Change Docker base images from Ubuntu to Debian, and use `snapshot.debian.org` as apt source list.
Ubuntu occasionally removes version-pinned packages from apt (see #7484), which
- breaks historical reproducible builds
- introduces maintenance burden as we have to update the version pins
Hopefully this change fixes both issues.

merges https://github.com/spesmilo/electrum/pull/7926
closes https://github.com/spesmilo/electrum/issues/7484
2022-08-22 13:10:25 +00:00
SomberNight 0ac49ea8c4 cirrus CI build: fix docker context to make COPY instructions work
see https://cirrus-ci.org/guide/writing-tasks/#environment-variables :
> CIRRUS_DOCKER_CONTEXT: Docker build's context directory to use for Dockerfile as a CI environment. Defaults to project's root directory.
2022-08-22 12:47:38 +00:00
SomberNight 65fda1f41d android build: fix Dockerfile "COPY" instructions
The build context is $PROJECT_ROOT
2022-08-22 12:47:35 +00:00
SomberNight b8240bec3e wine build: build win-iconv-mingw-w64-dev, instead of using debian sid
without this, when using a ~week old debian sid snapshot, I got:
```
E: Release file for https://snapshot.debian.org/archive/debian/20220811T031049Z/dists/sid/InRelease is expired (invalid since 1d 11h 56min 39s). Updates for this repository will not be applied.
```
2022-08-22 12:47:31 +00:00