monero/src/wallet
moneromooo-monero d5472bd87b
wallet2: do not send an unnecessary last getblocks.bin call on refresh
The "everything refreshed" state was detected when a refresh call did
not return any new blocks. This can be detected without that extra
"empty" call by comparing the claimed node height to the height of
the last block retrieved. Doing this avoids that last call, saves
some bandwidth, and makes the common refresh case use only one call
rather than two.

As a side effect, it prevents an information leak reported by
Tramèr et al: if the wallet retrieves a set of blocks which includes
an output sent to the refreshing wallet, the wallet will prompt the
user for the password to decode the amount and calculate the key
image for the new output, and this will delay subsequent calls to
getblocks.bin, allowing a passive adversary to note the delay and
deduce when the wallet receives at least one output.

This can still happen if the wallet downloads more than 1000 blocks,
since this will be split in several calls, but then the most the
adversary can tell is which 1000 block section the user received
some monero (the adversary can estimate the heights of the blocks
by calculating how many "large" transfers are done, which will be
sections of blocks, the last of which will usually be below 1000,
but the size of the data should allow the actual number of blocks
sent to be determined fairly accurately).

This timing trick still be used via the subsequent scan for incoming
txes in the txpool, which will be fixed later.
2019-11-01 18:59:37 +00:00
..
api Merge pull request #5894 2019-09-30 18:45:41 -05:00
CMakeLists.txt daemon, wallet: new pay for RPC use system 2019-10-25 09:34:38 +00:00
message_store.cpp Changed the use of boost:value_initialized for C++ list initializer 2019-09-02 14:16:29 +02:00
message_store.h
message_transporter.cpp MMS: Use chans instead of normal addresses for auto-config 2019-08-20 19:55:31 +02:00
message_transporter.h MMS: Use chans instead of normal addresses for auto-config 2019-08-20 19:55:31 +02:00
node_rpc_proxy.cpp daemon, wallet: new pay for RPC use system 2019-10-25 09:34:38 +00:00
node_rpc_proxy.h daemon, wallet: new pay for RPC use system 2019-10-25 09:34:38 +00:00
ringdb.cpp ringdb: fix bug in blackballing 2019-08-22 21:34:48 +09:00
ringdb.h simplewallet: new unset_ring command 2019-04-02 14:18:07 +00:00
wallet2.cpp wallet2: do not send an unnecessary last getblocks.bin call on refresh 2019-11-01 18:59:37 +00:00
wallet2.h wallet2: do not send an unnecessary last getblocks.bin call on refresh 2019-11-01 18:59:37 +00:00
wallet_args.cpp daemon, wallet: new pay for RPC use system 2019-10-25 09:34:38 +00:00
wallet_args.h daemon, wallet: new pay for RPC use system 2019-10-25 09:34:38 +00:00
wallet_errors.h daemon, wallet: new pay for RPC use system 2019-10-25 09:34:38 +00:00
wallet_light_rpc.h rpc: move a leftover light wallet RPC out of daemon RPC 2019-08-28 15:51:28 +00:00
wallet_rpc_helpers.h wallet: do not warn if the rpc cost was free 2019-10-27 10:59:31 +00:00
wallet_rpc_payments.cpp daemon, wallet: new pay for RPC use system 2019-10-25 09:34:38 +00:00
wallet_rpc_server_commands_defs.h wallet: add edit_address_book RPC 2019-09-17 11:38:23 +00:00
wallet_rpc_server_error_codes.h wallet: distinguish between empty and absent attributes 2019-05-02 13:00:08 +00:00
wallet_rpc_server.cpp Merge pull request #6019 2019-10-25 13:45:59 -05:00
wallet_rpc_server.h wallet: add edit_address_book RPC 2019-09-17 11:38:23 +00:00