Commit graph

3227 commits

Author SHA1 Message Date
SomberNight
18c98483ac
wizard: (trivial) add some type hints 2020-04-01 21:09:10 +02:00
SomberNight
e6d43b60fa
qt hww show_settings_dialog: don't scan devices in GUI thread
Just makes sense in general.
Also, previously, the GUI would freeze if right after startup the user
clicked the hww status bar icon (especially with multiple hww connected).
2020-04-01 21:09:06 +02:00
SomberNight
276631fab7
digitalbitbox: (trivial) user handler instead of handler.win 2020-04-01 21:09:03 +02:00
SomberNight
7f1c7955dc
DeviceMgr: clean-up locks a bit 2020-04-01 21:09:00 +02:00
SomberNight
c0b170acb7
hww wizard: better handle UserFacingException in one case
E | gui.qt.installwizard.InstallWizard |
Traceback (most recent call last):
  File "...\electrum\electrum\base_wizard.py", line 340, in on_device
    self.plugin.setup_device(device_info, self, purpose)
  File "...\electrum\electrum\plugins\digitalbitbox\digitalbitbox.py", line 719, in setup_device
    client.get_xpub("m/44'/0'", 'standard')
  File "...\electrum\electrum\plugins\digitalbitbox\digitalbitbox.py", line 120, in get_xpub
    reply = self._get_xpub(bip32_path)
  File "...\electrum\electrum\plugins\digitalbitbox\digitalbitbox.py", line 114, in _get_xpub
    if self.check_device_dialog():
  File "...\electrum\electrum\plugins\digitalbitbox\digitalbitbox.py", line 223, in check_device_dialog
    self.recover_or_erase_dialog() # Already seeded
  File "...\electrum\electrum\plugins\digitalbitbox\digitalbitbox.py", line 244, in recover_or_erase_dialog
    if not self.dbb_load_backup():
  File "...\electrum\electrum\plugins\digitalbitbox\digitalbitbox.py", line 340, in dbb_load_backup
    raise UserFacingException(backups['error']['message'])
electrum.util.UserFacingException: Please insert SD card.
2020-04-01 21:08:56 +02:00
SomberNight
e68b6447cc
hww: catch exceptions when user clicks on hww qt status bar icon
E | gui.qt.exception_window.Exception_Hook | exception caught by crash reporter
Traceback (most recent call last):
  File "...\electrum\electrum\plugins\ledger\ledger.py", line 167, in perform_hw1_preflight
    firmwareInfo = self.dongleObject.getFirmwareVersion()
  File "...\Python38\site-packages\btchip\btchip.py", line 561, in getFirmwareVersion
    response = self.dongle.exchange(bytearray(apdu))
  File "...\Python38\site-packages\btchip\btchipComm.py", line 127, in exchange
    raise BTChipException("Invalid status %04x" % sw, sw)
btchip.btchipException.BTChipException: Exception : Invalid status 6faa

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "...\electrum\electrum\gui\qt\main_window.py", line 120, in onPress
    self.func()
  File "...\electrum\electrum\plugins\hw_wallet\qt.py", line 260, in show_settings_dialog
    device_id = self.choose_device(window, keystore)
  File "...\electrum\electrum\plugins\hw_wallet\qt.py", line 253, in choose_device
    info = self.device_manager().select_device(self, keystore.handler, keystore)
  File "...\electrum\electrum\plugin.py", line 554, in select_device
    infos = self.unpaired_device_infos(handler, plugin, devices)
  File "...\electrum\electrum\plugin.py", line 545, in unpaired_device_infos
    soft_device_id=client.get_soft_device_id()))
  File "...\electrum\electrum\plugins\ledger\ledger.py", line 88, in get_soft_device_id
    self._soft_device_id = self.request_root_fingerprint_from_device()
  File "...\electrum\electrum\plugins\hw_wallet\plugin.py", line 197, in request_root_fingerprint_from_device
    child_of_root_xpub = self.get_xpub("m/0'", xtype='standard')
  File "...\electrum\electrum\plugins\ledger\ledger.py", line 55, in catch_exception
    return func(self, *args, **kwargs)
  File "...\electrum\electrum\plugins\ledger\ledger.py", line 103, in get_xpub
    self.checkDevice()
  File "...\electrum\electrum\plugins\ledger\ledger.py", line 210, in checkDevice
    self.perform_hw1_preflight()
  File "...\electrum\electrum\plugins\ledger\ledger.py", line 198, in perform_hw1_preflight
    raise UserFacingException("Dongle is temporarily locked - please unplug it and replug it again")
electrum.util.UserFacingException: Dongle is temporarily locked - please unplug it and replug it again
2020-04-01 21:08:50 +02:00
SomberNight
2d3c2eeea9
keystore: add workaround for StoredDict issue #6066
note: not a proper fix... but works for now
2020-04-01 13:33:38 +02:00
SomberNight
e53ce5dee0
(trivial) follow-up 570f7b7790 2020-03-31 18:57:03 +02:00
SomberNight
18d245ad5c
hw wallets: during wallet creation, make sure to save correct label
When initialising a Trezor as part of the wallet creation,
device_info.label is still the old (None) label in on_hw_derivation.
This is because device_info was created during the initial scan.

related: #6063
2020-03-31 15:56:54 +02:00
SomberNight
570f7b7790
qt wizard decrypt wallet with hww: just pass through cancellation
E | gui.qt.installwizard.InstallWizard |
Traceback (most recent call last):
  File "...\electrum\electrum\base_wizard.py", line 541, in create_wallet
    password = k.get_password_for_storage_encryption()
  File "...\electrum\electrum\keystore.py", line 768, in get_password_for_storage_encryption
    client = self.plugin.get_client(self)
  File "...\electrum\electrum\plugins\trezor\trezor.py", line 180, in get_client
    client = devmgr.client_for_keystore(self, handler, keystore, force_pair)
  File "...\electrum\electrum\plugin.py", line 465, in client_for_keystore
    info = self.select_device(plugin, handler, keystore, devices)
  File "...\electrum\electrum\plugin.py", line 585, in select_device
    raise UserCancelled()
electrum.util.UserCancelled

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "...\electrum\electrum\gui\qt\installwizard.py", line 300, in select_storage
    self.run('choose_hw_device', HWD_SETUP_DECRYPT_WALLET, storage=temp_storage)
  File "...\electrum\electrum\base_wizard.py", line 109, in run
    f(*args, **kwargs)
  File "...\electrum\electrum\base_wizard.py", line 332, in choose_hw_device
    self.choice_dialog(title=title, message=msg, choices=choices,
  File "...\electrum\electrum\gui\qt\installwizard.py", line 99, in func_wrapper
    out = func(*args, **kwargs)
  File "...\electrum\electrum\gui\qt\installwizard.py", line 536, in choice_dialog
    self.exec_layout(vbox, title)
  File "...\electrum\electrum\gui\qt\installwizard.py", line 392, in exec_layout
    raise UserCancelled
electrum.util.UserCancelled
2020-03-31 15:28:57 +02:00
SomberNight
3ea2872b31
hw wallets: show e.g. "An unnamed trezor" if no label in select_device
related: #6063
2020-03-31 15:18:24 +02:00
SomberNight
7297e94970
hw wallets: handle cancellation for "query_choice" in wizard
E | gui.qt.exception_window.Exception_Hook | exception caught by crash reporter
Traceback (most recent call last):
  File "...\electrum\electrum\plugins\hw_wallet\qt.py", line 193, in win_query_choice
    self.choice = self.win.query_choice(msg, labels)
  File "...\electrum\electrum\gui\qt\installwizard.py", line 545, in query_choice
    self.exec_layout(vbox, '')
  File "...\electrum\electrum\gui\qt\installwizard.py", line 392, in exec_layout
    raise UserCancelled
electrum.util.UserCancelled
2020-03-31 15:11:10 +02:00
SomberNight
6760c3f252
hw wallets: introduce HardwareHandlerBase
previously, client.handler was sometimes
- an InstallWizard
- a QtHandlerBase where win was an ElectrumWindow
- a QtHandlerBase where win was an InstallWizard
- a CmdLineHandler

That's just too much dynamic untyped undocumented polymorphism...
Now it will never be an InstallWizard (replaced with QtHandlerBase where win is an InstallWizard),
and now in all cases client.handler is an instance of HardwareHandlerBase, yay.

related: #6063
2020-03-31 14:40:25 +02:00
matejcik
4cd50dd75a trezor: bump lib version, implement new passphrase-on-device UI 2020-03-31 12:26:48 +02:00
SomberNight
8e9b401c88
wizard: add a warning to multisig wallet creation to backup xpubs 2020-03-31 07:44:23 +02:00
SomberNight
8be94076b5
network: update tx broadcast error msgs whitelist
fixes #6052
2020-03-31 07:08:31 +02:00
SomberNight
900a7631cf
commands: add new cmd "getprivatekeyforpath" to export a WIF for a path
related: #6061
2020-03-31 05:50:18 +02:00
JeremyRand
72de433f5c
Commands: clarify description of getservers
The previous description made it sound like it returned the list of
currently connected servers; this clarifies that it's only a list of
candidate servers to connect to (no guarantee that they are all currently
connected).
2020-03-30 22:50:25 +00:00
SomberNight
79d57784c1
lnchannel: add more type hints 2020-03-30 03:49:50 +02:00
SomberNight
db84de5493
trivial: use "chunks()" for htlc_sigs in lnchannel 2020-03-30 02:46:25 +02:00
SomberNight
8ad6d5ddda
lnchannel: clean-up docstrings a bit
Removed lnd copyright as by now everything covered in this file
has been rewritten.
2020-03-30 02:46:21 +02:00
SomberNight
acb0d7ebac
lnchannel: better checks for "update_add_htlc"
I believe this now implements all the checks listed in BOLT-02 for
update_add_htlc, however, the BOLT is sometimes ambiguous,
and actually the checks listed there IMO are insufficient.
There are still some TODOs, in part because of the above.
2020-03-30 02:46:18 +02:00
SomberNight
90f3b667aa
small clean-up re max CLTV delta for LN 2020-03-30 02:46:14 +02:00
JeremyRand
001ee25604
UTXOList: Split stretch_column out of __init__
Makes it easier to subclass UTXOList without code duplication.
2020-03-29 05:53:31 +00:00
SomberNight
7498271927
follow-up prev: htlc direction madness
Sometimes direction was relative sometimes absolute... ?!
No. Make it always relative (to subject).
2020-03-28 16:29:39 +01:00
SomberNight
5b7ce98ab2
lnchannel: fix included_htlcs 2020-03-27 19:06:30 +01:00
ThomasV
bb35e330fb do not show freeze/unfreeze channel options if channel is closed 2020-03-27 11:19:27 +01:00
SomberNight
7ac1cace7a
wallet_db.clear_history: now clears prevouts_by_scripthash too
(which is the logical thing to do, as it too will be rebuilt as part of
the history, and the parts of it that might not be present after the
rebuild is exactly what a call to "clear_history" is supposed to get rid of)
2020-03-27 02:28:43 +01:00
SomberNight
3ed6afce64
lnchannel: implement freezing channels (for receiving)
A bit weird, I know... :)
It allows for rebalancing our own channels! :P
2020-03-26 09:05:15 +01:00
SomberNight
79d202485e
lnworker: rename can_send to num_sats_can_send 2020-03-26 09:05:12 +01:00
SomberNight
5c8455d00b
lnchannel: when adding HTLCs, run checks for both directions 2020-03-26 09:05:08 +01:00
SomberNight
01207316aa
storage upgrade: move "htlc_minimum_msat" to base channel config 2020-03-26 09:05:04 +01:00
SomberNight
53c6fc8cf1
lnchannel: test for max htlc value (needs to be below protocol maximum) 2020-03-26 09:05:00 +01:00
SomberNight
777e350fae
lnchannel: partly fix available_to_spend
we were looking at inconsistent ctns
and we were looking at the wrong subject's ctx

all the FIXMEs and TODOs here will still warrant some attention.

(note that test_DesyncHTLCs was passing incorrectly:
the "assertRaises" was catching a different exception)
2020-03-26 09:04:55 +01:00
SomberNight
deb50e7ec3
lnchannel: implement "freezing" channels (for sending)
and expose it in Qt GUI
2020-03-26 03:32:44 +01:00
SomberNight
9c8d2be638
qt channels list: sort by short chan id by default 2020-03-26 02:54:50 +01:00
SomberNight
95979ba58d
qt channels list: make selection more in line with other tabs
(allow selecting none, and allow multi-select)
2020-03-26 02:54:21 +01:00
SomberNight
7488cc91cd
qt channels: expose long channel id (in ctx menu and details dlg)
Also add separators to context menu to more visible separate
close/delete actions from rest.
2020-03-26 01:20:41 +01:00
ghost43
1448bfe937
Merge pull request #6039 from interrupt00/document-how-to-disable-proxy
Document how to disable proxy
2020-03-17 22:27:13 +00:00
interrupt00
df700ca96a Document how to disable proxy 2020-03-17 23:23:17 +01:00
SomberNight
cf5872d2c1
follow-up prev 2020-03-17 21:19:26 +01:00
SomberNight
2cc76fbbbd
lnworker: fix type error re pending_payments, and impl malformed htlcs
In old code, in lnpeer.htlc_switch(), "error" in lnworker.pending_payments
had incorrect type.

TODO: we need tests for payment failures...
2020-03-17 20:32:38 +01:00
SomberNight
9a70b79eea
follow-up prev: try to handle json db int key madness :/ 2020-03-17 20:32:27 +01:00
SomberNight
b524460fdf
lnpeer: implement basic handling of "update_fail_malformed_htlc" 2020-03-17 20:31:50 +01:00
SomberNight
ea0981ebeb
lnutil.UpdateAddHtlc: use attrs instead of old-style namedtuple 2020-03-17 20:31:11 +01:00
ThomasV
444610452e wallet_db: encapsulate type conversions with attr.s converter 2020-03-17 11:04:49 +01:00
ThomasV
df15042cee Quantitative easing of lightning fees 2020-03-16 14:47:40 +01:00
ThomasV
d5469b7eb5 fix #6037 2020-03-16 14:31:22 +01:00
SomberNight
5e59d1a0ed
lnonion: use random starting bytes in Sphinx packet as in updated BOLT4
see https://github.com/lightningnetwork/lightning-rfc/pull/697
2020-03-16 04:37:52 +01:00
SomberNight
510399d3d2
wallet: dust limit calculation should round up (not down)
related to prev commit

closes #6035
2020-03-15 17:42:02 +01:00