Commit Graph

11833 Commits

Author SHA1 Message Date
ghost43 c19f9ee755 Merge pull request #5865 from shyrwall/master
Remove phishing server icarus.tetradrachm.net
2019-12-26 17:14:36 +00:00
Sebastian Hyrwall 967f4d7236 Remove phishing server 2019-12-26 23:47:32 +07:00
SomberNight b3c0231b2b appimage build: add notes re investigating reproducibility failure 2019-12-24 03:30:26 +01:00
SomberNight 5f4162deaa requirements: bump min python-keepkey to 6.3.1
as 6.3.0 had basic functionality (restore from seed) broken
see https://github.com/keepkey/python-keepkey/pull/85
2019-12-21 07:33:36 +01:00
SomberNight ad5c6284c4 commands/jsonrpc: fix specifying "wallet" to commands that need it 2019-12-21 07:00:30 +01:00
SomberNight 2ca535225d util.standardize_path: properly handle "~" (user's home directory)
notably this is needed when the shell itself does not get a chance to expand "~",
e.g. when a path is passed via JSON-RPC

>>> os.path.normcase(os.path.realpath(os.path.abspath("~/.electrum/testnet/wallets/delete_me2")))
'/home/user/wspace/electrum/~/.electrum/testnet/wallets/delete_me2'
>>> os.path.normcase(os.path.realpath(os.path.abspath(os.path.expanduser("~/.electrum/testnet/wallets/delete_me2"))))
'/home/user/.electrum/testnet/wallets/delete_me2'
2019-12-21 06:53:10 +01:00
ghost43 3716594331 Merge pull request #5460 from SomberNight/keepkey_enum_20190626
keepkey: use libusb to enumerate devices instead of hid
2019-12-20 00:51:19 +00:00
SomberNight c8d7075758 requirements: bump min python-keepkey to 6.3.0 2019-12-20 01:49:56 +01:00
SomberNight a8e81c0bd2 keepkey: use libusb to enumerate devices instead of hid 2019-12-20 01:30:10 +01:00
ghost43 ace61d2d20 Merge pull request #5692 from matejcik/trezor-shamir
Trezor: support for Shamir backup and recovery
2019-12-19 15:54:41 +00:00
SomberNight 18209fc782 trezor: when restoring, hide Shamir options by default
They become visible once user clicks "Show expert settings"
2019-12-19 16:50:35 +01:00
SomberNight 9b28f6df7b wallet: encrypt storage by default
notably, now also in kivy
2019-12-19 14:22:47 +01:00
SomberNight 9834d6cd94 windows binaries: skip building libusb if already done 2019-12-18 18:23:00 +01:00
SomberNight eca769c4ca windows binaries: build libusb ourselves
Latest libusb does not have official binaries, and it contains some bugfixes we want.

related: #5460

based on EchterAgo's work in https://github.com/Electron-Cash/Electron-Cash/commit/ee4bdaf9c0ff304c736f0ae991d3693980311d5f
2019-12-18 17:32:02 +01:00
matejcik 006c6c1a58 trezor: use BIP39 backup by default even if Shamir is available 2019-12-18 12:36:13 +01:00
matejcik da41e4c289 trezor: bump library requirement 2019-12-18 12:36:13 +01:00
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 https://github.com/Electron-Cash/Electron-Cash/commit/43aaf9572f822b977ecffe68f9cce428e5d27c18
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:
https://github.com/Electron-Cash/Electron-Cash/commit/ca9b432ff016f734318b13c719370c22e1c28b98
https://github.com/Electron-Cash/Electron-Cash/commit/7bb27eff849e135af486e7611483a54005c797c8
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