Commit graph

12117 commits

Author SHA1 Message Date
matejcik
3fc70bd97a trezor: implement support for Shamir recovery 2019-12-18 12:36:13 +01:00
matejcik
f4e2781786 trezor: link button messages to enum names 2019-12-18 12:36:13 +01:00
SomberNight
79681c90e0
wallet._is_onchain_invoice_paid: support "zero amount" invoice 2019-12-17 22:12:51 +01:00
Axel Gembe
880bd16883
AppImage: Improve binary stripping
Slightly reduces file size, improves build speed and makes build more
reproducible.

The .comment section contained GCC version information which could cause
different build output from just a minor update in GCC. The information is not
needed so we strip this.

The strip command was invoked using xargs, spawning a new process for each file.
This is inefficient as xargs can correctly run the strip command with multiple
file names.

-----

taken from 43aaf9572f
2019-12-17 21:41:17 +01:00
SomberNight
33facd151d
ledger.sign_transaction: always do certain output checks 2019-12-17 21:33:07 +01:00
SomberNight
ee63e84bcf
ledger: faster sign_transaction startup
Only call Ledger_KeyStore.get_client_electrum() once,
as it runs DeviceMgr.scan_devices(), which is slow.
2019-12-17 21:19:57 +01:00
SomberNight
6b8c447eb9
ledger: support sending to OP_RETURN outputs
closes #5849

based on:
ca9b432ff0
7bb27eff84
2019-12-17 21:10:14 +01:00
SomberNight
02baae10d7
kivy: implement opening storage-encrypted wallet files 2019-12-17 18:39:52 +01:00
SomberNight
72491bdf18
synchronizer: request tx from server if we only have partial local tx
Note that there is a slight distinction between
`not tx.is_complete()` and `isinstance(tx, PartialTransaction)`,
which is that technically you can have a PSBT that is already complete
but was not yet converted to a standard bitcoin tx.
2019-12-16 21:15:20 +01:00
SomberNight
7b49832a3f
payment requests: fix explicit "None" expiration
Traceback (most recent call last):
  File "...\electrum\electrum\gui\qt\main_window.py", line 994, in <lambda>
    self.create_invoice_button.clicked.connect(lambda: self.create_invoice(False))
  File "...\electrum\electrum\gui\qt\main_window.py", line 1123, in create_invoice
    key = self.create_bitcoin_request(amount, message, expiry)
  File "...\electrum\electrum\gui\qt\main_window.py", line 1132, in create_bitcoin_request
    addr = self.wallet.get_unused_address()
  File "...\electrum\electrum\wallet.py", line 1452, in wrapper
    addr = func(self, *args, **kwargs)
  File "...\electrum\electrum\wallet.py", line 1465, in get_unused_address
    addrs = self.get_unused_addresses()
  File "...\electrum\electrum\wallet.py", line 1459, in get_unused_addresses
    in_use_by_request = [k for k in self.receive_requests.keys() if self.get_request_status(k)[0] != PR_EXPIRED]
  File "...\electrum\electrum\wallet.py", line 1459, in <listcomp>
    in_use_by_request = [k for k in self.receive_requests.keys() if self.get_request_status(k)[0] != PR_EXPIRED]
  File "...\electrum\electrum\wallet.py", line 1535, in get_request_status
    if exp > 0 and time.time() > timestamp + exp:
TypeError: '>' not supported between instances of 'NoneType' and 'int'
2019-12-16 21:03:34 +01:00
SomberNight
01fc048484
CLI: properly auto-upgrade storage when needed even if storage-encrypted
previously commands would error if user had an encrypted storage that needed upgrading
2019-12-15 20:12:51 +01:00
ThomasV
2c6a1f55fb
Merge pull request #5825 from SomberNight/201912_local_tx_can_be_partial
wallet: allow saving partial tx as local (if it has a txid)
2019-12-15 16:40:46 +01:00
ThomasV
61fc00fb9e
Merge pull request #5840 from SomberNight/201912_py38_win_dlls_source
windows: when running from source, with py3.8+, load DLLs from '.dlls'
2019-12-14 10:51:13 +01:00
SomberNight
93cee1ba4d
windows: when running from source, with py3.8+, load DLLs from '.dlls'
Python 3.8 changed where DLLs are searched for.
see https://docs.python.org/3/whatsnew/3.8.html#bpo-36085-whatsnew
This potentially affect our binaries when we start shipping python 3.8+, however that is not being addressed here. This commit simply addresses the usecase of running from source, on Windows, using python 3.8.

On older Python, a user could build/obtain DLLs and place them anywhere on the system %PATH%, however this no longer works with py3.8, as %PATH% is no longer checked.
With py3.8, instead, we now check if there is a folder named '.dlls' in the top-level project directory, and if so, register that as an additional search path.
A user who wants to run Electrum from source on Windows using python 3.8 or later, with their custom DLLs, should manually create the '.dlls' folder and put their DLLs there. If they also want to switch between e.g. python 3.7 and 3.8, they should also include '.dlls' in the system %PATH%.

When using Electrum, interesting DLLs include at least libsecp256k1.dll, libusb-1.0.dll, libzbar-0.dll.
2019-12-14 06:44:17 +01:00
ThomasV
34d652b0f6 follow-up previous commit 2019-12-13 11:09:18 +01:00
ThomasV
11f1541cdd lnworker: save timestamp regardless of channel state 2019-12-13 11:08:25 +01:00
SomberNight
3a2fe80675
qt: also use BlockWaitingDialog in PreviewTxDialog
as when 'advanced_preview' is set, ConfirmTxDialog is skipped

follow-up 1088cf4444
2019-12-12 21:39:46 +01:00
SomberNight
dbd1c8cf71
qt TxDialog: visibility of widgets should be set after parenting
widget.show() and widget.setVisible(True) results in a blink of an ephemeral window containing the widget;
that is, unless the widget has a parent explicitly set or it can be determined via which layout the widget is placed in.
2019-12-12 21:31:30 +01:00
SomberNight
c9ede07462 wizard: (qt) add dedicated button to create new wallet 2019-12-12 17:54:46 +01:00
ThomasV
7324817ff3
Merge pull request #5833 from SomberNight/201912_qt_blocking_waiting_dialog
Qt: introduce BlockingWaitingDialog
2019-12-12 17:53:03 +01:00
SomberNight
308517d473
python 3.8: adapt to breaking changes re asyncio.CancelledError
(and TimeoutError)

closes #5798
2019-12-11 23:07:47 +01:00
ThomasV
fa9b997c70
Merge pull request #5834 from Electronic-Gulden-Foundation/fix/aiohttp
Aiohttp must be lower than 4.0.0
2019-12-11 09:14:36 +01:00
SomberNight
255bf7caf4
build: update some packages in dockerfiles
Ubuntu no longer serves old version
2019-12-10 23:54:45 +01:00
SomberNight
a5a7c205e3
trivial: add a few log lines for startup 2019-12-10 23:31:58 +01:00
SomberNight
d08ed6410a
python3.8: fix DeprecationWarning in qt/paytoedit
.../electrum/electrum/gui/qt/paytoedit.py:221: DeprecationWarning: an integer is required (got type float).  Implicit conversion to integers using __int__ is deprecated, and may be removed in a future version of Python.
  self.setMinimumHeight(h)
2019-12-10 23:01:01 +01:00
SomberNight
9d0ae2f95b
adapt to aiohttp 4.0
related: #5753
2019-12-10 22:55:11 +01:00
Dennis Ruhe
252f0960fc Aiohttp must be lower than 4.0.0 2019-12-10 22:03:17 +01:00
SomberNight
fcd9752f19
keystore: change derive_pubkey API to return bytes 2019-12-10 20:41:47 +01:00
SomberNight
ea62027599
wallet: faster decrypt_message for Imported_Wallet 2019-12-10 20:08:41 +01:00
SomberNight
869a728317
wallet: use abstract base classes 2019-12-10 19:34:44 +01:00
ThomasV
f08796fe68 Allow requests that never expire 2019-12-10 14:45:29 +01:00
SomberNight
1088cf4444
qt: introduce BlockingWaitingDialog
A variant of WaitingDialog that runs the task in the GUI thread,
blocking the GUI. It is probably a code smell to actually use this,
as operations should not block the GUI... still it provides a middle-ground
between blocking the GUI without giving user-feedback and having to refactor
existing code (to avoid blocking).
2019-12-10 03:34:41 +01:00
SomberNight
daef1a8359
lnworker: don't log InvoiceError
lnworker._pay does not need log_exceptions decorator,
as we properly await the coroutine
2019-12-10 03:19:56 +01:00
SomberNight
b99add59c3
lnworker: introduce PaymentAttemptLog NamedTuple 2019-12-10 03:17:57 +01:00
SomberNight
24ebc77d76
ln chan verifier: fix code rot 2019-12-10 01:14:38 +01:00
SomberNight
0ab88b821c
keystore: use abstract base classes, introduce MPKMixin 2019-12-10 00:31:01 +01:00
SomberNight
f2d42d79ba
qt: rm redundant line: ConfirmTxDialog.update_tx()
already called in ConfirmTxDialog.__init__
2019-12-09 19:14:15 +01:00
SomberNight
d641dfe964
follow-up prev: add comment 2019-12-09 17:43:08 +01:00
ThomasV
0828454ef1
Merge pull request #5830 from SomberNight/20191209_wallet_perf
wallet perf: significant speedup for make_unsigned_transaction and rel.
2019-12-09 17:30:10 +01:00
ThomasV
9d83dea0dc
Merge pull request #5822 from SomberNight/201912_qt_receive_tab_address
qt receive tab: show plain bitcoin address
2019-12-09 10:57:14 +01:00
SomberNight
59c5efb090
keystore: cache BIP32Node.from_xkey(self.xpub)
This results in significant performance improvements for
keystore.can_sign() and wallet._add_txinout_derivation_info()
2019-12-09 03:43:47 +01:00
SomberNight
f73b6b5d23
keystore: cache derive_pubkey 2019-12-09 03:35:20 +01:00
SomberNight
5f6f7da2a1
bitcoin.py: base58 address: make sure all public methods test checksum
Note: the checksum was already being checked in practically all cases, by the caller.
Moved the check here, to the lower level (but still public) method for sanity.
2019-12-08 06:56:19 +01:00
SomberNight
8cf3587aeb
base_encode/base_decode: change to saner API 2019-12-08 06:19:51 +01:00
SomberNight
01f94fcf58
base_encode/base_decode: performance improvement
For example, for 50 KB of random data, and base 43,
previously,
- base_encode took ~38 seconds
- base_decode took ~270 seconds
now,
- base_encode takes ~7.5 seconds
- base_decode takes ~6 seconds
2019-12-08 06:07:01 +01:00
SomberNight
5c9bd2d2b4
ln channel open: save funding tx as local tx into wallet 2019-12-08 04:33:36 +01:00
SomberNight
30dcab0877
wallet: allow saving partial txns as local (but require txid) 2019-12-08 04:32:44 +01:00
SomberNight
369d972aed
qt: handle exceptions when pressing "Max" button
fixes #5783
2019-12-08 03:21:02 +01:00
SomberNight
d2a8028cde
qt receive tab: show plain bitcoin address 2019-12-07 06:06:36 +01:00
SomberNight
20bbe85bce
receive requests: encode lightning invoices as uppercase -> smaller QRs
By encoding bolt11 invoices as uppercase text in QR codes,
we can use the alphanumeric mode, which results in non-negligibly smaller QR codes.
2019-12-07 05:58:58 +01:00