aboutsummaryrefslogtreecommitdiff
path: root/src (unfollow)
AgeCommit message (Collapse)AuthorFilesLines
2020-05-06cryptonote_core: take out the time based upgrade warningmoneromooo-monero1-2/+0
It doesn't really work anymore since we don't have a fork soon
2020-05-06cryptonote_protocol: do not request pruned borromean sig txesmoneromooo-monero1-1/+6
We don't have a function to calculate their weight from a pruned version (yet).
2020-05-05wallet2: fix keys file deserialization exception handlingxiphon1-7/+1
2020-04-29txpool.cpp: rename var to fix for old g++ version (xenial default)Sumo Gr1-2/+2
2020-04-29Fixes for ZMQ JSON-RPC endpoint names for raw txLee Clagett1-1/+2
2020-04-27wallet2: fix subaddress expansion when receiving moneromoneromooo-monero2-3/+17
2020-04-27trezor: adapt to new passphrase mechanismDusan Klinec17-196/+377
- choice where to enter passphrase is now made on the host - use wipeable string in the comm stack - wipe passphrase memory - protocol optimizations, prepare for new firmware version - minor fixes and improvements - tests fixes, HF12 support
2020-04-27message_store: don't print an error when there is no mms filemoneromooo-monero1-1/+1
It confuses people
2020-04-27rpc: fix 'use_bootstrap_daemon_if_necessary' return valuexiphon1-1/+1
2020-04-26wallet2: check_connection return false on get_version status != OKxiphon1-3/+2
2020-04-24Used legacy category to match insert_key_images behaviorLee Clagett1-1/+1
2020-04-22cryptonote: fix reuse of non default tx data when relayingmoneromooo-monero2-1/+3
An automatic tx variable is initialized properly on the first run through the loop, but not the second. Moving the variable inside the loop ensures the ctor is called again to init it.
2020-04-22add another seed nodeGingeropolous1-0/+2
node is funded by random people and managed by me. currently functioning as public node at uwillrunanodesoon.moneroworld.com
2020-04-22simplewallet: report timestamp based expected unlock time on balancemoneromooo-monero5-24/+52
2020-04-22Add erciccione's seed nodeerciccione1-0/+1
2020-04-21p2p: startup speedup, init seed nodes on first 'connect_to_seed()'xiphon2-111/+139
2020-04-21p2p: add seed node.guy1-0/+1
2020-04-20cryptonote_core: skip dns checkpoints on startup if not enforcedxiphon2-4/+5
2020-04-15bootstrap_daemon: fix missing virtual destructor and lambda capture (clang ↵xiphon2-1/+3
warning)
2020-04-15Allow wallet2.h to run in WebAssemblywoodser9-158/+251
- Add abstract_http_client.h which http_client.h extends. - Replace simple_http_client with abstract_http_client in wallet2, message_store, message_transporter, and node_rpc_proxy. - Import and export wallet data in wallet2. - Use #if defined __EMSCRIPTEN__ directives to skip incompatible code.
2020-04-15use memwipe on secret k/alpha valuesmoneromooo-monero5-10/+27
Reported by UkoeHB_ and sarang
2020-04-14Bulletproofs: verification speedupSarang Noether3-8/+25
2020-04-14simplewallet: add sweep_account commandmoneromooo-monero2-8/+37
Expects an account number, then the usual sweep_all options Useful to move monero that was accidentally sent to a subaddress with a very large account index.
2020-04-11Add byte_stream for zero-copy serialization, and add support in ZMQ-JSON.Lee Clagett7-162/+161
2020-04-10simplewallet : missing function block separatorSumo Gr1-0/+1
2020-04-08simplewallet: fix strings (show_transfers & export_transfers)sumogr1-4/+4
2020-04-08Add timelock verification on devicecslashm8-2/+104
2020-04-07simplewallet: new "address one-off <major> <minor>" commandmoneromooo-monero3-5/+33
2020-04-03Use byte_slice for sending zmq messages - removes data copy within zmqLee Clagett8-22/+75
2020-04-02wallet_api: checkUpdate - optional version and buildtag paramsxiphon2-7/+19
2020-04-01Hash domain separationSarang Noether9-34/+34
2020-03-31cryptonote_basic: drop unused verification_context::m_not_rct fieldxiphon5-12/+0
2020-03-31p2p: fix frequent weak_ptr exception on connectionmoneromooo-monero1-4/+6
When a handshake fails, it can fail due to timeout or destroyed connection, in which case the connection will be, or already is, closed, and we don't want to do it twice. Additionally, when closing a connection directly from the top level code, ensure the connection is gone from the m_connects list so it won't be used again. AFAICT this is now clean in netstat, /proc/PID/fd and print_cn. This fixes a noisy (but harmless) exception.
2020-03-30Always reject duplicate key-images from second txidLee Clagett2-12/+16
2020-03-30Allow unrestricted rpc calls to get full txpool infoLee Clagett3-13/+20
2020-03-29daemon: fix print_net_stats RPC callsmoneromooo-monero1-2/+2
2020-03-28simplewallet: warn about correlations if print-ring-members is not setmoneromooo-monero2-14/+18
The warning about spending more than one output with similar creation time was skipped if print-ring-members was not set, and it defaults to false, which means most people probably aren't getting this warning if they spend correlated outputs. Reported by SeventhAlpaca.
2020-03-27p2p: add another seed nodemoneromooo-monero1-0/+1
Node from syksy, administered by mooo
2020-03-26Adding Dandelion++ support to public networks:Lee Clagett20-130/+432
- New flag in NOTIFY_NEW_TRANSACTION to indicate stem mode - Stem loops detected in tx_pool.cpp - Embargo timeout for a blackhole attack during stem phase
2020-03-22protocol: request txpool contents when syncedmoneromooo-monero7-0/+143
A newly synced Alice sends a (typically quite small) list of txids in the local tpxool to a random peer Bob, who then uses the existing tx relay system to send Alice any tx in his txpool which is not in the list Alice sent
2020-03-21Daemon: Print estimates for time until fully syncedrbrunner74-12/+199
2020-03-20p2p: remove old debug commandsAaron Hook11-326/+1
2020-03-20p2p: do not add recently failed addresses to the peerlistmoneromooo-monero3-7/+17
2020-03-19Fixing static_asserts in ZMQ JSONLee Clagett1-3/+2
2020-03-14Correct key image check in tx_poolLee Clagett1-16/+7
2020-03-14workaround for GetObject windows.h macro and rapidjson conflictxiphon1-1/+1
2020-03-12core: move the LockedTXN class out of txpool so it may be reusedmoneromooo-monero2-30/+65
for example, in the RPC server
2020-03-12rpc: add --rpc-payment-allow-free-loopbackmoneromooo-monero2-1/+12
This allows RPC coming from the loopback interface to not have to pay for service. This makes it possible to run an externally accessible RPC server for payment while also having a local RPC server that can be run unrestricted and payment free.
2020-03-12db_lmdb: fix race crash using a stale cursormoneromooo-monero1-0/+1
If a db resize happened, the txpool meta cursor might be stale, and was not being renewed when necessary. It would cause this SEGSEGV: in mdb_cursor_set () in mdb_cursor_get () in cryptonote::BlockchainLMDB::get_txpool_tx_blob(crypto::hash const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, cryptonote::relay_category) const () in cryptonote::tx_memory_pool::get_transaction(crypto::hash const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, cryptonote::relay_category) const () in cryptonote::t_cryptonote_protocol_handler<cryptonote::core>::handle_notify_new_fluffy_block(int, epee::misc_utils::struct_init<cryptonote::NOTIFY_NEW_FLUFFY_BLOCK::request_t>&, cryptonote::cryptonote_connection_context&) ()
2020-03-10Fix receive order leakage with tx fluffingLee Clagett1-0/+3
2020-03-09Reduce template bloat in hex->bin for ZMQ jsonLee Clagett2-16/+26
2020-03-09Move hex->bin conversion to monero copyright files and with less includesLee Clagett2-3/+3
2020-03-07p2p: plug tor to clearnet association vectorAaron Hook1-8/+6
During the handshake for an incoming connection, the peer id is checked against the local node's peer id only for the specific zone of the incoming peer, in order to avoid linking public addresses to tor addresses: https://github.com/monero-project/monero/blob/5d7ae2d2791c0244a221872a7ac62627abb81896/src/p2p/net_node.inl#L2343 However, on handshakes for outgoing connections, all zones are checked: https://github.com/monero-project/monero/blob/5d7ae2d2791c0244a221872a7ac62627abb81896/src/p2p/net_node.inl#L1064 If an attacker wanted to link a specific tor node to a public node, they could potentially connect to as many public nodes as possible, get themselves added to the peer whitelist, maybe stuff some more attacker-owned addresses into the greylist, then disconnect, and for any future incoming connections, respond with the tor node's id in an attempt to link the public/tor addresses.
2020-03-07wallet2: remember daemon address overrides when loading a new walletmoneromooo-monero2-2/+26
2020-03-07Added logging for dropped local txes with no i2p/tor connectionsLee Clagett1-4/+17
2020-03-05Various improvements to the ZMQ JSON-RPC handling:Lee Clagett9-1006/+781
- Finding handling function in ZMQ JSON-RPC now uses binary search - Temporary `std::vector`s in JSON output now use `epee::span` to prevent allocations. - Binary -> hex in JSON output no longer allocates temporary buffer - C++ structs -> JSON skips intermediate DOM creation, and instead write directly to an output stream.
2020-03-01device: Ledger - fix wide char hidapi error string conversionxiphon1-2/+14
2020-02-28daemon: auto public nodes - cache and prioritize most stable nodesxiphon7-43/+304
2020-02-27blockchain_db: faster fetching of consecutive txesmoneromooo-monero5-30/+121
Useful for wallet refresh or node sync
2020-02-24daemon: if no banned IPs print somethingsumogr1-3/+7
2020-02-19cryptonote_core: skip block notify on blockchain switching rollbackxiphon2-10/+20
2020-02-17remove empty statementsInterchained6-9/+9
Cleaning up a little around the code base.
2020-02-17rpc: Add check for too old timestamps in payment signatures.Guillaume Le Vaillant1-0/+5
2020-02-17simplewallet: fix smart mining not starting after first setupmoneromooo-monero1-2/+10
Also avoid rewriting the wallet if the setting is already was we need
2020-02-12tx_pool: catch theoretical error in get_block_rewardmoneromooo-monero1-1/+5
Coverity 196626
2020-02-12threadpool: lock mutex in createmoneromooo-monero1-0/+1
In some contrived case, it might theoretically be the case that destroy is called from another thread, which would modify the threads array from two threads. Coverity 208372
2020-02-11wallet2_api: wallet recovery - seed offset passphrase supportxiphon5-6/+14
2020-02-10core: mention time being off in hash rate changes messagemoneromooo-monero1-1/+1
2020-02-08rpc: fix print_pool_sh not finding local txesmoneromooo-monero1-1/+4
2020-02-08device_ledger: include status code name in error messagexiphon2-3/+111
2020-02-07wallet2: mention --daemon-ssl-allow-any-cert in --proxy error msgxiphon1-0/+1
2020-02-06miner: use verification mode for low diff one block nonce searchesmoneromooo-monero1-1/+1
This avoids lengthy init times when testing
2020-01-31p2p: fix spurious warning when we're connected to at last one seedmoneromooo-monero1-2/+8
2020-01-29p2p: remove obsolete local time in handshakemoneromooo-monero2-5/+0
Also removes a potential fingerprinting vector
2020-01-29p2p: avoid sending the same peer list over and overmoneromooo-monero3-4/+17
Nodes remember which connections have been sent which peer addresses and won't send it again. This causes more addresses to be sent as the connection lifetime grows, since there is no duplication anymore, which increases the diffusion speed of peer addresses. The whole white list is now considered for sending, not just the most recent seen peers. This further hardens against topology discovery, though it will more readily send peers that have been last seen earlier than it otherwise would. While this does save a fair amount of net bandwidth, it makes heavy use of std::set lookups, which does bring network_address::less up the profile, though not too aggressively.
2020-01-26p2p: remove backward compatible peer listmoneromooo-monero1-58/+2
2020-01-26p2p: simplify last_seen serialization now we have optional storesmoneromooo-monero1-2/+1
2020-01-26cryptonote_protocol: omit top 64 bits of difficulty when 0moneromooo-monero1-2/+8
2020-01-26p2p: remove obsolete local time from TIMED_SYNCmoneromooo-monero3-8/+4
2020-01-26network: log traffic and add a simple traffic analysis scriptmoneromooo-monero2-4/+20
2020-01-26wallet: do not split integrated addresses in address book apimoneromooo-monero6-161/+71
2020-01-25wallet2_api: implement estimateTransactionFeexiphon5-14/+45
2020-01-24wallet2: fix store-tx-info loadingmoneromooo-monero1-3/+12
The backward compatibility code was always setting it to 1 in modern wallets since store_tx_keys was not present and thus assumed to be 1 by default. Reported by SeventhAlpaca
2020-01-18net: fix incorrect less operator for top/i2p addressesAaron Hook2-2/+4
2020-01-17[randomx] Add missing randomx_vm_set_cache()cohcho1-0/+4
2020-01-16wallet2: reject zero keys in json inputmoneromooo-monero1-0/+4
Because the user might do this for reasons unknown. Values beyond l-1 will be reduced, so are accepted. Reported by who-biz.
2020-01-14wallet: reroll fake outs selection on local tx_sanity_check failurexiphon5-12/+59
2020-01-11Wallet: Distingush amounts for a single subaddressTadeas Moravec4-2/+38
Adding a new `amounts` field ot the output of `get_transfers` RPC method. This field specifies individual payments made to a single subaddress in a single transaction, e.g., made by this command: transfer <addr1> <amount1> <addr1> <amount2>
2020-01-10Daemon: Guard against reporting "synchronized" too earlyrbrunner71-1/+1
The added condition "hshd.current_height >= target" guards against reporting "synchronized" too early in the special situation that the very first peer sending us data is synced to a lower height than ourselves.
2020-01-09ringdb: use a different iv for key and data in rings tablemoneromooo-monero1-18/+37
This is technically a record encrypted in two pieces, so the iv needs to be different. Some backward compatibility is added to read data written by existing code, but new data is written with the new code.
2020-01-09simplewallet: reword mixin in user message in terms of ring sizemoneromooo-monero1-1/+1
2020-01-09wallet2: do not remove known rings when a tx failsmoneromooo-monero1-1/+0
Even if it fails, the ring composition is known to a potential adversary, and so we should reuse the same ring next time
2020-01-09Fix check_fee() discrepancy.UkoeHB1-2/+2
M100 = max{300kb, min{100block_median, m_long_term_effective_median_block_weight}} not M100 = max{300kb, m_long_term_effective_median_block_weight} Fix base reward in get_dynamic_base_fee_estimate(). get_dynamic_base_fee_estimate() should match check_fee() Fee is calculated based on block reward, and the reward penalty takes into account 0.5*max_block_weight (both before and after HF_VERSION_EFFECTIVE_SHORT_TERM_MEDIAN_IN_PENALTY). Moved median calculation according to best practice of 'keep definitions close to where they are used'.
2020-01-07p2p: fix off by one adding fallback peersmoneromooo-monero1-2/+2
The code would ignore the first one to be added
2020-01-03p2p: fix adding wrong indices to the filtered peer listmoneromooo-monero1-1/+1
2019-12-31wallet: allow message sign/verify for subaddressesmoneromooo-monero5-10/+41
2019-12-30wallet: fix exceptions getting the hash of a pruned txmoneromooo-monero4-13/+13
2019-12-20rpc: fill miner_tx_hash againmoneromooo-monero1-0/+1
It was removed to save duplicated generation time, but it can be copied from another instance instead
2019-12-17p2p: drop the peerlist dump to TRACEmoneromooo-monero1-1/+1
It's spammy
2019-12-17wallet2: guard against race with multiple decrypt_keys usersmoneromooo-monero2-0/+9
If more than one thread wants to make sure of the spend secret key, then we decrypt on the first caller and reencrypt on the last caller, otherwise we could use an invalid secret key.
2019-12-16rpc: drop the obsolete and wrong "unpruned size" logmoneromooo-monero1-6/+4
Since we now get pruned data in the first place, the "unpruned" data size will in fact be the pruned data size, leading to confusion
2019-12-16wallet-cli/rpc: allow sweep_all to use outputs in all subaddresses within an ↵stoffu3-7/+25
account
2019-12-14Corrected message typopalomato1-1/+1
Message was "peer claims higher version that we think" Requested change "peer claims higher version than we think"
2019-12-14wallet2: fix hang in wallet refreshmoneromooo-monero1-1/+1
If the hashes received would move the current blockchain past the stop point, the short history would not be updated, since we do not expect another loop, but the daemon might return earlier hashes, causing the end index to not be enough to reach the threshold and this require another loop, which will download the same hashes and cause an infinite loop.
2019-12-14blockchain: fix flushing txes from the txpoolmoneromooo-monero1-1/+1
2019-12-12print_coinbase_tx_sum now supports 128 bits sumsmoneromooo-monero7-16/+45
The tail emission will bring the total above 64 bits
2019-12-09Silence miner debugmsg spamHoward Chu1-7/+14
Don't try to allocate the dataset repeatedly if it has already failed.
2019-12-09simplewallet: warn on refresh if refresh-from-block-height seems offmoneromooo-monero1-0/+8
2019-12-07simplewallet: set manual refresh mode in rescan_bcmoneromooo-monero1-0/+2
This ensures we get asked for the password if needed
2019-12-05Fix time comparison mathJason Rhinelander1-2/+2
Dividing `dt` here by 1e6 converts it to seconds, but that is clearly wrong since `REQUEST_NEXT_SCHEDULED_SPAN_THRESHOLD_STANDBY` is measured in microseconds. As a result, this if statement was effectively never used.
2019-12-04--disable-ban-rpc option to prevent RPC users from banningnaughtyfox4-1/+9
2019-12-03simplewallet: fix output age display with duplicate heightsmoneromooo-monero2-11/+14
The highlight check was based on height, so would highlight any output at that height, resulting in several matches if a fake out was picked at the same height as the real spend
2019-12-03simplewallet: fix "outputs in same tx" detectormoneromooo-monero1-0/+1
It was comparing source txids, but txids were empty, so all checks triggered
2019-12-02rpc: add bad-blocks to flush_cache RPCmoneromooo-monero10-7/+47
Flushes m_invalid_blocks in Blockchain.
2019-12-01remove unused variable 'ptx' from on_describe_transfer()woodser1-1/+0
2019-11-29daemon: run with -rpc-payment-address and --rpc-restricted-bind-portmoneromooo-monero4-7/+11
2019-11-29simplewallet: fix encrypted payment id note triggering on dummy onesmoneromooo-monero1-12/+20
2019-11-28wallet2: better error when restoring a wallet with the wrong keysmoneromooo-monero1-1/+1
2019-11-27rpc: error out from get_info if the proxied call errors outmoneromooo-monero1-2/+1
Coverity 205410
2019-11-27node_rpc_proxy: init some new rpc payment fields in invalidatemoneromooo-monero1-0/+4
The cache time would take care of these, but it's cleaner that way Coverity 205412
2019-11-27rpc: init a few missing client_info membersmoneromooo-monero1-0/+4
Coverity 205414
2019-11-27rpc: do not propagate exceptions out of a dtormoneromooo-monero1-4/+8
Coverity 205415
2019-11-27rpc: always set the update field in update on sucessmoneromooo-monero1-0/+1
Coverity 205416
2019-11-26download: catch exceptions checking for sizemoneromooo-monero1-5/+9
Happens on at least one windows box
2019-11-25rpc: fix bootstrap RPC payment RPC being made in raw JSON, not JSON RPCmoneromooo-monero1-5/+5
2019-11-25simplewallet: point to "set help" in the lock screen messagemoneromooo-monero1-1/+1
2019-11-25util: allow newlines in string to be splitmoneromooo-monero1-1/+14
2019-11-25updates: fix source code URL on _WIN32selsta1-1/+1
2019-11-22rpc: don't auto fail RPC needing payment in bootstrap modemoneromooo-monero1-1/+5
2019-11-22rpc: add received_timestamp for pool txes in gettransactionsmoneromooo-monero2-1/+6
2019-11-22wallet_rpc_server: add count parameter to create_addressMatt Smith2-7/+33
2019-11-19db_lmdb: guard against non NUL terminated keysmoneromooo-monero1-1/+9
2019-11-19make d2h et al. constant-timeJethro Grassie1-30/+8
2019-11-19wallet: don't issue node rpc proxy requests in '--offline' modexiphon1-0/+1
2019-11-19p2p: don't request flags after closing connectionmoneromooo-monero1-1/+1
2019-11-18Fixed bug in ZMQ JSON-RPC method fieldLee Clagett1-3/+12
2019-11-17Fix #6147 DB corruption from child process overwriteHoward Chu1-1/+6
Don't leave stdout/stderr dangling on a fork.
2019-11-15threadpool: use std::move when taking an element off the queuemoneromooo-monero1-1/+1
It has a std::function, which can have a capture context, and the function runtime might be small
2019-11-15blockchain: speedup fetching pruned contiguous tx blobsmoneromooo-monero5-3/+70
About twice as fast, very roughly
2019-11-14wallet: set non-empty error string on connection failurexiphon1-1/+1
2019-11-14Actually concatenate error strings.Bert Peters1-8/+8
2019-11-14simplewallet: fix restore height warningselsta1-1/+1
2019-11-13Replace memset with memwipe.Bert Peters1-4/+5
2019-11-13perf_timer: fix pause/resume macros dereferencing too muchmoneromooo-monero1-2/+2
2019-11-13simplewallet: noob-friendly help menuwowario4-14/+48
2019-11-12rpc: Only show version string if it matches expected patternNathan Dorfman4-1/+102
2019-11-12daemon: Use rpc for "version" commandNathan Dorfman3-3/+38
2019-11-12blockchain: error out if the builtin hashes data size is wrongmoneromooo-monero1-1/+6
2019-11-11p2p: zero last seen timestamp when inserting a new peermoneromooo-monero1-0/+1
2019-11-10core_tests: reset thread pool between testsmoneromooo-monero2-7/+27
Avoids a DB error (leading to an assert) where a thread uses a read txn previously created with an environment that was since closed and reopened. While this usually works since BlockchainLMDB renews txns if it detects the environment has changed, this will not work if objects end up being allocated at the same address as the previous instance, leading to stale data usage. Thanks hyc for the LMDB debugging.
2019-11-09build: fix IOS, build blockchain_db and rpc, skip wallet_rpc_serverxiphon2-36/+35
2019-11-06wallet_rpc_server: new estimate_tx_size_and_weight RPCmoneromooo-monero5-0/+72
2019-11-05wallet2: don't try to lock an empty filenamemoneromooo-monero1-0/+6
2019-11-05wallet_rpc_server: add tx weight in transfer commands responsesmoneromooo-monero3-7/+18
2019-11-04wallet2: fix pool txes not being flushed when minedmoneromooo-monero1-1/+1
2019-11-04daemon: allow printing N blocks from the end of the chainmoneromooo-monero3-4/+43
It's a very common usage (for my anyway) and avoids the need to get the current height, paste, subtract one, etc
2019-11-04daemon: add +meta print_tx parametermoneromooo-monero3-4/+31
prints size, weight and (if mined) height
2019-11-04blockchain_stats: make it work on pruned blockchainsmoneromooo-monero1-2/+2
It reports the actual size as pruned, however
2019-11-04lmdb: Remove meaningless const qualifier on function typeNathan Dorfman1-2/+2
2019-11-04Change to Tx diffusion (Dandelion++ fluff) instead of floodingLee Clagett13-81/+196
2019-11-02Adding support for hidden (anonymity) txpoolLee Clagett24-279/+631
2019-11-02Merge pull request #6079Riccardo Spagni4-3/+4
e4d1674e8 0.15.0.0 release engineering (Riccardo Spagni)
2019-11-020.15.0.0 release engineeringRiccardo Spagni4-3/+4
2019-11-02simplewallet: plug a timing leakmoneromooo-monero2-10/+31
As reported by Tramèr et al, timing of refresh requests can be used to see whether a password was requested (and thus at least one output received) since this will induce a delay in subsequent calls. To avoid this, we schedule calls at a given time instead of sleeping for a set time (which would make delays additive). To further avoid a scheduled call being during the time in which a password is prompted, the actual scheduled time is now randomized.
2019-11-01Add a --keep-fakechain option to keep fakechain databasesJamesWrigley1-1/+8
This is handy when doing tests that generate a lot of transactions, since that takes time it's preferable to re-use the database for future runs.
2019-11-01wallet: reuse cached height when set after refreshmoneromooo-monero2-0/+11
Refreshing sets cached height, which is otherwise got by calling get_info. Since get_info is called upon needing to display a prompt after a command has finished, it can be used to determine how much time a given command took to run if the cache timeout lapses while the command runs. Refreshing caches the height as a side effect, so get_info will never be called as a result of displaying a prompt after refreshing (and potentially leaking how much time it took to process a set of transactions, therefore leaking whether we got some monero in them).
2019-11-01wallet2: fix is_synced checking target height, not heightmoneromooo-monero1-1/+1
Target height would be appropriate for the daemon, which syncs off other daemons, but the wallet syncs off the daemon it's connected to, and its target is the daemon's current height.
2019-11-01wallet: fix another facet of "did I get some monero" information leakmoneromooo-monero4-15/+50
We get new pool txes before processing any tx, pool or not. This ensures that if we're asked for a password, this does not cause a measurable delay in the txpool query after the last block query.
2019-11-01wallet2: do not send an unnecessary last getblocks.bin call on refreshmoneromooo-monero2-7/+17
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-01simplewallet: add missing inactivity-lock-timeout to set help blurbmoneromooo-monero1-1/+3
2019-11-01simplewallet: do not mention inactivity if a lock was manualmoneromooo-monero1-1/+2
2019-11-01wallet2: do not repeatedly ask for pool txes sent to usmoneromooo-monero1-5/+0
This lets a passive attacker with access to the network link between node and wallet perform traffic analysis to deduce when an idle wallet receives a transaction. Reported by Tramèr et al.
2019-10-31cryptonote: untangle dependency from miner to blockchainmoneromooo-monero5-12/+18
It causes link errors at least on mac
2019-10-31cryptonote: untangle dependency from miner to blockchainmoneromooo-monero5-12/+18
It causes link errors at least on mac
2019-10-30daemon: always use bootstrap daemon (if set) in '--no-sync' modexiphon2-3/+6
2019-10-29wallet2: make keys unlocker reentrantmoneromooo-monero2-3/+23
protects against having your keys mangled
2019-10-29blockchain: fix comment wrongly refering to SHA-3 rather than Keccakmoneromooo-monero1-1/+1
2019-10-29daemon: handle printing higher hash ratesmoneromooo-monero1-1/+1
2019-10-29always print peer IDs in the same formatmoneromooo-monero4-13/+11
2019-10-29tx_pool: fix error message assuming incorrectlymoneromooo-monero1-2/+2
2019-10-28daemon: always use bootstrap daemon (if set) in '--no-sync' modexiphon2-3/+6
2019-10-28Updated paper referencesSarang Noether1-24/+22
2019-10-28core: point out when we hit the block rate visibility limitmoneromooo-monero1-2/+3
2019-10-28Minor prover simplificationSarang Noether1-10/+5
2019-10-27blockchain: fix unwanted error when probing the pool for a txmoneromooo-monero1-2/+11
2019-10-27blockchain: fix unwanted error when probing the pool for a txmoneromooo-monero1-2/+11
2019-10-27rpc: base flush_cache request/response on the new base structsmoneromooo-monero1-5/+4
2019-10-27wallet: do not warn if the rpc cost was freemoneromooo-monero1-1/+1
2019-10-27wallet: do not warn if the rpc cost was freemoneromooo-monero1-1/+1
2019-10-26rpc: fix PRIx64 build error on some systemsmoneromooo-monero1-1/+1
2019-10-25rpc: add a flush_cache RPCmoneromooo-monero10-1/+97
This allows flushing internal caches (for now, the bad tx cache, which will allow debugging a stuck monerod after it has failed to verify a transaction in a block, since it would otherwise not try again, making subsequent log changes pointless)
2019-10-25tx_pool: fix divide by 0 in logmoneromooo-monero1-1/+1
Coverity 205394
2019-10-25simplewallet: remove remaining payment id dead codemoneromooo-monero1-26/+0
pointed out by coverity
2019-10-25device: bounds checking in Ledger send_secret/receive_secretxiphon1-0/+4
2019-10-25net: link with libzmqmoneromooo-monero1-1/+1
2019-10-25simplewallet: add public_nodes commandmoneromooo-monero7-22/+99
Lists nodes exposing their RPC port for public use
2019-10-25daemon, wallet: new pay for RPC use systemmoneromooo-monero41-789/+3452
Daemons intended for public use can be set up to require payment in the form of hashes in exchange for RPC service. This enables public daemons to receive payment for their work over a large number of calls. This system behaves similarly to a pool, so payment takes the form of valid blocks every so often, yielding a large one off payment, rather than constant micropayments. This system can also be used by third parties as a "paywall" layer, where users of a service can pay for use by mining Monero to the service provider's address. An example of this for web site access is Primo, a Monero mining based website "paywall": https://github.com/selene-kovri/primo This has some advantages: - incentive to run a node providing RPC services, thereby promoting the availability of third party nodes for those who can't run their own - incentive to run your own node instead of using a third party's, thereby promoting decentralization - decentralized: payment is done between a client and server, with no third party needed - private: since the system is "pay as you go", you don't need to identify yourself to claim a long lived balance - no payment occurs on the blockchain, so there is no extra transactional load - one may mine with a beefy server, and use those credits from a phone, by reusing the client ID (at the cost of some privacy) - no barrier to entry: anyone may run a RPC node, and your expected revenue depends on how much work you do - Sybil resistant: if you run 1000 idle RPC nodes, you don't magically get more revenue - no large credit balance maintained on servers, so they have no incentive to exit scam - you can use any/many node(s), since there's little cost in switching servers - market based prices: competition between servers to lower costs - incentive for a distributed third party node system: if some public nodes are overused/slow, traffic can move to others - increases network security - helps counteract mining pools' share of the network hash rate - zero incentive for a payer to "double spend" since a reorg does not give any money back to the miner And some disadvantages: - low power clients will have difficulty mining (but one can optionally mine in advance and/or with a faster machine) - payment is "random", so a server might go a long time without a block before getting one - a public node's overall expected payment may be small Public nodes are expected to compete to find a suitable level for cost of service. The daemon can be set up this way to require payment for RPC services: monerod --rpc-payment-address 4xxxxxx \ --rpc-payment-credits 250 --rpc-payment-difficulty 1000 These values are an example only. The --rpc-payment-difficulty switch selects how hard each "share" should be, similar to a mining pool. The higher the difficulty, the fewer shares a client will find. The --rpc-payment-credits switch selects how many credits are awarded for each share a client finds. Considering both options, clients will be awarded credits/difficulty credits for every hash they calculate. For example, in the command line above, 0.25 credits per hash. A client mining at 100 H/s will therefore get an average of 25 credits per second. For reference, in the current implementation, a credit is enough to sync 20 blocks, so a 100 H/s client that's just starting to use Monero and uses this daemon will be able to sync 500 blocks per second. The wallet can be set to automatically mine if connected to a daemon which requires payment for RPC usage. It will try to keep a balance of 50000 credits, stopping mining when it's at this level, and starting again as credits are spent. With the example above, a new client will mine this much credits in about half an hour, and this target is enough to sync 500000 blocks (currently about a third of the monero blockchain). There are three new settings in the wallet: - credits-target: this is the amount of credits a wallet will try to reach before stopping mining. The default of 0 means 50000 credits. - auto-mine-for-rpc-payment-threshold: this controls the minimum credit rate which the wallet considers worth mining for. If the daemon credits less than this ratio, the wallet will consider mining to be not worth it. In the example above, the rate is 0.25 - persistent-rpc-client-id: if set, this allows the wallet to reuse a client id across runs. This means a public node can tell a wallet that's connecting is the same as one that connected previously, but allows a wallet to keep their credit balance from one run to the other. Since the wallet only mines to keep a small credit balance, this is not normally worth doing. However, someone may want to mine on a fast server, and use that credit balance on a low power device such as a phone. If left unset, a new client ID is generated at each wallet start, for privacy reasons. To mine and use a credit balance on two different devices, you can use the --rpc-client-secret-key switch. A wallet's client secret key can be found using the new rpc_payments command in the wallet. Note: anyone knowing your RPC client secret key is able to use your credit balance. The wallet has a few new commands too: - start_mining_for_rpc: start mining to acquire more credits, regardless of the auto mining settings - stop_mining_for_rpc: stop mining to acquire more credits - rpc_payments: display information about current credits with the currently selected daemon The node has an extra command: - rpc_payments: display information about clients and their balances The node will forget about any balance for clients which have been inactive for 6 months. Balances carry over on node restart.
2019-10-24Change monerod --proxy to --tx-proxyLee Clagett3-14/+14
2019-10-24changed 'batttery' to 'battery'Jake Hemmerle2-3/+3
2019-10-24rpc: Include tag in get_info version stringNathan Dorfman1-1/+1