Commit Graph

768 Commits

Author SHA1 Message Date
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
Neil Booth 84450b9189 Revert mistaken commit 2015-12-29 23:16:53 +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
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
ThomasV 9d3162b1a1 simplify get_label 2015-12-15 12:52:30 +01: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 75b3ecee49 Add coin chooser to try and minimize loss of privacy. 2015-12-09 22:20:23 +09:00
ThomasV 4682d95a76 merge jsonrpc gui and daemon 2015-11-30 10:09:54 +01: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 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 175fdbcac6 Disentangle plugins and window management; use Qt signals 2015-11-23 09:05:34 +01:00
Neil Booth 0dcaa13d31 Show the wallet path in -v output 2015-11-14 16:14:00 +09:00
ThomasV ae42576423 Merge branch 'master' of git://github.com/spesmilo/electrum 2015-11-12 14:32:19 +01:00
ThomasV 86a0103a7f increase min_relay_tx_fee, and make dust_threshold a function 2015-11-12 14:31:17 +01:00
Neil Booth 206e38fb7c Make use of trigger_callback easier to understand 2015-11-12 16:08:37 +09:00
Neil Booth 8cc3b58364 Allow syncronizer to be GC-ed
Proper fix for #1525.
Using python's GC module, I've verified that the daemon, when running,
now releases all verifiers, synchronizers and wallets - all the resources
we care about releasing.
2015-11-12 08:40:58 +09:00
Neil Booth d612684196 Attempt at fixing issue 1525
The main problem is, I think, that the synchronizer and wallet
still exist in the daemon process, and updates to things like
TXI and TXO are made but never saved (as client exit is what
saves the wallet).

I suspect fixing the lingering objects is hard; this is a short
term fix to ensure that when internal wallet state is updated,
the wallet is written to disk, so later daemon clients pick up
the correct state.
2015-11-11 16:38:28 +09:00
ThomasV 2a3c97813d wallet.get_max_amount method, used by qt and kivy 2015-10-30 14:10:41 +01:00
ThomasV 079cb311ec call wallet.wait_until_synchronized before commands 2015-10-29 05:01:06 +01:00
ThomasV 052d8b236e fix #1494 2015-10-28 10:36:44 +01:00
ThomasV 2a23aab24b workaround #1513 2015-10-28 07:32:29 +01:00
ThomasV 26682491b2 generic restore from command line 2015-10-27 14:33:41 +01:00
Neil Booth 97568bedf5 Default to unused address for privkey sweeps
Fixes #1506

- New function wallet.get_unused_addresses
- Have wallet.get_unused_address use it
- Use it for the sweep key dialog
2015-10-26 20:33:35 +09:00
ThomasV 171363aa86 minor fix (import stat) 2015-10-20 13:57:43 +02:00
ThomasV a9f451decd preserve file permissions when saving wallet 2015-10-20 13:52:38 +02:00
Chris Beaven fc141cba28 Fix KeyErrror typo 2015-10-19 10:42:46 +13:00
ThomasV fbda9dac79 fix #1479 2015-10-18 12:36:04 +02:00
ThomasV 0fe410d7e6 restore lock in storage.write (follow up to b5e0363f) 2015-10-01 13:26:22 +02:00
Neil Booth b5e0363f85 Only save wallet if modified 2015-09-11 14:02:01 +09:00
Neil Booth f710d872c7 When using labels plugin write wallet once
Poor hook coupling would cause the wallet to be written
twice unnecessarily when using the labels plugin and changing
a label
2015-09-10 22:29:25 +09:00
Neil Booth 886192aba7 Make trustedcoin.py multi-window compatible 2015-09-09 17:27:58 +09:00
Neil Booth 39615333c0 Attribute more diagnostic messages 2015-09-06 22:04:44 +09:00
Neil Booth 1171a25815 Genericize plugin handling of thread jobs
Move it to the Plugins class so all plugins get it for
free.
2015-09-05 17:21:28 +09:00
Neil Booth 89fbda30e0 Labels plugin now working for multiple windows 2015-09-04 17:38:14 +09:00
ThomasV 9d76bf6828 temporary fix wallet constructors 2015-09-02 14:37:40 +02:00