summaryrefslogtreecommitdiff
path: root/src/common
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #8676luigi11112023-01-111-0/+65
|\ | | | | | | 29208a3 Cache successful erRctNonSemanticsSimple calls (SChernykh)
| * Cache successful `verRctNonSemanticsSimple` callsSChernykh2022-12-201-0/+65
| |
* | Merge pull request #8683luigi11112023-01-112-0/+3
|\ \ | | | | | | | | | cbc297a common: add missing includes (selsta)
| * | common: add missing includesselsta2022-12-182-0/+3
| |/
* / DNSResolver: fix not handling hostnames without dot characters [release]Jeffrey Ryan2022-11-212-24/+0
|/ | | | Unrelated, but similar code-wise to #8643. There is a check in `DNSResolver` which automatically fails to resolve hostnames which do not contain the `.` character. This PR removes that check.
* Second thread pool for IOSChernykh2022-09-202-2/+6
|
* common: update sha256sum to use OpenSSL 3.0 APIJeffrey Ryan2022-05-182-13/+26
| | | | | | | | | As of OpenSSL 3.0, `SHA256_Init`, `SHA256_Update`, and `SHA256_Final` are deprectaed in favor of the higher-level `EVP_*` class of functions. This causes compiler warnings, and sooner or later, will cause build errors as these functions are excluded from distro headers. Also add some documentation.
* Merge functionality of misc_os_dependent into time_helper.hJeffrey2022-04-182-2/+2
| | | | | | | | | | | | | | Actions: 1. Remove unused functions from misc_os_dependent.h 2. Move three remaining functions, get_gmt_time, get_ns_count, and get_tick_count into time_helper.h 3. Remove unused functions from time_helper.h 4. Refactor get_ns_count and get_internet_time_str and get_time_interval_string 5. Remove/add includes as needed Relevant commits on the old PR: a9fbe52b02ffab451e90c977459fea4642731cd1 9a59b131c4ed1be8afe238fff3780fe203c65a46 7fa9e2817df9b9ef3f0290f7f86357939829e588
* CMake: Add missing headers via monero_find_all_headers macromj-xmr2022-04-061-30/+1
|
* Copyright: Update to 2022mj-xmr2022-03-0448-48/+61
|
* download: fix leakmoneromooo-monero2021-10-101-1/+9
| | | | A shared_ptr as by value capture will keep the object alive
* Merge pull request #7773 from selsta/unboundluigi11112021-09-091-1/+1
|\ | | | | external: remove unbound submodule
| * external: remove unbound submoduleselsta2021-09-031-1/+1
| |
* | Daemon: Update average block size tablerbrunner72021-07-271-2/+6
|/
* Merge pull request #7002luigi11112021-04-161-0/+4
|\ | | | | | | 673c6d2 Reduce compilation time of epee/portable_storage_template_helper.h (mj-xmr)
| * Reduce compilation time of epee/portable_storage_template_helper.hmj-xmr2021-03-281-0/+4
| |
* | Merge pull request #7088luigi11112021-03-292-6/+44
|\ \ | |/ |/| | | 386ef03 Add TLSA support to DNSSEC fetching (Lee Clagett)
| * Add TLSA support to DNSSEC fetchingLee Clagett2020-10-072-6/+44
| |
* | Merge pull request #6900luigi11112021-02-142-42/+25
|\ \ | | | | | | | | | aaa3289 add more updates domains and make the voting generic, not just 2/3 (moneromooo-monero)
| * | add more updates domains and make the voting generic, not just 2/3moneromooo-monero2020-10-152-42/+25
| | |
* | | restrict public node checks a littlemoneromooo-monero2020-12-222-1/+11
| |/ |/| | | | | | | do not include blocked hosts in peer lists or public node lists by default, warn about no https on clearnet and about untrusted peers likely being spies
* | Merge pull request #6923Alexander Blair2020-12-011-3/+3
|\ \ | | | | | | | | | cc034fe0c util: fix escaping more than one ?* in glob_to_regex (moneromooo-monero)
| * | util: fix escaping more than one ?* in glob_to_regexmoneromooo-monero2020-10-201-3/+3
| |/
* / Make Blockchain::get_fee_quantization_mask() compile timeSChernykh2020-10-201-0/+26
|/ | | | This also removes potential thread safety bug in that function.
* Merge pull request #6757luigi11112020-09-033-9/+14
|\ | | | | | | 6a37da8 threadpool: guard against exceptions in jobs, and armour plating (moneromooo-monero)
| * threadpool: guard against exceptions in jobs, and armour platingmoneromooo-monero2020-09-013-9/+14
| | | | | | | | | | Those would, if uncaught, exit run and leave the waiter to wait indefinitely for the number of active jobs to reach 0
* | Merge pull request #6689Alexander Blair2020-08-161-1/+1
|\ \ | | | | | | | | | | | | afd002c31 daemon: print sampling time in print_net_stats (moneromooo-monero) ec7bba079 util: fix kilo prefix typo (K instead of k) (moneromooo-monero)
| * | util: fix kilo prefix typo (K instead of k)moneromooo-monero2020-06-251-1/+1
| | |
* | | Merge pull request #6679Alexander Blair2020-08-161-0/+2
|\ \ \ | | | | | | | | | | | | 2f1ad3b3d updates: mac gui .tar.bz2 -> .dmg (selsta)
| * | | updates: mac gui .tar.bz2 -> .dmgselsta2020-06-221-0/+2
| |/ /
* | / Adding ZMQ/Pub support for txpool_add and chain_main eventsLee Clagett2020-05-042-2/+7
| |/ |/|
* | Merge pull request #6512Alexander Blair2020-07-1935-35/+35
|\ \ | |/ |/| | | 5ef0607da Update copyright year to 2020 (SomaticFanatic)
| * Update copyright year to 2020SomaticFanatic2020-05-0635-35/+35
| | | | | | | | Update copyright year to 2020
* | easylogging++: sanitize log payloadmoneromooo-monero2020-05-242-1/+116
|/ | | | | | Some of it might be coming from untrusted sources Reported by itsunixiknowthis
* Merge pull request #6278luigi11112020-04-212-9/+108
|\ | | | | | | 387fd66 Daemon: Print estimates for time until fully synced (rbrunner7)
| * Daemon: Print estimates for time until fully syncedrbrunner72020-03-212-9/+108
| |
* | Merge pull request #6336luigi11112020-03-311-0/+1
|\ \ | |/ |/| | | | | | | 760ecf2 console_handler: do not let exception past the dor (moneromooo-monero) 09c8111 threadpool: lock mutex in create (moneromooo-monero) e377977 tx_pool: catch theoretical error in get_block_reward (moneromooo-monero)
| * threadpool: lock mutex in createmoneromooo-monero2020-02-121-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
* | Merge pull request #6058Alexander Blair2020-02-281-1/+14
|\ \ | |/ |/| | | | | 88b82bef simplewallet: point to "set help" in the lock screen message (moneromooo-monero) f19c9f23 util: allow newlines in string to be split (moneromooo-monero)
| * util: allow newlines in string to be splitmoneromooo-monero2019-11-251-1/+14
| |
* | Merge pull request #6183Alexander Blair2020-02-061-5/+9
|\ \ | | | | | | | | | 3813a992 download: catch exceptions checking for size (moneromooo-monero)
| * | download: catch exceptions checking for sizemoneromooo-monero2019-11-261-5/+9
| |/ | | | | | | Happens on at least one windows box
* | Merge pull request #6178Alexander Blair2020-02-061-1/+1
|\ \ | | | | | | | | | 7ac7d5d3 updates: fix source code URL on _WIN32 (selsta)
| * | updates: fix source code URL on _WIN32selsta2019-11-251-1/+1
| |/
* | Merge pull request #6128Alexander Blair2020-01-241-2/+2
|\ \ | | | | | | | | | 9fe8a76c perf_timer: fix pause/resume macros dereferencing too much (moneromooo-monero)
| * | perf_timer: fix pause/resume macros dereferencing too muchmoneromooo-monero2019-11-131-2/+2
| |/
* | Merge pull request #6141Alexander Blair2020-01-161-1/+1
|\ \ | | | | | | | | | b9b5c473 threadpool: use std::move when taking an element off the queue (moneromooo-monero)
| * | threadpool: use std::move when taking an element off the queuemoneromooo-monero2019-11-151-1/+1
| |/ | | | | | | | | It has a std::function, which can have a capture context, and the function runtime might be small
* / core_tests: reset thread pool between testsmoneromooo-monero2019-11-102-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.
* daemon, wallet: new pay for RPC use systemmoneromooo-monero2019-10-251-6/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.