LBRY-Vault/electrum/plugins
TheCharlatan a4fe14bb82
BitBox02 Electrum plugin support
This commit adds support for the BitBox02 hardware wallet.
It supports both single and multisig for the electrum gui wallet.

To use the plugin a local installation of the BitBox02 python library is
required. It can be found on PiPy under the name 'bitbox02' and can be
installed from the bitbox02-firmware repository in the py/bitbox02
directory.

All communication to and from the BitBox02 is noise encrypted, the keys
required for this are stored in the wallet config file under the
bitbox02 key.

The BitBox02 registers a multisig configuration before allowing
transaction signing. This multisig configuration includes the threshold,
cosigner xpubs, keypath, a variable to indicate for mainnet and testnet,
and a name that the user can choose during configuration registration.
The user is asked to register the multisig configuration either during
address verification or during transaction signing.

The check the xpub of the BitBox02 for other hardware wallets, a button
is added in the wallet info dialog.

The wallet encryption key is fetched in a separate api call, requiring a
slightly tweaked override version of the wallet encryption password.
2020-04-12 15:34:37 +02:00
..
audio_modem integrate PSBT support natively. WIP 2019-11-04 22:24:36 +01:00
bitbox02 BitBox02 Electrum plugin support 2020-04-12 15:34:37 +02:00
coldcard BitBox02 Electrum plugin support 2020-04-12 15:34:37 +02:00
cosigner_pool cosigner_pool plugin: don't show button in tx dialog before finalizing 2020-02-23 20:38:57 +01:00
digitalbitbox wizard hww: scan devices fewer times and move away from GUI thread 2020-04-09 19:45:31 +02:00
email_requests change many str(e) to repr(e) as some exceptions were cryptic 2019-07-17 20:12:52 +02:00
hw_wallet wizard hww: scan devices fewer times and move away from GUI thread 2020-04-09 19:45:31 +02:00
keepkey wizard hww: scan devices fewer times and move away from GUI thread 2020-04-09 19:45:31 +02:00
labels Separate db from storage 2020-02-10 17:45:23 +01:00
ledger wizard hww: scan devices fewer times and move away from GUI thread 2020-04-09 19:45:31 +02:00
revealer logging: basics 2019-05-02 15:19:03 +02:00
safe_t wizard hww: scan devices fewer times and move away from GUI thread 2020-04-09 19:45:31 +02:00
trezor wizard hww: scan devices fewer times and move away from GUI thread 2020-04-09 19:45:31 +02:00
trustedcoin trustedcoin: fix wallet constructor 2020-02-20 20:59:18 +01:00
virtualkeyboard no more "import *" 2019-02-11 20:21:24 +01:00
__init__.py file reorganization with top-level module 2018-07-13 14:01:37 +02:00
README file reorganization with top-level module 2018-07-13 14:01:37 +02:00

Plugin rules:

 * The plugin system of Electrum is designed to allow the development
   of new features without increasing the core code of Electrum.

 * Electrum is written in pure python. if you want to add a feature
   that requires non-python libraries, then it must be submitted as a
   plugin. If the feature you want to add requires communication with
   a remote server (not an Electrum server), then it should be a
   plugin as well. If the feature you want to add introduces new
   dependencies in the code, then it should probably be a plugin.

 * We expect plugin developers to maintain their plugin code. However,
   once a plugin is merged in Electrum, we will have to maintain it
   too, because changes in the Electrum code often require updates in
   the plugin code. Therefore, plugins have to be easy to maintain. If
   we believe that a plugin will create too much maintenance work in
   the future, it will be rejected.

 * Plugins should be compatible with Electrum's conventions. If your
   plugin does not fit with Electrum's architecture, or if we believe
   that it will create too much maintenance work, it will not be
   accepted. In particular, do not duplicate existing Electrum code in
   your plugin.

 * We may decide to remove a plugin after it has been merged in
   Electrum. For this reason, a plugin must be easily removable,
   without putting at risk the user's bitcoins. If we feel that a
   plugin cannot be removed without threatening users who rely on it,
   we will not merge it.