- separation between Wallet and key management (Keystore)
- simplification of wallet classes
- remove support for multiple accounts in the same wallet
- add support for OP_RETURN to Trezor plugin
- split multi-accounts wallets for backward compatibility
Only require the user to input the passphrase once, unless creating
a wallet.
Should they mis-enter the passphrase, they will be warned Electrum
couldn't pair the device, and when they actually need to use it
they will be prompted again.
Fixes#1672
Move session timeout from wallet to config
Prevent timeouts whenever a device operation is in progress
Move timeout job from each plugin to device manager
Tell the user and ask if they want to try again. If they
say no, raise a silent exception. Apply this more friendly
behaviour to the install wizard too (see issue #1668).
Only warn about watching only once given a chance to pair.
Failure to pair makes watching-only and warns.
In error message to user, distinguish between failure to connect
and failure to pair.
Used to get:
jsonrpclib.jsonrpc.ProtocolError: (-32603, u'Server error: File "src/electrum/lib/plugins.py", line 144, in wallet_plugin_loader | KeyError: \'trustedcoin\'')
Now get:
jsonrpclib.jsonrpc.ProtocolError: (-32603, u'Server error: File "src/electrum/lib/plugins.py", line 81, in load_plugin | RuntimeError: cmdline implementation for trustedcoin plugin not found')
We were relying on internals of libtrezor that they just
changed. However their changes don't work on Mac either.
Work around both issues. I think this...
Fixes#1637
Ask user which device to use when there are many. If there
is only one skip the question. We used to just pick the
first one we found; user had no way to switch.
We have to handle querying from the non-GUI thread.
Use a shared device manager across USB devices (not yet taken
advantage of by ledger). This reduces USB scans and abstracts
device management cleanly.
We no longer scan at regular intervals in a background thread.
Benefits of this rewrite include:
- support of disconnecting / reconnecting a device without having
to close the wallet, even in a different USB socket
- support of multiple keepkey / trezor devices, both during wallet
creation and general use
- wallet is watching-only dynamically according to whether the
associated device is currently plugged in or not