Commit Graph

2230 Commits

Author SHA1 Message Date
ThomasV 2b9b42d5f7 Merge pull request #1286 from kyuupichan/remove_urllib2
Use requests instead - SSL handling is superior
2015-06-10 21:15:27 +02:00
ThomasV e517321f76 Network: fix handle_requests, must process requests even if we are not connected 2015-06-10 18:26:03 +02:00
ThomasV 6ea04e2d47 Network: Fix switch_to_interface (check that interface is connected) 2015-06-10 18:24:57 +02:00
ThomasV 060e3aa23e plugins: call load_wallet in install wizard 2015-06-10 12:40:08 +02:00
Neil Booth a3ad32bd91 Use requests instead - SSL handling is superior 2015-06-10 16:15:00 +09:00
ThomasV 479a6f84e7 paymentrequest: add headers to http request 2015-06-10 09:04:34 +02:00
ThomasV 8bccf7b2db replace httplib with requests 2015-06-10 08:29:50 +02:00
ThomasV ee6b718ea4 better message 2015-06-09 16:10:44 +02:00
ThomasV f70a996619 fix trezor initialiation hook (pass window in load_wallet) 2015-06-09 09:58:40 +02:00
Neil Booth e8db8983ec Make the synchronizer not a thread.
The synchronizer's work is done from the network proxy's main loop.

A minor problem with the old synchronizer was that it considered itself
out of date if the network was out of date.  This was too generic: the
network can have pending requests unrelated to the synchronizer.  This
resulted in the synchronizer often unnecessarily flipping the wallet
between up-to-date and not-up-to-date, and causing unnecessary calls
to wallet.save_transactions().  This was observable when opening the
network dialog box: frequently just opening it would cause a wallet
status change and transaction flush, simply because the network dialog
sends a get_parameters() request.  This rework of the synchronizer does
not have that issue.
2015-06-09 08:41:31 +09:00
ThomasV 70037b89a9 version 2.3 and release notes 2015-06-08 18:40:21 +02:00
ThomasV 8995cdbf14 rename fields: 'time' -> 'timestamp', payment_requests 2015-06-08 13:36:35 +02:00
ThomasV 357c405ac6 fix publish_request 2015-06-08 13:21:13 +02:00
ThomasV d367930113 amount is in satoshis 2015-06-08 13:20:42 +02:00
ThomasV 9bd94e5062 refactor payment requests 2015-06-08 12:51:45 +02:00
ThomasV 572a463806 reason->memo 2015-06-08 08:06:38 +02:00
ThomasV 3bb00f0006 store json record requests 2015-06-07 21:52:23 +02:00
ThomasV bf755f8ac0 jsonrpc interface 2015-06-07 19:11:54 +02:00
ThomasV 48e53498db improve requests 2015-06-07 18:44:33 +02:00
Neil Booth 98bea614d8 Implement BIP-LI01.
No more need to randomly place change.
2015-06-06 22:25:40 +09:00
ThomasV 0b874b2bb0 Readding pending_transactions_for_notifications, needed by the gui. 2015-06-05 08:56:55 +02:00
Neil Booth a2445aa27d Remove unused vars and imports. 2015-06-05 11:54:00 +09:00
Neil Booth 2f2e468d0a SocketPipe shouldn't close the socket.
This is a layering violation - the SocketPipe doesn't own
the socket and provides no other way to close the socket, leading
to unnecessary complexity like that in interface.py.

I looked at deamon.py and NetworkProxy - the two other users,
and they don't close the sockets explicitly, just let them be
garbage collected.
2015-06-04 16:30:59 +09:00
ThomasV 90d7179d73 Merge pull request #1276 from kyuupichan/need_interface
Need an interface to process a request.
2015-06-04 05:57:04 +02:00
Neil Booth caebdd0819 Need an interface to process a request.
Occasionally triggered with a race at start up, typically from
the verifier requesting a merkle root.
2015-06-04 11:22:57 +09:00
ThomasV fc23b0f490 fix #1274 2015-06-03 14:18:49 +02:00
ThomasV ec795ba3c0 fix var name 2015-06-03 11:39:44 +02:00
ThomasV ab60da89ac Add a help group for config variables. Change name of ssl variables 2015-06-03 11:34:52 +02:00
ThomasV 34360bddfb add missing definition of COIN 2015-06-03 10:25:21 +02:00
ThomasV 0ddd94b5b3 remove forgotten debugging statement 2015-06-03 10:03:55 +02:00
ThomasV ca62df89d4 fix: set_config 2015-06-03 10:02:12 +02:00
ThomasV d85a11173d verify: return earlier if request is empty 2015-06-03 09:34:35 +02:00
ThomasV cbeeedcca2 Add note for commands that are not SPV; fix format_request parameter 2015-06-03 09:12:38 +02:00
ThomasV fb6a74e034 fix typo 2015-06-02 16:49:21 +02:00
ThomasV 3188ff05a3 fix is_watching_only 2015-06-02 16:41:32 +02:00
ThomasV b832a5cea4 Merge pull request #1272 from kyuupichan/if-socket
Fix couple of minor socket issues
2015-06-02 16:28:42 +02:00
ThomasV 088d8e8415 show request status 2015-06-02 11:36:06 +02:00
Neil Booth ab2f80c3e0 Fix couple of minor socket issues
Set timeout and socket options on all simple sockets.  At present
some code paths can miss it, such as when the SSL certificate is
CA-signed.

Add a missing check for failure.
2015-06-02 18:13:36 +09:00
ThomasV e4946cf26e setconfig: return False on error 2015-06-02 11:05:21 +02:00
ThomasV 31c4849566 url_rewrite 2015-06-02 10:41:36 +02:00
ThomasV b83b7fa5c8 cmd line: format payment requests 2015-06-02 10:25:39 +02:00
ThomasV 2727df962e requests: store path not url 2015-06-02 09:56:10 +02:00
ThomasV b9e4825422 fix request_dir variable 2015-06-02 09:37:54 +02:00
ThomasV 514ea6aa8c doc for addrequest 2015-06-02 09:31:24 +02:00
ThomasV d41785c783 save payment requests in requests_dir 2015-06-02 09:18:39 +02:00
Neil Booth d16714a1db Make the blockchain class not a thread
Remove interface communication out of blockchain.py
into network.py.  network.py handles protocol requests
for headers and chunks.  blockchain.py continues to
handle their analysis and verification.

If an interface provides a header chain that doesn't
connect, it is dismissed, as per a previous TODO comment.

This removes a thread and another source of timeouts.
I see no performance issues with this when truncating the
blockchain.

Rename 'result' to 'header' for clarity.
2015-06-01 20:53:42 +09:00
ThomasV 832369d7c4 Merge pull request #1270 from kyuupichan/if-tristate
Make interface status tri-state.
2015-06-01 13:09:40 +02:00
ThomasV 0938299e9b move payment requests logic to wallet, add basic commands 2015-06-01 13:02:09 +02:00
Neil Booth 76355e66c8 Make interface status tri-state.
This allows us to distinguish between connecting and connected
state in interface.py (used to be done in network.py but that
had other issues).

This means we don't switch to a connecting server, and get_interfaces()
does not report connecting ones.
2015-06-01 18:22:03 +09:00
Neil Booth 03e53a5e01 Create a constant for 100000000 and use it
Use same name as is in bitcoind.
Note that one of the constants in text.py had the wrong number
of zeroes previously...
2015-06-01 14:53:36 +09:00
ThomasV 4d9be9a6d2 commands: use decorator to register commands 2015-06-01 06:10:06 +02:00
ThomasV 7e20901e3b read command defaults 2015-06-01 00:17:50 +02:00
ThomasV c3f82fd69c fix cmd descriptions 2015-05-31 23:23:13 +02:00
ThomasV f8eb68458d use docstrings 2015-05-31 23:17:44 +02:00
ThomasV ddd6a58cc7 commands: extract params and options from arguments 2015-05-31 22:42:34 +02:00
ThomasV 1d5c6bdc2d deserialized option for mktx 2015-05-31 18:21:14 +02:00
ThomasV 4042ac69ec fix varname 2015-05-31 18:03:58 +02:00
ThomasV 9c76a0232e distinction between 'destination' and 'address' 2015-05-31 18:02:09 +02:00
ThomasV 200563c4e9 fix sweep fee 2015-05-31 17:49:59 +02:00
ThomasV c4d822b0cf add 'unsigned' option 2015-05-31 17:38:57 +02:00
ThomasV ee20910c65 fix signtransaction flags 2015-05-31 17:21:02 +02:00
ThomasV a3cd33fe03 add option to disable dnssec 2015-05-31 16:43:27 +02:00
ThomasV 9be94c74d2 add getalias command 2015-05-31 15:06:52 +02:00
ThomasV 8513dd2c63 fix cmd names 2015-05-31 15:00:56 +02:00
ThomasV c006678289 fix indent 2015-05-31 15:00:43 +02:00
ThomasV 5a76a0fc95 hook openalias plugin to command line interface 2015-05-31 14:42:16 +02:00
ThomasV ee5f499fc1 use contacts in command line 2015-05-31 14:10:52 +02:00
ThomasV 5cd3bfedb6 always pass coins to wallet.make_unsigned_transactions. fix \! shortcut in commands 2015-05-31 11:31:41 +02:00
ThomasV 0531f00c80 support for \! shortcut in command line 2015-05-31 10:40:12 +02:00
ThomasV 0caa29784c separate param_descriptions and improve help messages 2015-05-31 10:03:53 +02:00
ThomasV cc610d352f merge signtxwithwallet and signtxwithkey 2015-05-31 09:28:47 +02:00
ThomasV 1d5f04c588 fix function name 2015-05-31 08:49:47 +02:00
ThomasV 53a3f00389 add --deserialize option to gettransaction 2015-05-31 08:20:09 +02:00
ThomasV 9acc0e4ed0 minor formatting 2015-05-31 08:06:20 +02:00
ThomasV 2167b9e93d Merge pull request #1264 from kyuupichan/unify_interfaces
Remove pending_servers, self.interfaces is now the complete set of
2015-05-31 08:02:47 +02:00
ThomasV bd6bfcea0e Merge pull request #1267 from kyuupichan/spendable_coins
get_spendable_coins and frozen addrs
2015-05-31 07:53:43 +02:00
Neil Booth 320f9a3790 get_spendable_coins and frozen addrs
Two callers of get_spendable_coins were removing frozen addrs
before calling.  Put that functionality in the function.
We shouldn't be able to send_from a frozen address.  This was
possible in the current release because logic assumed a two-element
tuple was returned when it is now three-element.  Fix that too.

Command line options listunspent and createrawtransaction currently
ignore frozen addresses.  I'm not sure that's right but I've preserved
that behaviour.

With this patch only the wallet class refers to self.frozen_addresses;
other clients use is_frozen() now.
2015-05-31 14:07:50 +09:00
ThomasV 00ded10810 fix: freeze does not need password 2015-05-31 06:45:51 +02:00
Neil Booth 0f29984f07 Speed up freezing and unfreezing of many addresses
Speedup mainly from writing to storage only once.
Make frozen_addresses a set in memory, as sets give cleaner
code and are more efficient.

Minor change in behaviour: command line freezing used to return
False if the address isn't in the wallet OR the address was already
frozen.  Now it returns more like a success code: it returns False
only if the address isn't in the wallet regardless of frozen state.
Similarly for unfreezing.
2015-05-31 11:54:21 +09:00
ThomasV d6f4b57d64 help function for python console 2015-05-30 19:13:28 +02:00
ThomasV 92a158b910 proper handling of arg_types. add more options for listaddresses 2015-05-30 18:49:58 +02:00
ThomasV 2ab9272f52 fix positional arguments 2015-05-30 16:14:56 +02:00
ThomasV 966bb3c15f separate help and description for commands 2015-05-30 14:07:48 +02:00
ThomasV 0ad73b0899 better help 2015-05-30 13:38:05 +02:00
ThomasV d2f3e3f349 fix cmdline listcontacts 2015-05-30 12:35:58 +02:00
Neil Booth 2b66f0d459 Remove pending_servers, self.interfaces is now the complete set of
interfaces we have created.

Existing code has the concept of pending servers, where a connection
thread is started but has not sent a connection notification, and
and interfaces which have received the notification.

This separation caused a couple of minor bugs, and given the cleaner
semantics of unifying the two I don't think the separation is beneficial.
The bugs:

1) When stopping the network, we only stopped the connected interface
threads, not the pending ones.  This would leave Python hanging
on exit if we don't make them daemon threads.

2) start_interface() did not check pending servers before starting
a new thread.  Some of its callers did, but not all, so it was
possible to initiate two threads to one server and "lose" one thread.

Apart form fixing the above two issues, unification causes one more
change in semantics: we are now willing to switch to a connection
that is pending (we don't switch to failed interfaces). I don't
think that is a problem: if it times out we'll just switch
again when we receive the disconnect notification, and previously the
fact that an interface was in the interaces dictionary wasn't a
guarantee the connection was good anyway: we might not have processed
a pending disconnection notification.
2015-05-30 17:42:11 +09:00
Neil Booth 4eaff5678d Avoid change address reuse if possible
As discussed on #electrum yesterday.
Increase change gap limit to 6.
Choose the next unused change address, if any, otherwise pick
one at random from the gap limit.
2015-05-30 17:07:29 +09:00
ThomasV 48f98f75db improve help messages 2015-05-30 09:43:42 +02:00
ThomasV bf1aa6263c add description to command parameters 2015-05-30 09:36:54 +02:00
ThomasV 5dd535f915 move global options to parent, to avoid order-sensitive parsing 2015-05-30 07:58:47 +02:00
ThomasV 701527df20 fix -P option 2015-05-30 06:56:45 +02:00
ThomasV 6201133c48 fix #1263 2015-05-30 06:38:46 +02:00
ThomasV a0c7219db0 rm debugging print 2015-05-29 19:30:00 +02:00
ThomasV 2e67ca43e8 use csv instead of mkmanytx 2015-05-29 19:26:06 +02:00
ThomasV 3ddbbc1008 Parse arguments with argparse.
Move parser to commands.py
2015-05-29 19:24:50 +02:00
ThomasV 3195b94f28 Merge pull request #1257 from kyuupichan/update_fee
Fix calls to update_fee
2015-05-28 19:34:04 +02:00
ThomasV a3dd51f476 rm failing test 2015-05-28 15:43:50 +02:00
ThomasV 9dc8393cf6 move import test to wallet.py 2015-05-28 15:39:26 +02:00
ThomasV 3fdfd23ca9 add check in importprivkey 2015-05-28 15:27:22 +02:00
Neil Booth 05cb9975cb Fix calls to update_fee
Fees should be recalculated when send_from changes.
Fees should be recalculated when editing fee preference, but
only save to storage when leaving the fee per kb widget.
No need to emit a textEdited signal; the widget does that already
(with the effect that we used to call update_fee() twice).
2015-05-28 15:52:31 +09:00