Commit Graph

2140 Commits

Author SHA1 Message Date
Neil Booth bd781d600b Have queues passed to the network constructor.
This is somewhat cleaner as the proxy's pipe and network setup
was awkwardly interleaved.  It also means network's constructor
is free to use both; currently some code is working around the
fact that the response queue doesn't exist in the constructor.
2015-05-21 12:49:39 +09:00
ThomasV 7b27f01e07 call fsync before rename 2015-05-19 11:56:33 +02:00
ThomasV 5c73bc5bc7 interface: init ping_time with 0 so that the client sends version message 2015-05-19 11:28:30 +02:00
ThomasV 2104e96a66 network: use get_nowait on one of the two queues 2015-05-19 10:22:25 +02:00
Neil Booth 63733ccd2a No need for thread to handle requests
Handle requests in the main loop.
Remove unused lock.
interface.py was reworked and send_request() no longer throws.
2015-05-19 14:29:10 +09:00
ThomasV a0e9046c2c prepare for 2.2 release 2015-05-17 09:17:52 +02:00
ThomasV e33bc2473b network: don't store unanswered request if result is in cache 2015-05-17 09:00:36 +02:00
ThomasV 6d0bc5d9b3 fix: nodes retry 2015-05-17 08:41:01 +02:00
ThomasV 44f06de796 network: when interface is disconnected, clear cache and resend unanswered requests 2015-05-15 14:47:59 +02:00
mikeland86 0ec62c8f36 Fix createrawtransaction and missing deserialize()
Found these issues while trying to create, sign, and broadcast a raw transaction. 

* createrawtransaction was using old signature for Transaction constructor
* Signwithwallet and decoderawtransaction need to call deserialize on tx before they can access inputs and outputs. (Maybe adding getInputs() and getOutputs() which deserializes if needed might be nicer)
2015-05-13 14:57:34 +02:00
ThomasV 5fa2a48343 add getmerkle command 2015-05-12 12:30:26 +02:00
ThomasV 81be685644 remove tests broken after WalletStorage update 2015-05-11 11:59:39 +02:00
ThomasV 7e9153aaa4 test if labels exist before loop. don't raise if a label cannot be converted 2015-05-11 11:55:26 +02:00
Azelphur fe5be618db Convert old latin1 labels, Raise exception if json conversion fails.
A couple of changes
1) Old electrum wallets seemed to save labels in latin1, when you call json.dumps on line 83/84 it fails silently, which causes the label import to fail. Whenever electrum saves, it then overwrites your default wallet with no labels - essentially deleting all your labels. The solution to this is iterating over all the labels for old wallets decoding anything that fails to unicode() as latin1, and then unicoding it :)

2) Failing to import data and then deleting it is bad. So I'm raising an exception to avoid data being lost.
2015-05-10 20:28:42 +01:00
ThomasV 59a9e4f710 fix new_wallet and seed language 2015-05-10 08:31:31 +02:00
ThomasV a1d1999545 move interfaces maintenance to its own function 2015-05-08 20:13:18 +02:00
ThomasV f2c2f9d738 network: fix confusion between addresses and cached responses 2015-05-08 17:59:33 +02:00
ThomasV 2a92a310ba typo 2015-05-08 17:47:04 +02:00
ThomasV 8c07bdc3bc do not timeout if interface is receiving data 2015-05-08 17:45:59 +02:00
ThomasV 233fd8ed77 revert 175bfae9e6. store last known height in wallet instead 2015-05-08 13:43:42 +02:00
ThomasV 1d517abf39 restore network_proxy.get_local_height 2015-05-08 11:12:19 +02:00
ThomasV c2a4252065 do not pass config to storage. request height from network_proxy if connected 2015-05-08 10:58:54 +02:00
Neil Booth 13b9b577a4 Don't use self.network to get the local height.
This restores a working offline mode.
2015-05-08 14:45:23 +09:00
ThomasV e06b3ba3ce Merge branch 'offline-2' of https://github.com/kyuupichan/electrum into kyuupichan-offline-2 2015-05-08 07:32:48 +02:00
Neil Booth 37c3cce329 Remove wallet.get_transactions()
Because references are returned, it's not threadsafe as ThomasV
pointed out.
2015-05-08 09:31:45 +09:00
Neil Booth 97b5f6d6a3 Fix two races in interface.py.
First, close the socket from the thread itself rather than from
the stop() function.  This prevents another thread closing the
socket that the interface thread is simultaneously using.

Second, it occasionally would happen that the parent thread such as
network.py start() an interface, do a send_request() and timeout
waiting for a response (timeouts are 0.1s).  It would check
is_connected(), get False, and assume the connection has failed.
In fact the thread hadn't even been scheduled or gotten around to
completing the socket connection.  Fix by having self.connected
start out True.  If the connection fails or times out, we set
connected to False soon enough.

Finally for correctness we need to deepcopy a send_request() rather
than take a reference to it.
2015-05-08 07:32:31 +09:00
Neil Booth a47881d72b Move the verified and unverified txs to the wallet. 2015-05-07 23:54:39 +09:00
ThomasV 656560be72 show many address labels in tx default label. fixes #1200 2015-05-07 16:09:39 +02:00
Neil Booth 79de458101 Preparation for moving the set of verified and unverified txs to the wallet.
The verifier will retain responsibility for verification, but will no longer
hold the transaction sets itself.

Change requires_fee to take a wallet.
Add new function add_unverified_tx()
Move get_confirmations() to the wallet from the verifier.
2015-05-07 09:21:08 +09:00
ThomasV ffda5cd866 Merge pull request #1187 from kyuupichan/local_height
Move away from requiring network and blockchain objects to be able to re...
2015-05-06 17:45:42 +02:00
ThomasV 8656785aa7 fix: use request_time for interface timeout 2015-05-06 17:25:29 +02:00
ThomasV 45fd3ef343 interface: send from same thread and simplify timeouts 2015-05-06 16:42:18 +02:00
ThomasV 78f5dbb72e revert c64e0c0e64 2015-05-06 12:13:21 +02:00
ThomasV 241b3b073f Merge pull request #1198 from kyuupichan/if-cleanup7b
Move response getting to its own function.
2015-05-06 11:28:03 +02:00
Neil Booth 6171779442 Move response getting to its own function.
This makes the operation of run() more clear.
No essential change in functionality.
2015-05-06 14:35:55 +09:00
ThomasV 43b8e202fd replace instances of get_unspent_coins 2015-05-06 07:25:50 +02:00
ThomasV a99c2bc9fa less verbose debug message 2015-05-05 21:00:35 +02:00
ThomasV 9d747fb601 Merge branch 'master' of git://github.com/spesmilo/electrum 2015-05-05 20:52:28 +02:00
ThomasV 687cc7783f show unmatured coins in status bar. fixes #1163 2015-05-05 20:52:14 +02:00
Neil Booth 0cfcd2c7b2 Remove self.lock
It is now unused; all necesary locking is done by the Queue objects.
2015-05-05 21:57:07 +09:00
Neil Booth c64e0c0e64 Send requests only from the interface thread.
Currently requests are sent from the requestor's thread.  The lock is
not properly held where necessary so this is not thread-safe.  For example
it can race with the thread stopping and closing the socket the
requestor is trying to use to send with.

Resolve such races by having send_request() simply queue the requests,
which are asynchronously sent from the interface thread itself.
2015-05-05 21:36:34 +09:00
Neil Booth 6920747a5d Move ping functionality into its own function.
First step in cleaning up the run() function.
Calls stop() rather than setting is_connected to False on
case of timeout, which cleanly closes the socket.
2015-05-05 20:46:34 +09:00
Neil Booth c07e956127 Pass the response_queue to the constructor, not start().
Removes an unnecessary Thread base-class override.  The python
documentation also strongly discourages overriding anything other
than run().
2015-05-05 20:37:25 +09:00
Neil Booth 9cf2eff16b Make is_connected into a member function. No change in logic. 2015-05-05 20:00:10 +09:00
Neil Booth 4d55cb9528 First of several incremental patches tightening up interface.py.
Remove some unneeded imports, a constant and a line of dead code.
Document the current external API interface.py provides.
2015-05-05 14:02:51 +09:00
Neil Booth 175bfae9e6 Move away from requiring network and blockchain objects to be able to request local height.
We store it in the config object instead of in the blockchain object.
The blockchain object now refers to its config, and calls refresh_height() to update it.
The network objects also refer to the config rather than the blockchain.

This is the first of many small steps to untangle the verifier from stored state and so
permit the history tab to work in offline mode.  The refactoring will simultaneously clean
up a lot of accumulated cruft.
2015-05-03 15:19:29 +09:00
ThomasV 25c6a78ae0 fix missing immport 2015-05-02 16:29:41 +02:00
ThomasV 475a48091f Merge pull request #1183 from kyuupichan/get_history2
Make it 3-step instead of four. Avoid quadratic insertions.
2015-05-02 16:28:18 +02:00
ThomasV e4038dcdba move create_csr to gui 2015-05-02 16:26:27 +02:00
Neil Booth 2fc38332e7 Make it 3-step instead of four. Avoid quadratic insertions.
This is preparation to hopefully fix #1163
2015-05-02 23:17:50 +09:00
ThomasV bbaacef960 fix format_satoshis for None values 2015-05-02 15:12:00 +02:00
ThomasV 75ddc066bb fix #1181 2015-05-02 11:05:38 +02:00
ThomasV 8ba70c941b add function to create CSR 2015-04-30 17:51:51 +02:00
ThomasV c35cdf1fd8 rename ssl config variables 2015-04-30 17:33:29 +02:00
Neil Booth db2517b901 Shrink size of changes; functionality unchanged. 2015-04-30 13:32:01 +09:00
Neil Booth 506ed8ee74 Merge branch 'master' into tray_tip_wallet 2015-04-30 13:28:13 +09:00
ThomasV 953674aac7 resize columns to content by default 2015-04-29 09:26:22 +02:00
Neil Booth 4f45e0a083 Prior lost minus sign for fractional negative numbers 2015-04-29 15:09:55 +09:00
Neil Booth 0d35dd66d2 The lite GUI passes a decimal type 2015-04-29 14:48:55 +09:00
Neil Booth 83e05b1183 Modify format_satoshis to display amounts according to locale.
In particular, thousands and decimal point separators are taken from locale.
2015-04-29 10:13:41 +09:00
Neil Booth f56413d602 Put title() member func, with localization, in main_window.py 2015-04-28 21:12:25 +09:00
Neil Booth 889174ae19 Show wallet basename in tray tooltip for those of us using multiple wallets
Move basename (and title) logic to the wallet and use those member functions.
2015-04-28 19:32:56 +09:00
ThomasV 7316f613d6 fix history command 2015-04-28 08:58:33 +02:00
Neil Booth deec78a9d4 Clean up block explorer handling. Add menu item to go to block explorer for an address.
Block explorer code is data-driven now.
Put block explorer defaulting in one place.
Fix URLs for insight.is and blockr.io.
Add tradeblock.com explorer.
Add menu item to view address on block explorer provided only one is selected.
2015-04-26 22:02:21 +09:00
ThomasV f2749a744e version 2.1.1 2015-04-24 21:26:08 +02:00
ThomasV cb09d88322 fix bug introduced in 21673c95f4 2015-04-24 21:01:34 +02:00
Maran 21673c95f4 Fix wallet write to support windows 2015-04-24 13:14:17 +02:00
ThomasV 4a28c88946 atomic write wallet file 2015-04-23 17:12:02 +02:00
ThomasV e8189490e9 store contacts in a separate file, shared between wallets 2015-04-23 12:16:46 +02:00
ThomasV 065145e557 get_history: return empty history if balance check fails 2015-04-23 09:49:24 +02:00
ThomasV 6cff7a284a store invoices as dict. rename domain -> requestor 2015-04-22 13:59:38 +02:00
ThomasV 74b0ed5f48 move get_status to InvoiceStore 2015-04-22 13:36:07 +02:00
ThomasV 409c34d1bf verify: create a PaymentRequest instance, to avoid blanking the signature as side effect 2015-04-22 10:25:29 +02:00
ThomasV 30bed4c5a9 sign and save to file bip70 payment request; redo receive tab layout 2015-04-21 08:45:51 +02:00
ThomasV 50bc50d78d daemon: filter notificaions sent to client 2015-04-20 09:16:43 +02:00
ThomasV 524db55b90 don't display hashes or addresses as default labels 2015-04-19 14:30:44 +02:00
ThomasV eac3129cba Merge pull request #1135 from Kausheel/get_addr_received
Add wallet function get_addr_received()
2015-04-19 13:38:45 +02:00
ThomasV 21b2fcbe85 always_hook. fix trezor handler. fixes #1146 2015-04-18 14:59:46 +02:00
ThomasV f82de35bd2 x509: use SKI and AKI to find parent certificate if it is missing 2015-04-17 12:30:52 +02:00
ThomasV 7796243fdd get_common_name: return string if missing 2015-04-14 16:35:06 +02:00
ThomasV ed5258e406 parse certificates without pyasn1 2015-04-14 15:04:04 +02:00
ThomasV f6a00fdb34 add file: scheme to get_payment_request 2015-04-13 17:56:20 +02:00
ThomasV 036f96cf35 store invoices in a separate file, with their status 2015-04-13 14:19:59 +02:00
ThomasV 8a55a4c26c Merge pull request #1141 from kaykurokawa/master
Dust threshold should be 546
2015-04-12 12:09:48 +02:00
ukurokawa e708c446a8 Dust threshold should be 546 2015-04-11 11:41:02 -04:00
ThomasV 4fe32d2ad1 add root certificate to chain if missing. fixes #1137 2015-04-10 16:32:16 +02:00
ThomasV c381fc2194 remove debug message 2015-04-09 19:29:53 +02:00
ThomasV cdd5d6e130 fix #1136 2015-04-09 19:05:11 +02:00
ThomasV eb9802356a fix variable name in from_seed 2015-04-09 18:59:51 +02:00
Kausheel Kumar 8cf793ab98 Add wallet function get_addr_received() 2015-04-09 01:44:44 +10:00
ThomasV be5731d463 move make_payment_request to lib 2015-04-05 18:57:00 +02:00
ThomasV b8a72180c7 HistoryWidget class; address history window 2015-04-04 18:26:52 +02:00
ThomasV 0a7b585b6c redo default labels with incoming tx outputs 2015-04-04 15:55:28 +02:00
ThomasV 4c729f0ff0 move format_time to util 2015-04-03 14:44:03 +02:00
ThomasV 75cf142be0 fix typo 2015-04-03 11:30:36 +02:00
ThomasV a3422d3fae generic multisig wallet constructor. fixes #1129 2015-04-03 11:27:57 +02:00
ukurokawa 950dc2c685 get_pubkeys is called incorrectly in get_pubkey_from_xpub() 2015-04-02 15:03:48 -04:00
ThomasV 911a60c02d separate timeouts for server and nodes retry 2015-04-02 15:12:01 +02:00
ThomasV 5f29017c9d pass config.path to daemon (exemptore). fixes #901 2015-04-02 12:12:18 +02:00
ThomasV 98cc9c53d1 do not write config file from network class 2015-04-02 10:50:09 +02:00
ThomasV a805afa900 save recent_servers in separate file 2015-04-02 10:12:51 +02:00
ThomasV 881e15ae12 store config as json 2015-04-02 10:00:07 +02:00
ThomasV 0503e809d5 fix #1121: tx.update 2015-04-01 07:57:59 +02:00
ThomasV e3e5d95794 fix account key bug 2015-03-31 22:44:00 +02:00
ThomasV a44f1bc4d3 Merge pull request #1115 from romanz/offline-mode-fix
Offline mode fixes
2015-03-31 13:57:27 +02:00
ThomasV c9d874ce38 openalias: more error message 2015-03-31 12:21:20 +02:00
ThomasV f77311328a add get_completions to wallet 2015-03-31 12:01:42 +02:00
ThomasV 4d7b68658b fix delete_contact 2015-03-31 11:29:18 +02:00
ThomasV 2f1c597e8f print_error method for plugins 2015-03-31 10:01:53 +02:00
Roman Zeyde a7440fc89c wallet: skip history sort when verifier is not set 2015-03-31 09:32:21 +03:00
ThomasV da502076bd fix get_history 2015-03-30 20:39:06 +02:00
ThomasV f051a3e577 update occurences of get_history 2015-03-30 20:17:24 +02:00
Roman Zeyde c4b306cdbe fix Transaction.deserialize() to Transaction() 2015-03-30 18:28:24 +03:00
Roman Zeyde 9d0aa737e5 transaction: call serialize() before deserialization 2015-03-30 18:28:24 +03:00
ThomasV 2d84deeaad sanity check history 2015-03-30 14:10:46 +02:00
ThomasV ec11e58add handle pruning in wallet.txi/txo 2015-03-30 14:10:46 +02:00
ThomasV 3d1fa1e27f find_pay_to_pubkey_address 2015-03-30 14:10:46 +02:00
ThomasV bc3ed470e1 use hash as default label 2015-03-30 14:10:46 +02:00
ThomasV e3de121be9 store deserialized tx in/out in wallet file for fast computation 2015-03-30 14:10:46 +02:00
ThomasV d9b1271f65 version 2.1 2015-03-30 14:10:32 +02:00
ThomasV cf0fcac9fa fix deserialize_server bug 2015-03-28 19:17:07 +01:00
ThomasV 08f63a7f14 release notes for 2.0.4 2015-03-26 09:26:25 +01:00
ThomasV d9874ecb01 add 10 second timeout to header requests 2015-03-25 10:18:32 +01:00
ThomasV f50a62755c use self.print_error 2015-03-25 09:22:27 +01:00
ThomasV 973f7f9fe5 mpk window: detect self and cosigner keys 2015-03-24 17:33:08 +01:00
ThomasV 1369c02011 safeguard: do not let daemon treads write wallet file 2015-03-24 12:23:11 +01:00
ThomasV 0200778ac1 require user to start daemon explicitly 2015-03-23 11:50:13 +01:00
ThomasV b4ff652d89 Merge pull request #1095 from railgun74/master
Let wallet recovery use 64 character hex strings and legacy 24 word seeds.
2015-03-19 17:58:21 +01:00
K 41127db32d Let wallet recovery use 64 byte hex strings and 24 word seeds.
1. Allow wallet recovery from 64 byte hex strings.
2. Allow use of 24 word legacy seeds created from 64 byte hex strings.
2015-03-19 08:20:32 -07:00
ThomasV 90a22f1a36 Merge branch 'master' of git://github.com/spesmilo/electrum 2015-03-17 14:31:21 +01:00
Neil bbcfa44e54 Use string joins instead of concatenation for efficiency. 2015-03-17 21:57:06 +09:00
ThomasV d82529a41a function profiler 2015-03-17 11:29:17 +01:00
ThomasV cabd6bbb2c inputs_to_sign: handle missing num_sig 2015-03-17 07:41:27 +01:00
ThomasV a5a7a34c2d IOError: add file path to exception message 2015-03-15 08:04:02 +01:00
ThomasV b93aa9bc43 do not display daemon socket path 2015-03-14 19:08:22 +01:00
ThomasV 4a4624cb85 type conversion; fixes #1077 2015-03-14 16:22:47 +01:00
ThomasV 39ba3db0dd version 2.0.3 2015-03-14 14:29:10 +01:00
ThomasV b2a13dbd9c remove unused imports 2015-03-14 09:37:56 +01:00
ThomasV 4ebefc6e4c standardize error messages in synchronizer 2015-03-14 09:29:44 +01:00
ThomasV 8e7ce452f6 move misplaced debug message 2015-03-14 09:27:18 +01:00
ThomasV 5b8588ee90 rename spv class, use own print_error 2015-03-14 09:20:27 +01:00
ThomasV a4cb70649d fix synchronizer hanging when not connected. 2015-03-14 08:43:43 +01:00
ThomasV 72688a5cfa clean implementation of daemon threads 2015-03-13 23:04:29 +01:00
ThomasV 58f9ab3492 add a lock to wallet.synchronize() and fix #1049 2015-03-13 16:51:31 +01:00
ThomasV 9e4eda24b5 fix #1082 2015-03-13 12:00:08 +01:00
ThomasV f32f1183fc print_error methods. request timeout for interface 2015-03-12 21:39:05 +01:00
ThomasV 1569cd0420 serialize/deserialize methods for servers 2015-03-12 18:06:28 +01:00
ThomasV c4d0314817 network: separate interface management from reconnection logic 2015-03-12 17:44:16 +01:00
ThomasV 799a08514b move proxy logic to network.py. reload socket module if proxy is disabled 2015-03-12 12:56:06 +01:00
ThomasV ae7405a10f remove old http interface code, not used 2015-03-12 11:55:10 +01:00