aboutsummaryrefslogtreecommitdiff
path: root/tests (unfollow)
AgeCommit message (Collapse)AuthorFilesLines
2022-09-12wallet2: check wallet compatibility with daemon's hard fork versionj-berman1-1/+1
2022-09-07wallet2: better test on whether to allow output importmoneromooo-monero1-0/+9
Being offline is not a good enough heuristic, so we keep track of whether the wallet ever refreshed from a daemon, which is a lot better, and probably the best we can do without manual user designation (which would break existing cold wallet setups till the user designates those wallets)
2022-09-07allow exporting outputs in chunksmoneromooo-monero3-15/+41
this will make it easier huge wallets to do so without hitting random limits (eg, max string size in node).
2022-09-06wallet2: fixes for export/import output flowj-berman2-18/+67
- only allow offline wallets to import outputs - don't import empty outputs - export subaddress indexes when exporting outputs
2022-09-01multisig: fix #8537 seed restore (suggestions by @UkoeHB)j-berman1-1/+1
- spend secret key is no longer the sum of multisig key shares; no need to check that is the case upon restore. - restoring a multisig wallet from multisig info means that the wallet must have already completed all setup rounds. Upon restore, set the number of rounds completed accordingly.
2022-08-05feat(trezor): add HF15 support, BP+Dusan Klinec3-17/+96
- BP+ support added for Trezor - old Trezor firmware version support removed, code cleanup
2022-07-21Publish submitted txs via zmqj-berman4-5/+25
2022-07-13derive multisig tx secret keys from an entropy source plus the tx inputs' ↵koe1-2/+3
key images
2022-07-08address PR commentsj-berman1-5/+5
2022-07-05connection: add segfault and deadlocks demoanon1-2/+252
2022-06-30multisig: fix critical vulnerabilities in signinganon11-124/+114
2022-05-18Don't exclusively drop tor/i2p outgoing cxns in idle loopj-berman1-2/+2
2022-05-18unit_tests: add more sha256sum test casesJeffrey Ryan5-0/+42
2022-05-17disable multisig by defaultmoneromooo-monero1-5/+5
There are vulnerabilities in multisig protocol if the parties do not trust each other, and while there is a patch for it, it has not been throroughly reviewed yet, so it is felt safer to disable multisig by default for now. If all parties in a multisig setup trust each other, then it is safe to enable multisig.
2022-04-29More tests for view tagsSChernykh1-0/+14
P2Pool can create transactions with more than 128 outputs, which make output_index's varint larger than 1 byte. Added this test case.
2022-04-29multisig: add post-kex verification round to check that all participants ↵koe3-47/+61
have completed the multisig address
2022-04-29Update copyright to 2022 for Hardfork filesAkrit7-7/+7
Update Makefile and LICENSE
2022-04-21Preserve commitment format inside transactionsLuke Parker1-2/+0
2022-04-18Bump ring size to 16 for v15 & remove set default in wallet clij-berman4-13/+13
2022-04-18Add Include statementsJeffrey1-0/+1
2022-04-18Add view tags to outputs to reduce wallet scanning timej-berman14-20/+603
Implements view tags as proposed by @UkoeHB in MRL issue https://github.com/monero-project/research-lab/issues/73 At tx construction, the sender adds a 1-byte view tag to each output. The view tag is derived from the sender-receiver shared secret. When scanning for outputs, the receiver can check the view tag for a match, in order to reduce scanning time. When the view tag does not match, the wallet avoids the more expensive EC operations when deriving the output public key using the shared secret.
2022-04-10Fee changes from ArticMinemoneromooo-monero3-4/+192
https://github.com/ArticMine/Monero-Documents/blob/master/MoneroScaling2021-02.pdf with a change to use 1.7 instead of 2.0 for the max long term increase rate
2022-04-10epee: allow copying a rolling_median_t objectmoneromooo-monero1-0/+18
2022-04-06tests: integrated_address: remove missing payment id assertionreemuru1-3/+1
The integrated address functional test fails in the workflows due to an assertion for missing payment id that is no longer needed. Remove the assertion and update the assertion count. Fixes 7dcfccb: ("wallet_rpc_server: fix make_integrated_address with no payment id")
2022-04-05store outPk/8 in the tx for speedmoneromooo-monero1-0/+2
It avoids dividing by 8 when deserializing a tx, which is a slow operation, and multiplies by 8 when verifying and extracing the amount, which is much faster as well as less frequent
2022-04-05plug bulletproofs plus into consensusmoneromooo-monero13-24/+645
2022-04-04Bulletproofs+Sarang Noether5-0/+292
2022-03-30Remove dead code from parserse_base_utils and fix unit testsJeffrey1-67/+74
* Remove `match_string()`, `match_number()`, and `match_word()` * Remove `match_word_with_extrasymb()` and `match_word_til_equal_mark()` * Adapt unit test for `match_number()` to `match_number2()` * Adapt unit test for `match_string()` to `match_string2()` Note: the unit tests were testing for the old version of the functions, and the interfaces for these functions changed slightly, so I had to also edit the tests. As of writing, this PR has no merge conflicts with #8211 Additional changes during review: * Explicitly set up is_[float/signed]_val to be changed before each call * Structify the tests and fix uninitialized variables
2022-03-04Compil. time: cryptonote_core minus portable_storage headermj-xmr1-0/+2
2022-03-04Copyright: Update to 2022mj-xmr228-228/+259
2022-02-22multisig key exchange update and refactorkoe4-120/+271
2022-01-31Balance includes unconfirmed transfers to selfwoodser1-5/+2
2022-01-25fix ge_p3_is_point_at_infinity(), which is evaluating field elements that ↵koe4-0/+64
haven't been reduced by the field order
2021-12-14functional_tests: update uri test with external pidselsta1-9/+5
2021-11-01tx_pool: full tx revalidation on fork boundariesmoneromooo-monero1-5/+10
avoids mining txes after a fork that are invalid by this fork's rules, but were valid by the previous fork rules at the time they were verified and added to the txpool.
2021-09-20node_server: fix race conditionanon1-36/+77
2021-09-20node_server: add race condition demoanon1-0/+260
2021-09-12Mac: UT node server fix IP localhost by aliasingmj-xmr1-0/+3
2021-09-08unit_tests: fix use after free in serialization testmoneromooo-monero1-2/+4
2021-08-19core_tests: remove unused typedef, fix warningselsta1-1/+0
2021-08-05p2p: remove blocked addresses/hosts from peerlistmoneromooo-monero1-0/+1
2021-08-03EasyLogging++: new anti-UB test and propagating exceptionmj-xmr1-0/+7
2021-07-28unit_tests: fix broken testsanon2-8/+8
boosted_tcp_server: check condition before sleep too cryptonote_protocol_handler: each instance of BlockchainLMDB requires separate thread due to private thread local fields
2021-07-06EasyLogging++: Add UTests, that protect against regressionsmj-xmr1-0/+13
2021-06-11unit_tests: check for ge_frombytes_vartime failuremoneromooo-monero2-4/+4
CID 1446559
2021-05-14Doc: funtional_tests add new mining env vars and how to use themmj-xmr1-1/+20
2021-05-11Warnings: unused var in core_tests:chaingen.hmj-xmr1-1/+1
2021-04-28clang: fix -Wpessimizing-move warningselsta1-1/+2
2021-04-27cmake: set 3.5 as minimum versionselsta2-2/+2
2021-04-27Tests: Mining test uses a parametric path for finding the calculation appmj-xmr3-41/+66
MINING_SILENT and MINING_NO_MEASUREMENT env vars
2021-04-27clang: fix -Wrange-loop-analysis warningsselsta1-1/+1
2021-04-16Split epee/string_tools.h and encapsulate boost::lexical_castmj-xmr2-0/+2
2021-04-16Revert "Merge pull request #7136"luigi11115-121/+27
This reverts commit 63c7ca07fba2f063c760f786a986fb3e02fb040e, reversing changes made to 2218e23e84a89e9a1e4c0be5d50f891ab836754f.
2021-04-08unit_tests: fix boost 1.58 compatibilityanon1-1/+1
2021-04-05Tests: Fix test node_server.bind_same_p2p_port from randomly crashingmj-xmr1-0/+12
2021-03-30[CI] Adaptive mining timeout, depending on available CPU powermj-xmr5-10/+254
Printing also available RAM. Add comprehensive description.
2021-03-27Warnings: fix ut/levin.cpp missing bracesmj-xmr1-1/+4
2021-03-22cryptonote_protocol_handler: add race condition demoanon1-0/+592
2021-03-20[CI] Use Python3 for funcional tests, instead of Python2mj-xmr1-4/+6
2021-03-12async_protocol_handler_config: add deadlock demoanon1-0/+110
2021-03-05fix serialization being different on macmoneromooo-monero1-1/+1
On Mac, size_t is a distinct type from uint64_t, and some types (in wallet cache as well as cold/hot wallet transfer data) use pairs/containers with size_t as fields. Mac would save those as full size, while other platforms would save them as varints. Might apply to other platforms where the types are distinct. There's a nasty hack for backward compatibility, which can go after a couple forks.
2021-02-23functional_tests: hide check_missing_rpc_methods behind requests checkmoneromooo-monero1-6/+5
2021-02-19async_protocol_handler_config: add segfault demoanon1-2/+73
2021-02-11Increase timeout for the mining test 4 times (to 240s)mj-xmr1-1/+1
2021-02-09New add_aux_pow RPC to support merge miningmoneromooo-monero1-0/+213
2021-02-09Remove unused variables in monero codebaseKevin Barbour10-13/+2
There are quite a few variables in the code that are no longer (or perhaps never were) in use. These were discovered by enabling compiler warnings for unused variables and cleaning them up. In most cases where the unused variables were the result of a function call the call was left but the variable assignment removed, unless it was obvious that it was a simple getter with no side effects.
2021-02-06Reduce compilation time of epee/portable_storage.hmj-xmr1-0/+1
2021-01-28Remove copies from foreach loops (thanks to Clang)Lee Clagett2-10/+10
2021-01-27unit_tests: fix wipeable_string parse_hexstr test with latest gtestxiphon1-9/+9
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=973196
2021-01-23Improve cryptonote (block and tx) binary read performanceLee Clagett6-26/+82
2021-01-19boosted_tcp_server: add segfault demoanon1-0/+150
2021-01-19Remove payload copy in all outgoing p2p messagesLee Clagett6-43/+127
2021-01-16Remove payload copy in all outgoing p2p messagesLee Clagett5-27/+121
2021-01-03add a max levin packet size by command typemoneromooo-monero3-0/+3
2021-01-01Split fuzz tests during fuzz buildNym Seddon1-11/+16
Only build fuzz tests in a fuzz build, and don't build other tests. Keeps fuzz compilers from instrumenting other tests, which are not fuzzed. Resolves #7232
2020-12-31protocol: more sanity checks in new chain block hashesmoneromooo-monero3-3/+10
2020-12-27protocol: fix false positives dropping peersmoneromooo-monero2-0/+2
it'd trigger on reorgs
2020-12-27Revert "Reject existing claimed blocks in sync mode"luigi11112-2/+0
2020-12-22Command max_bytes moved from dynamic map to static switchLee Clagett1-3/+40
2020-12-20Restrict duplicate keys in epee binary formatLee Clagett2-0/+55
2020-12-17protocol: reject claimed block hashes that already are in the chainmoneromooo-monero2-0/+2
2020-12-17Add aggressive restrictions to pre-handshake p2p buffer limitLee Clagett4-0/+8
2020-12-14Fix byte_stream::put_nLee Clagett1-0/+17
2020-12-14fuzz_tests: add a test for utf8canonicalmoneromooo-monero4-0/+49
2020-12-10protocol: drop origin IP if a block fails to verify in sync modemoneromooo-monero1-9/+11
It would otherwise be possible for a peer to send bad blocks, then disconnect and reconnect again, escaping bans
2020-12-04crypto: fix non zero scalar being 0 after reducingmoneromooo-monero1-551/+540
2020-11-25cryptonote_core: dandelion - use local height or median height if syncingxiphon3-3/+10
2020-11-16Better log message for unusable anon networksHoward Chu1-1/+2
2020-11-03Switch to Dandelion++ fluff mode if no out connections for stem modeLee Clagett1-0/+109
2020-10-28Add RELINK_TARGETS, monero_add_target_no_relink and use ↵mj-xmr15-32/+32
monero_add_executable/monero_add_library where possible (mj-xmr) Add monero_add_minimal_executable and use in tests This is done in order not to have to relink targets, when just an .so changed, but not its interface.
2020-10-22functional_tests: inrease mining timeoutselsta1-1/+1
2020-10-13Change to more efficient allocation strategy in byte_streamLee Clagett1-43/+50
2020-10-13Allow byte_stream->byte_slice conversion to shrink unused buffer spaceLee Clagett1-1/+3
2020-10-12Dandelion++: skip desynced peers in stem phasexiphon1-34/+41
2020-10-10Change epee binary output from std::stringstream to byte_streamLee Clagett7-31/+30
2020-10-03Unit Tests: Remove block reward upper bound size checksTheCharlatan1-18/+0
Tests running after being compiled with `make debug-test` failed with ``` [ FAILED ] block_reward_and_current_block_weight.fails_on_huge_median_size [ FAILED ] block_reward_and_current_block_weight.fails_on_huge_block_weight ``` With the introduction of the patch in https://github.com/monero-project/monero/commit/be82c40703d267184ee07bf7be71002122c86656#diff-1a57d4e6013984c420da98d1adde0eafL113 the assertions checking the weight of the median and current block against a size limit were removed. Since the limit is now enforced by a long divisor and a uint64_t type, checking in a separate test makes little sense, so they are removed here.
2020-09-24functional_tests: rewrite mining code, clearer timeout infoiamamyth1-12/+11
2020-09-24fuzz_tests: fix build error in signature fuzz testmoneromooo-monero1-1/+1
2020-09-04enable CLSAG support for Trezor clientDusan Klinec2-10/+32
2020-09-01threadpool: guard against exceptions in jobs, and armour platingmoneromooo-monero1-20/+20
Those would, if uncaught, exit run and leave the waiter to wait indefinitely for the number of active jobs to reach 0
2020-08-28Bind signature to full address and signing modeSarang Noether1-0/+2
2020-08-28wallet: allow signing a message with spend or view keymoneromooo-monero2-7/+12
2020-08-28core_tests: fix failures after v13moneromooo-monero4-13/+21
v13 enforces claiming the full block reward, so we need to keep track of tx fees to add them to the coinbase
2020-08-28core_tests: remove hardcoded hf versionmoneromooo-monero1-1/+1
2020-08-27functional_tests: add a large (many randomx epochs) p2p reorg testmoneromooo-monero1-0/+19
2020-08-27functional_tests: add randomx testsmoneromooo-monero2-0/+117
2020-08-27core: fix mining from a block that's not the current topmoneromooo-monero1-3/+3
2020-08-27Added balance check to MLSAG/CLSAG performance testsSarang Noether3-144/+282
2020-08-27Updated MLSAG and CLSAG tests for consistencySarang Noether3-31/+63
2020-08-27CLSAG verification performance testSarang Noether2-22/+40
2020-08-27CLSAG optimizationsSarang Noether2-86/+82
2020-08-27Integrate CLSAGs into moneromoneromooo-monero15-85/+656
They are allowed from v12, and MLSAGs are rejected from v13.
2020-08-27unit_tests: add ge_triple_scalarmult_base_vartime testmoneromooo-monero1-0/+62
2020-08-27CLSAG signaturesSarang Noether4-4/+196
2020-08-26functional_tests: add p2p functional testsmoneromooo-monero2-8/+193
Tests tx/block propagation and reorgs
2020-08-21enforce claiming maximum coinbase amountmoneromooo-monero3-0/+30
Claiming a slightly lesser amount does not yield the size gains that were seen pre rct, so this closes a fingerprinting vector
2020-08-17Add clear method to byte_streamLee Clagett1-0/+41
2020-08-17Revert "Use domain-separated ChaCha20 for in-memory key encryption"luigi11112-74/+0
This reverts commit 921dd8dde5d381052d0aa2936304a3541a230c55.
2020-08-17replace most boost serialization with existing monero serializationmoneromooo-monero10-12/+10
This reduces the attack surface for data that can come from malicious sources (exported output and key images, multisig transactions...) since the monero serialization is already exposed to the outside, and the boost lib we were using had a few known crashers. For interoperability, a new load-deprecated-formats wallet setting is added (off by default). This allows loading boost format data if there is no alternative. It will likely go at some point, along with the ability to load those. Notably, the peer lists file still uses the boost serialization code, as the data it stores is define in epee, while the new serialization code is in monero, and migrating it was fairly hairy. Since this file is local and not obtained from anyone else, the marginal risk is minimal, but it could be migrated later if needed. Some tests and tools also do, this will stay as is for now.
2020-08-14Change ZMQ-JSON txextra to hex and remove unnecessary base fieldsLee Clagett1-1/+16
2020-08-14Fix pruned tx for ZMQ's GetBlocksFastLee Clagett1-1/+1
2020-08-09Use domain-separated ChaCha20 for in-memory key encryptionSarang Noether2-0/+74
2020-08-09Updates InProofV1, OutProofV1, and ReserveProofV1 to new V2 variants that ↵Sarang Noether3-5/+165
include all public proof parameters in Schnorr challenges, along with hash function domain separators. Includes new randomized unit tests.
2020-07-23Fix overflow issue in epee:misc_utils::rolling_median_t and median(), with ↵koe1-0/+11
unit test
2020-07-20wallet2_api: implement runtime proxy configurationxiphon4-4/+4
2020-06-14fuzz_tests: fix init check in oss-fuzz modemoneromooo-monero1-1/+1
2020-06-14fix leaks in fuzz testsmoneromooo-monero4-17/+34
2020-06-14fuzz_tests: add a tx extra fuzz testmoneromooo-monero4-0/+58
2020-06-09repo: update donation fund addressselsta3-9/+9
2020-05-31Fix boost <1.60 compilation and fix boost 1.73+ warningsLee Clagett1-2/+3
2020-05-28functional_tests: add simple relay_tx testmoneromooo-monero1-0/+11
2020-05-27tests: fix missing error on missing python entry pointmoneromooo-monero1-0/+1
2020-05-20ByteSlice: Fix persisting ptr to std::moved SSO bufferDoyle1-0/+23
The Bug: 1. Construct `byte_slice.portion_` with `epee::span(buffer)` which copies a pointer to the SSO buffer to `byte_slice.portion_` 2. It constructs `byte_slice.storage_` with `std::move(buffer)` (normally this swap pointers, but SSO means a memcpy and clear on the original SSO buffer) 3. `slice.data()` returns a pointer from `slice.portion_` that points to the original SSO cleared buffer, `slice.storage_` has the actual string.
2020-05-16Support for supercop ASM in wallet, and benchmark for supercopLee Clagett3-0/+479
2020-05-15fuzz_tests: refactor and add OSS-Fuzz compatibilitymoneromooo-monero15-540/+228
2020-05-15Add randomized delay when forwarding txes from i2p/tor -> ipv4/6Lee Clagett1-8/+246
2020-05-14build: fix boost 1.73 compatibilityselsta1-2/+2
2020-05-12Fixed bugs for take_slice and byte_stream->byte_sliceLee Clagett1-0/+31
2020-05-11remove double includessumogr2-3/+0
2020-05-06Update copyright year to 2020SomaticFanatic181-181/+181
Update copyright year to 2020
2020-05-04Adding ZMQ/Pub support for txpool_add and chain_main eventsLee Clagett4-8/+776
2020-05-03performance_tests: some windows fixesmoneromooo-monero2-2/+2
Too many iterations cause std::bad_alloc for the timings vector, and the micro prefix displays as some other character, so use u. Reported by iDunk
2020-04-27trezor: adapt to new passphrase mechanismDusan Klinec4-57/+43
- 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-24Revert functional test changes in babf25d2e and 571546067Lee Clagett3-65/+25
2020-04-18unit_tests: fix gcc+ warningSumo Gr1-0/+4
2020-04-15Allow wallet2.h to run in WebAssemblywoodser1-0/+5
- 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-14Bulletproofs: verification speedupSarang Noether3-0/+11
2020-04-11Add byte_stream for zero-copy serialization, and add support in ZMQ-JSON.Lee Clagett2-5/+259
2020-04-06functional_tests: ensure signatures never reuse a timestampmoneromooo-monero1-0/+2
2020-04-06functional_tests: ensure signed timestamps are freshmoneromooo-monero1-1/+3
This fixes a test failure now that timestamps are more constrained
2020-04-03Use byte_slice for sending zmq messages - removes data copy within zmqLee Clagett1-0/+39
2020-03-31cryptonote_basic: drop unused verification_context::m_not_rct fieldxiphon1-3/+0
2020-03-30Always reject duplicate key-images from second txidLee Clagett1-13/+39
2020-03-30Allow unrestricted rpc calls to get full txpool infoLee Clagett2-12/+26
2020-03-30Fixed string_ref usage bug in epee::from_hex::vectorLee Clagett1-0/+3
2020-03-28Fix network unit tests after epee changesLee Clagett1-2/+2
2020-03-26Adding Dandelion++ support to public networks:Lee Clagett5-29/+1118
- 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-26functional_tests: speed up signature generationmoneromooo-monero2-5/+29
Executing a new binary for each signature can get really slow
2020-03-26functional_tests: update cookie at 10 seconds intervalmoneromooo-monero1-0/+28
Otherwise the daemon will start rejecting
2020-03-22protocol: request txpool contents when syncedmoneromooo-monero2-0/+4
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-20p2p: remove old debug commandsAaron Hook4-2/+2
2020-03-14Correct key image check in tx_poolLee Clagett3-0/+64
2020-03-10Fix receive order leakage with tx fluffingLee Clagett1-8/+12
2020-03-09Move hex->bin conversion to monero copyright files and with less includesLee Clagett1-3/+43
2020-03-05Various improvements to the ZMQ JSON-RPC handling:Lee Clagett2-20/+38
- 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-02-28daemon: auto public nodes - cache and prioritize most stable nodesxiphon2-0/+173
2020-02-18unit_tests: fix missing test namesxiphon2-5/+1
2020-02-17remove empty statementsInterchained2-2/+2
Cleaning up a little around the code base.
2020-02-12wipeable_string: split - treat CR, LF and Tabs as separatorsxiphon1-0/+1
2020-01-26serialization: do not write optional fields with default valuemoneromooo-monero1-2/+2
2020-01-26network: log traffic and add a simple traffic analysis scriptmoneromooo-monero3-18/+19
2020-01-26wallet: do not split integrated addresses in address book apimoneromooo-monero2-60/+5
2020-01-19fix tests bug added in #6110Dusan Klinec1-4/+10
- e.g., fixes gen_block_big_major_version test, error: generation failed: what=events not set, cannot compute valid RandomX PoW - ask for events only if difficulty > 1 (when it really matters) - throwing an exception changed to logging, so it is easy to spot a problem if tests start to fail.
2020-01-18net: fix incorrect less operator for top/i2p addressesAaron Hook1-23/+403
2019-12-31wallet: allow message sign/verify for subaddressesmoneromooo-monero1-8/+23
2019-12-12print_coinbase_tx_sum now supports 128 bits sumsmoneromooo-monero1-0/+5
The tail emission will bring the total above 64 bits
2019-12-01unit_tests: remove invalid bulletproofs unit testmoneromooo-monero1-9/+0
It was intended to check a case which is actually valid (0 gamma), but was actually duplicating the bad amount test. Reported by WhatDo_ on IRC.
2019-11-27make_test_signature: exit nicely on top level exceptionmoneromooo-monero1-0/+2
Coverity 205411
2019-11-18Fixed bug in ZMQ JSON-RPC method fieldLee Clagett2-1/+58
2019-11-13tests: fix HF12 chaingen - construct bc object from eventsDusan Klinec3-22/+180
2019-11-12rpc: Only show version string if it matches expected patternNathan Dorfman2-1/+51
2019-11-10core_tests: reset thread pool between testsmoneromooo-monero1-0/+2
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-04Change to Tx diffusion (Dandelion++ fluff) instead of floodingLee Clagett2-16/+84
2019-11-04Improved performance for epee serialization:Lee Clagett1-3/+3
- Removed copy of field names in binary deserialization - Removed copy of array values in binary deserialization - Removed copy of string values in json deserialization - Removed unhelpful allocation in json string value parsing - Removed copy of blob data on binary and json serialization
2019-11-02Adding support for hidden (anonymity) txpoolLee Clagett10-36/+739
2019-10-31unit_tests: fix use after freemoneromooo-monero1-7/+16
2019-10-31cryptonote: untangle dependency from miner to blockchainmoneromooo-monero1-2/+6
It causes link errors at least on mac
2019-10-31cryptonote: untangle dependency from miner to blockchainmoneromooo-monero1-2/+6
It causes link errors at least on mac
2019-10-30core_tests: remove some useless verbose logsmoneromooo-monero4-5/+0
2019-10-30unit_tests: fix use after freemoneromooo-monero1-7/+16
2019-10-27functional_tests: ensure mining stops on error in mining testmoneromooo-monero1-1/+11
this prevents messing up any subsequent test too
2019-10-25functional_tests: fix rpc_payment tests with python 3moneromooo-monero1-3/+4
2019-10-25daemon, wallet: new pay for RPC use systemmoneromooo-monero7-6/+506
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-21Support median block size > 4 GBmoneromooo-monero1-0/+116
add a 128/64 division routine so we can use a > 32 bit median block size in calculations
2019-10-15functional_tests: fix transfer test - long payment ids are gonemoneromooo-monero1-1/+1
2019-10-15unit_tests: fix build after renamemoneromooo-monero1-4/+6
2019-10-14wallet_rpc_server: don't report integrated addresses for 0 payment IDmoneromooo-monero1-1/+1
These are dummy ones
2019-10-14wallet: remove long payment ID sending supportmoneromooo-monero2-10/+15
2019-10-14wallet2: ignore received unencrypted payment IDs (but warn hard)moneromooo-monero1-6/+6
2019-10-13p2p+rpc: don't skip p2p or rpc port bind failure by defaultxiphon2-7/+42