Commit Graph

2921 Commits

Author SHA1 Message Date
ThomasV 80b1b2716c kivy: open last wallet 2016-03-08 11:10:04 +01:00
ThomasV af780e7519 Default auto_connect to True. In Qt, the question is asked by the wizard 2016-03-08 10:00:47 +01:00
ThomasV 4c7bbb4e86 android: move wallet data to internal storage. 2016-03-08 08:10:38 +01:00
ThomasV 4b4b6efb35 bump version number 2016-03-07 06:42:02 +01:00
ThomasV a0b861cd8f fix bug in interface.get_responses 2016-03-05 12:37:11 +01:00
ThomasV 94664566e7 kivy: fix watching-only issue 2016-03-05 04:34:13 +01:00
ThomasV d58ec9a570 kivy: support old-type seed phrases in wizard 2016-03-01 20:23:30 +01:00
ThomasV 40281a3193 restore 'help' command for the python console 2016-02-29 09:59:45 +01:00
ThomasV aafcb352bc release notes 2.5.1 (bugfixes) 2016-02-28 11:33:44 +01:00
ThomasV 76bf8085fd fix #1688 2016-02-28 05:18:50 +01:00
ThomasV 9cd4acafcc update broadcast command, with timeout 2016-02-25 10:55:37 +01:00
ThomasV 54df0b2845 follow up previous commit 2016-02-25 08:59:02 +01:00
ThomasV 96f144eb03 make sure the broadcast tx thread always times out 2016-02-25 08:55:06 +01:00
ThomasV f1d170cbc9 Merge branch 'master' of git://github.com/spesmilo/electrum 2016-02-24 16:58:09 +01:00
ThomasV 73822e8ec2 fix: pass cwd with config_options 2016-02-24 16:57:58 +01:00
Neil Booth cc4ec4c34e Add BTC.com block explorer. 2016-02-25 00:31:24 +09:00
ThomasV 305843999e Relicensing 2016-02-24 10:20:30 +01:00
ThomasV b53a54cded remove bmp.py; use Qt instead 2016-02-23 15:27:00 +01:00
ThomasV ee18caa022 update pem.py to use ASN1_Node class 2016-02-23 12:52:55 +01:00
ThomasV 10701d72c9 New class for decoding asn1 structures 2016-02-23 12:33:03 +01:00
ThomasV f97fdf3ba8 labels plugin: use get_fingerprint 2016-02-22 15:44:31 +01:00
ThomasV d8dfa62af8 more intuitive debug message 2016-02-21 18:15:25 +01:00
ThomasV bd5effb1b8 follow up 6f72fa4 2016-02-21 17:46:56 +01:00
ThomasV 6f72fa4e94 try to fix issue #1682 2016-02-21 17:42:33 +01:00
ThomasV c10a1672da update index.html for requests that do not expire 2016-02-19 14:08:28 +01:00
ThomasV c2db006c86 addrequest: do not set expiration date by default 2016-02-19 13:58:05 +01:00
ThomasV 41f6fec2ac kivy: set_paid for paid invoices 2016-02-19 13:53:01 +01:00
ThomasV fd0e5739e2 kivy: disable amount and description buttons if payment request is signed 2016-02-18 15:40:13 +01:00
ThomasV fbfb75eaa1 kivy: use scrollview for invoice dialog 2016-02-17 17:42:54 +01:00
ThomasV 74c9a05757 kivy: add OutputList class 2016-02-17 11:40:05 +01:00
ThomasV 774bdcde73 fix test_parse_URI 2016-02-16 10:28:40 +01:00
ThomasV 04c7d2b455 add 'donate to server' menu item 2016-02-15 16:17:07 +01:00
ThomasV 4dd479cf59 server_is_lagging: return True if no height 2016-02-15 15:58:08 +01:00
ThomasV d56ec05b9b kivy: show payment request details 2016-02-15 13:49:33 +01:00
ThomasV a7d3175799 replace semantically relevant instances of 'assert' with exceptions 2016-02-15 09:33:38 +01:00
ThomasV 83c68142e0 kivy wizard: add space button 2016-02-15 09:14:27 +01:00
ThomasV a1ef7c4bb6 get_sorted_request: sort by address index, not by timestamp 2016-02-15 08:23:34 +01:00
ThomasV b7c4492d3b get_request_status: return PR_UNKNOWN if request is unknown 2016-02-15 04:59:20 +01:00
ThomasV dcc59d6f70 rm unused PR state 2016-02-15 04:58:35 +01:00
ThomasV 656069070a kivy wizard: use own soft keyboard 2016-02-13 15:10:17 +01:00
ThomasV 950f3ae633 parse_uri: don't use assert 2016-02-13 15:09:42 +01:00
ThomasV ff7bdc1f38 paymentrequest.py: return No Signature 2016-02-13 11:00:00 +01:00
ThomasV 2955fd1a8c allow unsigned payment requests 2016-02-12 12:01:13 +01:00
Neil Booth 535956149a trezor: single passphrase entry
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
2016-02-11 19:54:55 +09:00
Neil Booth 34e8c0e1ed plugins: give traceback when cannot load 2016-02-11 19:16:49 +09:00
Neil Booth 5f28834bb2 Trezor: session timeout improvements
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
2016-02-10 21:59:41 +09:00
ThomasV 078cabd745 kivy: store contacts as invoices 2016-02-09 12:48:25 +01:00
Neil Booth b54ba556bc Wallet: encapsulate wallet_types
Previously plugins would append lines to it and wizard.py would
hack into it too.
2016-02-08 22:32:49 +09:00
Neil Booth 9490debf0f hw_wallet: don't make watching only if cannot pair
Instead issue a warning.  Being watching-only disables
various functionality that should instead just ask again
for the PIN to be input.
2016-02-07 17:38:34 +09:00
ThomasV 6ccb1dd207 rm unneeded files 2016-02-06 16:35:21 +01:00
Neil Booth 16397b1ed7 trezor: more user friendly when cannot connect
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).
2016-02-06 19:51:39 +09:00
Neil Booth 317e6cea32 Multisig: revert part of "reformatting"
Broken by fe9ec6de06
2016-02-06 18:02:21 +09:00
Neil Booth 828320c1af trezor: provide a default interface number. 2016-02-06 14:37:38 +09:00
ThomasV fab001833f rm print debug statement 2016-02-03 11:02:17 +01:00
ThomasV 8b68a742d1 follow up to 2a507b91c1 2016-02-03 11:01:36 +01:00
ThomasV 2a507b91c1 fix #1666 2016-02-03 10:29:31 +01:00
ThomasV 3ee61c4c6e define wallet.dummy_address method 2016-02-02 19:56:34 +01:00
ThomasV eb36884c66 move estimate_fee back to wallet 2016-02-02 12:26:28 +01:00
ThomasV 0b54ed0243 follow up 0d52911561 2016-02-02 07:18:18 +01:00
ThomasV ddc1869551 disambiguate types returned by get_fd_or_server 2016-02-01 13:10:01 +01:00
ThomasV 690c862923 move static methods away from daemon class; restore initial logic 2016-02-01 10:20:22 +01:00
ThomasV 3b00f62d46 remove another unnecessary static method 2016-02-01 09:25:57 +01:00
ThomasV 1c83c3e060 do not declare pointless static methods 2016-02-01 09:12:53 +01:00
ThomasV 56c7d4139e fix: Daemon.get_server 2016-02-01 09:02:57 +01:00
Neil Booth e61fffab55 Trezor/KeepKey: force watching only improvements
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.
2016-01-31 19:36:21 +09:00
Neil Booth abaf1bc6dc daemon: remove two unneeded member vars 2016-01-31 18:03:50 +09:00
Neil Booth a90c935758 Remove unreachable code 2016-01-31 14:53:25 +09:00
Neil Booth 788ab520ea Remove dead code from prior 2016-01-31 14:48:57 +09:00
Neil Booth e6020975a5 daemon: prevent races by opening with O_EXCL
Rework the way the daemon and server are created.  If we might
want to create a daemon, try to grab the lockfile with O_EXCL.
If we got it, create a server and daemon, otherwise try and
connect to the server.  If connecting to the server fails (including
after sleeping a little in case the server was recently created),
remove the lockfile and start over.

Other fix: shut down network gracefully on daemon exit.

Fixes #1638
2016-01-31 14:46:03 +09:00
Neil Booth f91f03b3d4 daemon: fix long-standing bug in status request
Gracefully handle a status request when self.network is None
2016-01-31 11:50:44 +09:00
Neil Booth ec24087b5a Move some logic from electrum to daemon
Ultimate goal is to try and stop the daemon race at startup.
Need to isolate logic of checking for server and creating one.
2016-01-31 11:43:11 +09:00
Neil Booth f6f7113978 daemon: create network inside constructor 2016-01-31 10:58:27 +09:00
ThomasV ed401761f1 sorry, confused
This reverts commit 5e6a55edd5.
2016-01-30 11:24:53 +01:00
ThomasV 5e6a55edd5 Revert "Revert "Daemon network cleanup""
This reverts commit 2c7b10a776.
2016-01-30 11:13:11 +01:00
ThomasV 2c7b10a776 Revert "Daemon network cleanup"
This reverts commit 0a1b3eac9c.
2016-01-29 17:37:56 +01:00
Neil Booth 0a1b3eac9c Daemon network cleanup
All Daemon creation was preceded by Network creation, based on
config, and passing it to Daemon.
As config is passed to Daemon, it might as well create its own
network and the code is in one place.
2016-01-29 22:14:50 +09:00
Neil Booth 412e2a8d2c Create is_pairable() function and use it.
Fixes #1653.
2016-01-29 19:26:05 +09:00
ThomasV a04b510395 fix: don't chmod config file on android 2016-01-28 14:43:12 +01:00
Neil Booth bf942b5259 Trezor: another place needs client handler set 2016-01-27 21:27:51 +09:00
ThomasV 963dcf0c6b rm test_ripemd 2016-01-26 15:48:34 +01:00
ThomasV 56c4a8746f remove python implementation of ripemd160 2016-01-26 15:18:28 +01:00
ThomasV fe9ec6de06 reformatting 2016-01-26 13:51:47 +01:00
ThomasV 9b09c55356 dynamic fees: use hardcoded value as upper bound 2016-01-25 16:46:50 +01:00
Neil Booth 268dcbcac5 Trezor: multi-device window parenting fix 2016-01-24 23:18:41 +09:00
Neil Booth 93e0c72ce2 Plugins: start thread at end of constructor
Don't add jobs twice
2016-01-24 19:59:58 +09:00
Neil Booth 80e15577b5 Update comment 2016-01-24 19:45:13 +09:00
Neil Booth dee402b961 Plugin wallets: better error when unloadable
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')
2016-01-24 19:39:59 +09:00
Neil Booth f4fa53e915 Trezor: fixes for latest libtrezor
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
2016-01-24 14:33:21 +09:00
Neil Booth f8ed7b058d Improved multi-device handling
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.
2016-01-24 13:41:03 +09:00
Neil Booth a0ef42d572 Fix typo causing change address reuse 2016-01-24 11:16:05 +09:00
Neil Booth 97bc1b2788 Don't split small change 2016-01-23 22:10:25 +09:00
Neil Booth efa1efedca Hardware wallets: limit change outputs to 1 2016-01-23 22:05:08 +09:00
Neil Booth 9729f5b6d3 get_account_addresses: None->all user-visible a/cs
Otherwise we can end up sweeping to a non-visible address.
2016-01-23 18:07:02 +09:00
Neil Booth 83a531b3e4 Revert "Sweep keys: don't default to hidden address"
This reverts commit 605cc47a3d.
2016-01-23 17:32:43 +09:00
Neil Booth 605cc47a3d Sweep keys: don't default to hidden address
The issue is electrum uses None as the current account
to mean the default account.  This just gave rise to
all addresses being listed including in hidden accounts.

Really "None" as used in main_window.py and history_widget.py
means "a single unspecified account" not "all accounts".

So implement the idea of a default account, and don't let
a hidden account be the default one.
2016-01-23 17:17:10 +09:00
Neil Booth 618026f96c Installwizard: tweak hardware wallet handling 2016-01-22 22:16:58 +09:00
Neil Booth 0d14781463 Trezor: GUI fixes
Trezor window was doing GUI stuff outside the GUI thread
2016-01-21 23:33:15 +09:00
Neil Booth 24037be99c Clean up client caching and handling 2016-01-21 22:56:53 +09:00
ThomasV 858b9c5655 kivy: improve settings dialog 2016-01-21 12:12:55 +01:00
Neil Booth b878c010da Minikey: minimum length 20
On second thoughts there seems little reason to accept text
of length <= 20 for minikeys.
2016-01-21 08:11:50 +09:00
Neil Booth f7859c041e Support Casascius minikeys 2016-01-19 22:00:16 +09:00
Neil Booth eebabdf209 Merge branch 'client_thread' 2016-01-19 21:01:46 +09:00
ThomasV 4122c108fc plugins: enable & disable methods 2016-01-19 10:03:05 +01:00
Neil Booth 06c262d0dc TrezorClient: should be in a separate thread
First steps; get show_address working.
Client is not responsible for showing exceptions.
Suppress uninteresting exceptions.
2016-01-18 07:33:04 +09:00
ThomasV d200b236ae replace tx.input, tx.output by methods, so that deserialize calls are encapsulated 2016-01-17 15:04:11 +01:00
ThomasV 321ab10742 detect RBF transactions 2016-01-17 14:28:17 +01:00
ThomasV bd94bb31db Merge branch 'master' of git://github.com/spesmilo/electrum 2016-01-16 15:05:59 +01:00
ThomasV 4f0631d78d don't use assert is is_xprv (weird kivy bug) 2016-01-16 15:05:29 +01:00
Neil Booth 371f8d6dc3 network: gracefully handle EINTR in select syscall 2016-01-16 21:14:14 +09:00
Neil Booth f1bb3e846d Remove unused import 2016-01-16 19:03:06 +09:00
Neil Booth 15707b5590 Coin chooser: use deterministic randomness 2016-01-16 18:55:50 +09:00
ThomasV abdb7f8470 fix tests 2016-01-15 18:14:06 +01:00
ThomasV 3b10bd8307 follow up eb085c2e23 2016-01-15 09:10:04 +01:00
ThomasV eb085c2e23 Clarify preferences dialog:
* rename 'Oldest First' policy as Priority
 * show multiple change and fee multiplier on separate lines
2016-01-15 09:02:03 +01:00
Neil Booth 6bf91b8ae2 Update comments and tooltips. 2016-01-15 15:25:01 +09:00
Neil Booth 53fa973898 Move change_amounts() to base class.
Update tooltip of the preference.
2016-01-15 15:21:25 +09:00
Neil Booth 641f23229d Add multiple change output preference
Limit to 3 if enabled.
2016-01-15 14:54:26 +09:00
ThomasV 0d52911561 define constants for tx output types 2016-01-14 17:15:50 +01:00
ThomasV da8fce1914 if available, use relayfee from server instead of hard coded value 2016-01-14 16:06:22 +01:00
ThomasV 0464a1a6b0 remove gtk gui 2016-01-13 15:29:04 +01:00
ThomasV 388ed01d0f fix start_threads in wizard 2016-01-13 15:02:58 +01:00
Neil Booth 889c4cb7fb Multisig: create and restore work
Override run in derived class to catch UserCancelled again
Restore self.finished() hook.
Fix a typo.
2016-01-13 22:38:32 +09:00
ThomasV 2f6e2ebcd2 test if wizard is needed in daemon 2016-01-13 14:30:09 +01:00
Neil Booth 9390a97e9e Bring the network dialog into the new framework 2016-01-13 21:11:06 +09:00
Neil Booth 4c9b224d4c Put open_wallet back as class method. 2016-01-13 20:56:44 +09:00
ThomasV ef1f649d58 fix missing parameter 2016-01-13 11:31:23 +01:00
ThomasV 632905dfbe instantiate wizard only if needed 2016-01-13 11:27:17 +01:00
ThomasV 58fe42cea2 revert commit 4ba4611599 for relicencing 2016-01-12 09:35:45 +01:00
Neil Booth 1ec3ad59cc Ledger: get new wallet creation working again
This is enough to get new wallet creation working in the
absence of errors.
2016-01-11 14:23:35 +09:00
Neil Booth b120dd8849 Fix root derivation changes for BIP44_Wallets
Wallet keys use root_name
Also typo xub -> xpub
2016-01-11 11:39:56 +09:00
Neil Booth 384b8cd5f2 Install wizard: simplify create_or_restore
- Use ChoiceLayout to organize the layouts
- Do wallet filtering in wizard.py as it's GUI independent.
- Only pass the descriptions.
2016-01-10 23:00:59 +09:00
ThomasV c47e3499ce rename wallet methods 2016-01-10 12:56:15 +01:00
Neil Booth 450ab76f78 Fix install wizard
Used to pass the wallet as an argument to wallet methods.
2016-01-10 20:44:20 +09:00
Neil Booth cda92cd12c Move cosigner methods to BIP32_RD_Wallet 2016-01-10 20:37:22 +09:00
Neil Booth 637164d335 Introduce BIP32_RD_Wallet
Represents a BIP_32 wallet with a root derivation.
This permits us to see address derivation for NewWallet types
in the QT Gui.
2016-01-10 20:20:04 +09:00
Neil Booth 3d781a2d1b BIP32_HD_Wallet: Fix address derivation
Unfortunately there was root_name and root_derivation confusion
in the past for classes derived from BIP_32_HD_Wallet.
Address derivation used root_name and so would begin with 'x/'
whereas it should have begun with root_derivation, and so started
with 'm/'.

This fixes that old wart and removes some fudges from the trezor
code that used to work around it.
2016-01-10 20:06:13 +09:00
Neil Booth 4743f033b4 Fix the backwards-compat 'next_account2' code 2016-01-10 19:26:17 +09:00
Neil Booth 5baa5feb11 Put restore_wallet_class back in the derived classes 2016-01-10 18:41:20 +09:00
Neil Booth 9946feb352 Have BTChipWallet derive from BIP44_Wallet
Narrowing the gap with the Trezor code a bit
2016-01-10 17:38:39 +09:00
Neil Booth 81d641a13f Show BIP32 path for BIP32_HD_Wallet classes
from right-click Show Public Keys menu.

Fixes #1598
2016-01-10 14:53:00 +09:00
ThomasV 9ad4d63ad1 wizard: small tweaks, fix show_restore 2016-01-09 10:35:10 +01:00
Neil Booth 2f1d6b2379 Have Trezor dialog work even if wallet unpaired
Required cleanup of handler logic.  Now every client
is constructed with a handler, so there is never a
question of not having one.
2016-01-09 17:15:31 +09:00
Neil Booth 3e8598c245 Move trezor-specific install wizard code to plugin 2016-01-09 15:21:38 +09:00
Marco Pontello 065f6aa370 Added Blockchain URI (BIP 122) to block explorers list. 2016-01-08 20:23:17 +01:00
ThomasV 6acbe4226e don't open wizard window if no action was required 2016-01-08 13:44:59 +01:00
ThomasV d867fcc266 update create_main_account in tests 2016-01-07 01:02:44 +01:00
ThomasV 5915b9b7e1 restore action-driven wizard logic 2016-01-07 00:55:23 +01:00
ThomasV 90a2fc1379 Revert "Fix MultiSig wallet creation."
This reverts commit 21038843ea.
2016-01-07 00:46:34 +01:00
Neil Booth 6fb7dbd30d Implement passphrase protection toggling.
Along with chicken box.
2016-01-06 23:08:02 +09:00
Neil Booth 9b29c6c2e6 Trezor: all four available device initializations
Trezor and KeepKey devices can now be initialized by:
- device-generated seed
- existing seed
- BIP39 mnemonic
- master private key
2016-01-06 22:18:56 +09:00
ThomasV bdb4782b36 Revert "Install wizard multisig improvement"
This reverts commit 4e7c6e5d16.
That commit breaks the separation between make_seed and add_cosigners
2016-01-06 12:01:25 +01:00
Neil Booth 4e7c6e5d16 Install wizard multisig improvement
Preserves independence of wizard.py from wallet type;
the dependence is expressed entirely through actions

Fixes #1611
2016-01-06 19:31:12 +09:00
ThomasV 62868ab29a Register loaded wallets in daemon, to prevent a wallet from being opened twice.
Simplify the wizard logic.
2016-01-06 00:58:43 +01:00
Neil Booth 3d9f321cae Use a shared device manager
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.
2016-01-06 07:56:58 +09:00
Neil Booth 21038843ea Fix MultiSig wallet creation.
Fixes #1603
2016-01-05 21:22:43 +09:00
ThomasV bd309cff49 restore default labels 2016-01-04 15:40:57 +01:00
Neil Booth 87363c8301 Trezor: Implement resetting a device 2016-01-03 13:34:03 +09:00
Neil Booth f3e6bf0280 Passphrase-related fixes
Move normalize code to one place on the wallet
Passphrases don't have password strength meter
2016-01-03 09:03:07 +09:00
Neil Booth ff39333d32 Not all wallets have plugins 2016-01-02 20:47:04 +09:00
Neil Booth 21bf5a8a84 Better support for USB devices
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
2016-01-02 20:39:29 +09:00
Neil Booth dbf154d5f2 Finish moving the multisig regex to one place 2016-01-02 00:39:44 +09:00
Neil Booth 12f62212ba Move wallet_kinds to the base class
This logic isn't gui-dependent so belongs in wizard.py
2016-01-02 00:35:09 +09:00
Neil Booth 1d07960290 Remove constructor method of plugins
Clean up wallet class loading.
2016-01-02 00:16:15 +09:00
Neil Booth c7bd1e9428 Fix plugin dialog logic I broke recently 2016-01-01 19:22:34 +09:00
Neil Booth d63e754c67 Remove some unused hook infrastructure 2016-01-01 19:15:01 +09:00
Neil Booth 11d135b32d Better install wizard
Break out the workflow logic of the install wizard
into a base class.  This means reimplementing with
full support in a new GUI is now easy; you just provide
ways to request passwords, show messages etc.  The API
is fully documented in the base class.

There are a couple of minor outstanding issues, including that
the old messages shown when recovering a wallet are missing.
I will come back to that.  Ledger wallet might be broken.

Other improvements:

The install wizard code is now easy to follow and understand.
Hardware wallets can now be restored without any need for their
accompanying libraries.
Various bits of trustedcoin were broken and have been fixed.
Many plugin hooks can be removed.  I have only started on this.
2016-01-01 16:48:18 +09:00
Neil Booth e6dbe621c6 Make class methods static on Wallet 2015-12-31 16:05:05 +09:00
Neil Booth f263f8b0fd Convert legacy restored hardware wallets
Hardware wallets do not have a seed and hardware wallet
code should not have to worry about that case.
2015-12-31 09:51:27 +09:00
Eagle[TM] 2c797cd75b Update default server list 2015-12-30 14:47:40 +01:00
Neil Booth 1d51335827 Remove need for self.wallet for h/w wallets 2015-12-30 17:03:26 +09:00
Neil Booth 84450b9189 Revert mistaken commit 2015-12-29 23:16:53 +09:00
Neil Booth ed3c0a5469 Remove a name-clashing unnecessary local variable 2015-12-29 23:08:10 +09:00
Neil Booth 0f70d0b8a5 The constructor() concept doesn't exist
Did it ever?
2015-12-29 22:59:25 +09:00
Neil Booth 9d9fcbde64 Proper treatment of restored hardware wallets
They have a different wallet type; they require no plugin nor
plugin libraries to use.

Remove pointless public key code that was implemented in the
base classes already.

Partial fix for #1592.  Unfortunately the plugin and library
are still required to actually restore the wallet, but for
no reason that isn't fixable.
2015-12-28 20:24:15 +09:00
Neil Booth 11e1c62f28 Move hardware wallet to trezor/
On second thoughts it does go better there.
2015-12-27 18:23:46 +09:00
Neil Booth 669cf74789 Fix trezor restore
Broken by my recent changes
2015-12-27 15:38:52 +09:00
Neil Booth 3a1bb5b61a Combine keepkey and trezor wallet code
Essentially identical so silly to have two copies.
Also fix a double-dialog during sign bug that caused one to not
disappear (on MacOSX at least).
2015-12-26 16:25:10 +09:00
Neil Booth c298860e11 A fix and cleanups for hardware wallets 2015-12-26 12:02:19 +09:00
Neil Booth a58c19d7c0 Clean up and fix account adding
As per BIP44, 20 addresses are checked for transactions, not just the
first one.
Show the last account only if used or named.
If all accounts are used, prompt for password to create new one.

Fixes #1128
2015-12-25 23:34:04 +09:00
ThomasV fb8f9e55ef Cleanup main script, with semantic changes:
The --offline flag applies only to GUI.
Commands must use the daemon if a daemon is running, otherwise they are run offline.
Commands that only require the wallet do not have the require_network flag.
2015-12-23 15:59:32 +01:00
ThomasV 8bcd132423 Merge branch 'master' of git://github.com/spesmilo/electrum 2015-12-23 10:54:45 +01:00
ThomasV acbe67fd1f separation between RPC and non-RPC commands. 2015-12-23 10:54:31 +01:00
Neil Booth 9484b6371f More modality fixes and cleanups 2015-12-23 18:31:36 +09:00
Neil Booth 72fdf0cd21 Better error when opening a non-wallet file
Also window modality fixes for __init__.py
2015-12-23 13:54:43 +09:00
Neil Booth e1c0298fc2 Write the wallet less often
This should speed up synchronization / restoration of large wallets.
Wallets are written only when they switch to up_to_date state, or
when stop_threads() is called when closing the daemon, or when
a command line command finishes.
2015-12-20 15:47:46 +09:00
Neil Booth 0a3d74de8f Avoid index-out-of-range
Also add sanity assertion
2015-12-20 12:19:44 +09:00
Neil Booth 25a2ceda23 Fix copyright. 2015-12-20 12:06:23 +09:00
Neil Booth 5c3a6db445 Fix negative amounts assertion
Change amounts could be negative after deducting the cost of the extra
change output; floor them at zero.  Move the assertion to the main
code.  Simplify rounding logic.
2015-12-19 13:44:12 +09:00
ThomasV 3bed2e3106 don't wait for wallet sync in rpc commands; instead, show wallet status in status command 2015-12-17 17:54:49 +01:00
ThomasV 026f9312a7 fix more type errors caused by jsonrpc (parsing floats and transactions) 2015-12-16 20:17:20 +01:00
ThomasV b3ef2249b5 add more features to settings dialog 2015-12-16 11:53:37 +01:00
ThomasV 30ace570d3 kivy: choice_dialog and load_wallet_by_name 2015-12-16 08:57:47 +01:00
ThomasV 9d3162b1a1 simplify get_label 2015-12-15 12:52:30 +01:00
ThomasV 6ad3f47640 don't rewrite index.html everytime 2015-12-15 12:10:25 +01:00
ThomasV 679efe2a66 don't use floats because of rounding errors 2015-12-15 11:33:04 +01:00
Neil Booth cead9cd7c6 Ensure zeroes is always non-empty. 2015-12-14 07:45:01 +09:00
ThomasV f30149ad49 fix #1579 2015-12-13 06:33:06 +01:00
Kirill Fomichev d344ee0474 Small blockchain changes 2015-12-12 18:37:18 +03:00
Neil Booth 06eb3142c4 Oldest First 2015-12-12 19:01:14 +09:00
Neil Booth 52fc739052 Update default chooser name too. 2015-12-12 18:39:03 +09:00
Neil Booth 1c528af433 Description tweaks.
Mention loss of priority, and rename Classic to Oldest First.
2015-12-12 18:32:24 +09:00
Neil Booth 36aaad392d Fix docstring display. 2015-12-12 18:11:07 +09:00
Neil Booth 2763b0feea Improved change handling for Privacy chooser
Breaks up large change in such a way as to make it
unclear what the real send might be.

Fixes #1203
2015-12-12 11:53:17 +09:00
Neil Booth ea49e8dc96 Remove unneeded buckets for Privacy coin chooser
Commonize the code with the classic chooser and simplify.
2015-12-12 10:12:46 +09:00
ThomasV 0cef063ee2 add payment requests to kivy 2015-12-11 15:21:21 +01:00
ThomasV 2a1fbf01fe simplify blockchain.py 2015-12-11 12:37:40 +01:00
ThomasV 81f070c83b fix bug in get_target 2015-12-11 10:14:01 +01:00
ThomasV 4112e2c3fa Merge pull request #1558 from fanatid/spv
Improve get_target
2015-12-11 10:09:11 +01:00
ThomasV b7cef8dd58 follow up to 74a9e2296c 2015-12-10 09:52:00 +01:00
Neil Booth 75b3ecee49 Add coin chooser to try and minimize loss of privacy. 2015-12-09 22:20:23 +09:00
ThomasV de964f4033 plugins: on_close method 2015-12-09 09:41:24 +01:00
ThomasV 6770834d06 daemon: use available port 2015-12-08 10:55:34 +01:00
ThomasV becfe13df2 decrease daemon timeout 2015-12-07 18:42:12 +01:00
ThomasV 9ec4cbeed1 fix issue #1572 2015-12-06 13:32:50 +01:00
Neil Booth 50dcee69d0 Clean up imports in daemon.py 2015-12-05 21:38:20 +09:00
Neil Booth 03b4868bf8 Handle JSON RPC server timeouts differently
Prior method was causing issues on Python 2.7.10 on DragonFlyBSD at
least.
2015-12-05 21:30:37 +09:00
ThomasV 74a9e2296c separate Network and Plugins 2015-12-03 11:18:10 +01:00
ThomasV deefd74c37 labels sync for kivy 2015-12-01 17:29:24 +01:00
ThomasV afae9a097e add php example 2015-12-01 09:42:47 +01:00
ThomasV 95393656aa rename command: notify 2015-12-01 08:58:00 +01:00
Neil Booth 3eca419ef3 Fix typo.
One character makes all the difference.
2015-11-30 23:47:14 +09:00
ThomasV 9b5b9849d7 add watchaddress command 2015-11-30 10:54:15 +01:00
ThomasV 3c11c63289 fix daemon: don't oad wallet if there is a gui 2015-11-30 10:23:38 +01:00
ThomasV 4682d95a76 merge jsonrpc gui and daemon 2015-11-30 10:09:54 +01:00
Neil Booth e302dbc71c Move debug output to end of function. 2015-11-29 18:10:17 +09:00
Neil Booth 9a6dcf7b1e Use bucketing to choose coins
Bucketing is generalization of coin chooser logic that makes it easy
to implement other algorithms.

- Put core coin chooser functionality in base class.
- Specialize derived class to implement classic electrum algorithm of
  oldest coins first.  One bucket per output.

No intended change in behaviour.
Coin chooser now sorts the coins as it wants; remove redundant sorting
from get_spendable_coins().
2015-11-29 17:59:36 +09:00
Neil Booth 93bb09230c Track tx size directly; calculate fees from that
This has several advantages.  Fee calculation is now very fast,
as we don't need to keep reserializing the tx.  Another is that
we can reason about the fees after adding a change output without
having to add it, recalculate the tx fee, and remove it again.
2015-11-29 15:40:11 +09:00
Neil Booth a4dd5acc48 Prepare to calculate tx fee given a tx size 2015-11-29 12:41:54 +09:00
Neil Booth d97106f17d Don't keep dust change in any case 2015-11-28 22:27:01 +09:00
Neil Booth 530dc16ed2 Remove unused import 2015-11-28 22:14:24 +09:00
Neil Booth 8785b65a1f Remove need for coin chooser to take a wallet 2015-11-28 22:12:20 +09:00
Neil Booth a6ea9a0c71 Simplify interface to make_tx in coin chooser
Makes the coin chooser code simpler and easier to understand.
2015-11-28 22:08:00 +09:00
Neil Booth 90dee43998 Move estimated_fee to Transaction class
It's not a function of the wallet but of the transaction
so it more naturally belongs there.
2015-11-28 21:28:54 +09:00
Neil Booth e9061ea371 Move coin choosing logic to own class
This contains no change in logic, but is preparation for cleanup
and possible alternative strategies.
2015-11-28 14:49:10 +09:00
ThomasV 90a2a049f4 network fix: callbacks were not called 2015-11-27 11:30:14 +01:00
ThomasV 042f8ef832 network: cache subscription responses 2015-11-26 11:26:01 +01:00
ThomasV 43df795b1f network: separate callbacks from unanswered_requests 2015-11-26 10:57:43 +01:00
ThomasV ed2ab5e3c1 websockets: minor fix 2015-11-25 11:37:10 +01:00
ThomasV 1207ad3ba4 fix: websocket uses network object 2015-11-25 10:48:34 +01:00
ThomasV 2a29d1e5e7 fix syntax error 2015-11-25 10:35:14 +01:00
ThomasV 2934fd17be fix websockets 2015-11-25 10:32:46 +01:00
ThomasV 9ba75b80e2 increase version number 2015-11-24 09:43:21 +01:00
ThomasV ba2c737a21 finish separation between plugins and GUIs 2015-11-24 09:36:42 +01:00
ThomasV 2c0489c809 plugins: separate GUIs using child classes 2015-11-23 14:15:25 +01:00
ThomasV 175fdbcac6 Disentangle plugins and window management; use Qt signals 2015-11-23 09:05:34 +01:00
Kirill Fomichev 334b84c3c3 Add assertions to get_target 2015-11-19 22:03:12 +03:00
Kirill Fomichev e188929972 Fix proof of work assert in verify_chunk 2015-11-19 18:40:54 +03:00
Neil Booth 3211d752c7 Need to set p.wallet unfortunately
Fixes #1553
2015-11-19 08:31:01 +09:00
Neil Booth 0dcaa13d31 Show the wallet path in -v output 2015-11-14 16:14:00 +09:00
Neil Booth e9384f15ed Plugins manage their own wallet tracking 2015-11-14 15:58:10 +09:00