aboutsummaryrefslogtreecommitdiff
path: root/src (unfollow)
AgeCommit message (Collapse)AuthorFilesLines
2024-07-05wallet2: validate fetched block height and parent hashOscar Mira1-0/+18
2024-07-04wallet2: use start_height consistently as const in process_parsed_blocksOscar Mira2-4/+4
2024-06-24Daemon RPC: /getblocks.bin return chain's top_block_hash in respj-berman8-10/+18
2024-06-24wallet2: move get_rpc_status func to RPC server definition filej-berman3-24/+25
2024-06-24Daemon RPC: high_height_ok req boolean field /getblocks.binj-berman2-3/+13
Behavior before: when start_height > chain tip, response fails Behavior after: when req.high_height_ok is true && req.start_height > chain tip, server rerturns a successful response that includes chain height
2024-06-18Fix ZMQ Tx PruningLee Clagett2-4/+7
2024-06-05cryptonote_protocol: prevent duplicate txs in fluff queue0xFFFC00001-0/+2
1. Fix duplicate transaction #9335 2. Add test for cases where there are duplicate transaction in fluff Co-authored-by: Boog900 <boog900@tutanota.com>
2024-05-29src: update checkpoints to match v0.18.3.4selsta3-1/+2
2024-05-28wallet: fetch pool txs in pruned formjeffro2561-0/+1
2024-05-24wallet: background sync with just the view keyj-berman15-93/+1849
- When background syncing, the wallet wipes the spend key from memory and processes all new transactions. The wallet saves all receives, spends, and "plausible" spends of receives the wallet does not know key images for. - When background sync disabled, the wallet processes all background synced txs and then clears the background sync cache. - Adding "plausible" spends to the background sync cache ensures that the wallet does not need to query the daemon to see if any received outputs were spent while background sync was enabled. This would harm privacy especially for users of 3rd party daemons. - To enable the feature in the CLI wallet, the user can set background-sync to reuse-wallet-password or custom-background-password and the wallet automatically syncs in the background when the wallet locks, then processes all background synced txs when the wallet is unlocked. - The custom-background-password option enables the user to open a distinct background wallet that only has a view key saved and can be opened/closed/synced separately from the main wallet. When the main wallet opens, it processes the background wallet's cache. - To enable the feature in the RPC wallet, there is a new `/setup_background_sync` endpoint. - HW, multsig and view-only wallets cannot background sync.
2024-05-21add key exchange round booster to multisig_accountkoe10-135/+416
2024-05-21wallet2: correct variable usage in get_multisig_seedselsta1-1/+1
2024-05-21copyright: bump to 2024copyCat420-420/+420
2024-05-12net_node: update seed nodesselsta1-9/+8
Also remove port for I2P seed nodes
2024-04-30common: support boost filesystem copy_options.0xFFFC00004-3/+24
Co-authored-by: selsta <selsta@sent.at>
2024-04-28wallet2: fix stagenet get_approximate_blockchain_heightselsta1-1/+1
2024-04-27simplewallet: change boost::filesystem::complete to absolute.0xFFFC00001-2/+2
2024-04-22Add drop_and_recreate in privatefile class.0xFFFC00003-5/+26
When creating a private file we need to delete the file if exist.
2024-04-20remove repetitive wordcuinix2-2/+2
Signed-off-by: cuinix <915115094@qq.com>
2024-04-11BlockchainDB: shorter fixup()jeffro2561-558/+12
Instead of hard-coding all missing key images into the code and inserting if missing, we simply pop all blocks after height 202611. This makes the `monerod` binary about 0.35% smaller.
2024-04-11BlockchainDB: remove lock/unlock methodsjeffro2564-57/+0
2024-04-10trezor: support c++17 and protobuf v25, libusb fixDusan Klinec1-6/+16
- fix If there is no protobuf version installed, if fails - passphrase test fix, wallet keys init was missing
2024-04-06src: update checkpoints to match latest releaseselsta3-1/+11
2024-04-05@tobtoht: undo rebase changes tx.dsts -> tx_dstsjeffro2561-4/+4
2024-03-30add sum of amounts for unspent_outputsSNeedlewoods1-0/+3
2024-03-29Skip privacy networks (on tx sends) that don't have outgoing connectionsLee *!* Clagett3-6/+13
2024-03-22wallet2: ensure transfers and sweeps use same fee calc logic rnd2j-berman1-3/+3
Looks like the logic from #8882 was accidentally removed in #8861 (regressing to the behavior noted in the #8882 description). This commit brings that logic back.
2024-03-21update blake2b test vectorskoe2-423/+422
2024-03-19serialization: do any N-tuplejeffro2561-105/+57
2024-03-11ringct: fix trunc_amount field name changejeffro2561-1/+1
Caused in commit 05231400cebfeedbbc0a5386f38a033bba6314b3, PR #9035.
2024-03-10serialization: protect blob serialization from undefined behaviorjeffro2563-4/+26
There is currently no compiler protection when someone tries to do (for example) `BLOB_SERIALIZER(std::vector<int>)`. You just get runtime allocation errors. This has already eaten up dev time before, so this PR adds a static assertion that the type must be trivially copyable, as defined by the C++ standard. Types can override this if applicable if they use `BLOB_SERIALIZER_FORCED`.
2024-03-10Blockchain: remove old fee calc logicjeffro2564-123/+21
2024-03-08Removed default cryptonote addressSyntheticBird452-2/+7
- Removed `localhost:8080` default value to address string in wallet rpc - Added an error response in case string is empty fixed indentation removed if and errors, default to localhost and port based on nettype Forgot ":" forgot ; and m_ removed wallet_rpc_server_error_codes.h
2024-03-08Fixed mempool pruningSChernykh2-7/+19
- Fixed undefined behavior after a call to `remove_tx_from_transient_lists` (it used an invalid iterator) - Fixed `txCompare` (it wasn't strictly weak ordered)
2024-03-08get_block_template_backlog: better sorting logicSChernykh1-1/+1
std::sort is unstable, so it can return random sets of transactions when mempool has many transactions with the same fee/byte. It can result in p2pool mining empty blocks sometimes because it doesn't pick up "new" transactions immediately.
2024-03-08wallet2: adjust fee during backlog, fix set priorityselsta2-3/+3
2024-03-07tx_memory_pool: make double spends a no-drop offensejeffro2561-0/+1
Nodes who see different txs in a double spend attack will drop each other, splitting the network. Issue found by @boog900.
2024-02-24Enforce Tx unlock_time is Zero by Relay Rulejeffro25617-195/+123
Related to https://github.com/monero-project/research-lab/issues/78 Added a relay rule that enforces the `unlock_time` field is equal to 0 for non-coinbase transactions. UIs changed: * Removed `locked_transfer` and `locked_sweep_all` commands from `monero-wallet-cli` APIs changed: * Removed `unlock_time` parameters from `wallet2` transfer methods * Wallet RPC transfer endpoints send error codes when requested unlock time is not 0 * Removed `unlock_time` parameters from `construct_tx*` cryptonote core functions
2024-02-24free function serialization DSLjeffro2561-0/+44
Example usage for Seraphis types (in global or `sp` namespace): ``` BEGIN_SERIALIZE_OBJECT_FN(sp::SpCoinbaseEnoteCore) FIELD_F(onetime_address) VARINT_FIELD_F(amount) END_SERIALIZE() BEGIN_SERIALIZE_OBJECT_FN(sp::SpEnoteCore) FIELD_F(onetime_address) FIELD_F(amount_commitment) END_SERIALIZE() ```
2024-02-24cmake: require libsodiumtobtoht2-2/+2
2024-02-21add blake2b to src/cryptokoe3-0/+681
2024-02-20wallet: feature: transfer amount with fee includedjeffro2567-42/+265
To transfer ~5 XMR to an address such that your balance drops by exactly 5 XMR, provide a `subtractfeefrom` flag to the `transfer` command. For example: transfer 76bDHojqFYiFCCYYtzTveJ8oFtmpNp3X1TgV2oKP7rHmZyFK1RvyE4r8vsJzf7SyNohMnbKT9wbcD3XUTgsZLX8LU5JBCfm 5 subtractfeefrom=all If my walet balance was exactly 30 XMR before this transaction, it will be exactly 25 XMR afterwards and the destination address will receive slightly less than 5 XMR. You can manually select which destinations fund the transaction fee and which ones do not by providing the destination index. For example: transfer 75sr8AAr... 3 74M7W4eg... 4 7AbWqDZ6... 5 subtractfeefrom=0,2 This will drop your balance by exactly 12 XMR including fees and will spread the fee cost proportionally (3:5 ratio) over destinations with addresses `75sr8AAr...` and `7AbWqDZ6...`, respectively. Disclaimer: This feature was paid for by @LocalMonero.
2024-02-21cryptonote_core: early out on out of bounds scaling parameterselsta1-1/+2
2024-02-18Daemon-specific proxy for the wallet-rpc.0xFFFC00005-4/+31
1. Daemon-specific proxy is exclusive with global proxy (--proxy). 2. If you set global proxy (--proxy) you cannot set daemon-specific proxy. 3. If you don't set global proxy, you can set proxy (or not set) proxy for each daemon connection with the proxy field in jsonrpc to the wallet-rpc.
2024-02-07daemon: warn user on specifiying ZMQ args with --no-zmqjeffro2561-0/+19
Resolves https://github.com/monero-project/monero/issues/9127
2024-02-06Zero initialize rctSigBase elementsLee *!* Clagett1-0/+4
2024-01-30Disable/fix ports with I2PLee Clagett4-43/+15
2024-01-17epee/test: remove levin_protocol_handler and core_proxy testsjeffro2561-1/+0
2023-12-19Cleanup scoped_ptr in src/common/dns_utils.cpp and header include:0xFFFC00001-34/+10
* No need for entire new class (Fix #8732). * Fix stdint.h header include in contrib/epee/include/net/http_base.h.
2023-11-30fix merge mining with more than one merge mined chainCrypto City7-25/+49
reported by sech1
2023-11-28Fix missing checks for IsObject in ZMQ jsonrpc readingLee Clagett1-0/+201
2023-11-28serialization: remove container wrappers and serialize directlyjeffro2565-125/+81
Some downstream code (most notably PR https://github.com/UkoeHB/monero/pull/25) wants to use the src/serialization lib for storing information persistently. When one builds classes/machines wishing to serialize containers, they must use the `serializable_*` container classes. In this case, this makes the Seraphis library code unnecessarily tightly coupled with the src/serialization code since one cannot swap out their type of storage format without major refactoring of class field types. By serializing STL containers directly, we can abstract the serialization details away, making for much cleaner design. Also small bonus side effect of this change is that STL containers with custom Comparators, Allocators, and Hashers are serializable. `std::multimap` is added to the list of serializable containers. Depends upon https://github.com/monero-project/monero/pull/9069.
2023-11-18serialization: fix infinite loops and clean up dispatchingjeffro2568-147/+53
Resolves #8687
2023-11-05MMS: Ignore 2 more API errors thrown by latest PyBitmessagerbrunner71-0/+13
2023-11-04add sp_transcriptkoe1-0/+397
2023-11-04JH hash compiler workaroundsSChernykh1-4/+13
- Fixed uninitialized `state->x` warning - Fixed broken code with `-O3` or `-Ofast` The old code is known to break GCC 10.1 and GCC 11.4
2023-11-04Fix EAGAIN bug in ZMQ-RPC/ZMQ-PUBLee *!* Clagett1-7/+16
2023-11-02wallet: sign_tx: get tx pubkey from extratobtoht1-3/+1
2023-11-02wallet: fix multisig key memory leakjeffro2561-0/+26
Multisig keys per-transfer were being wiped, but not erased, which lead to a ginormous quadratic bloat the more transfers and exports you performed with the wallet.
2023-10-26device: boost -> std locks to fix c++17 compilationselsta3-18/+13
2023-10-25epee: remove dead code in math_helper and string_toolsjeffro2565-2/+3
2023-10-23ringct: make `rctSigBase` serialization follow strict aliasing rulejeffro2561-3/+9
Accessing an object of type `char` thru an lvalue of type `crypto::hash8` is undefined behavior. https://developers.redhat.com/blog/2020/06/03/the-joys-and-perils-of-aliasing-in-c-and-c-part-2
2023-10-22cryptonote_config: include cstdintjeffro2561-0/+1
Header was using `uint64_t` without including `<cstdint>` which caused some issues downstream for windows builds
2023-10-17wallet: mitigate statistical dependence for decoy selection within ringsjeffro2561-16/+43
Since we are required to check for uniqueness of decoy picks within any given ring, and since some decoy picks may fail due to unlock time or malformed EC points, the wallet2 decoy selection code was building up a larger than needed *unique* set of decoys for each ring according to a certain distribution *without replacement*. After filtering out the outputs that it couldn't use, it chooses from the remaining decoys uniformly random *without replacement*. The problem with this is that the picks later in the picking process are not independent from the picks earlier in the picking process, and the later picks do not follow the intended decoy distribution as closely as the earlier picks. To understand this intuitively, imagine that you have 1023 marbles. You label 512 marbles with the letter A, label 256 with the letter B, so on and so forth, finally labelling one marble with the letter J. You put them all into a bag, shake it well, and pick 8 marbles from the bag, but everytime you pick a marble of a certain letter, you remove all the other marbles from that bag with the same letter. That very first pick, the odds of picking a certain marble are exactly how you would expect: you are twice as likely to pick A as you are B, twice as likely to pick B as you are C, etc. However, on the second pick, the odds of getting the first pick are 0%, and the chances for everything else is higher. As you go down the line, your picked marbles will have letters that are increasingly more unlikely to pick if you hadn't remove the other marbles. In other words, the distribution of the later marbles will be more "skewed" in comparison to your original distribution of marbles. In Monero's decoy selection, this same statistical effect applies. It is not as dramatic since the distribution is not so steep, and we have more unique values to choose from, but the effect *is* measureable. Because of the protocol rules, we cannot have duplicate ring members, so unless that restriction is removed, we will never have perfectly independent picking. However, since the earlier picks are less affected by this statistical effect, the workaround that this commit offers is to store the order that the outputs were picked and commit to this order after fetching output information over RPC.
2023-10-16gcc: fix uninitialized constructor warningsjeff5-7/+11
2023-10-01Fix: long term block weight cacheBoog9001-33/+2
The long term block weight cache was doing a wrong calculation when adding a new block to the cache.
2023-09-30trezor: support v2.5.2+, add more trezor tests, fix chaingen and testsDusan Klinec8-53/+102
- passphrase logic: remove backward compatibility for 2.4.3, code cleanup. - fix LibUSB cmake for static builds on OSX - tests: all tests now work with passphrase logic enabled. Passphrase test added with different passphrase. no_passphrase test added, Trezor pin test added. Testing wallet opening with correct and incorrect passphrase. Trezor test chain revamp, cleanup. Smaller chain, chain file versioning added. - tests: Trezor tests support TEST_MINING_ENABLED, TEST_MINING_TIMEOUT env vars to change mining-related tests behaviour. - requires protobuf@21 on osx for now (c++14), building with unlinked protobuf: `CMAKE_PREFIX_PATH=$(find /opt/homebrew/Cellar/protobuf@21 -maxdepth 1 -type d -name "21.*" -print -quit) \ make debug-test-trezor -j8`
2023-09-26wallet2: call on_reorg callback in handle_reorgj-berman1-4/+4
2023-09-25depends: remove libiconv: unusedtobtoht1-0/+3
2023-09-21wallet: store watch-only wallet correctly when `change_password()` is calledjeff1-2/+2
The Monero GUI code was calling `Monero::wallet::setPassword()` on every open/close for some reason, and the old `store_to()` code called `store_keys()` with `watch_only=false`, even for watch-only wallets. This caused a bug where the watch-only keys file got saved with with the JSON field `watch_only` set to 0, and after saving a watch-only wallet once, a user could never open it back up against because `load()` errored out. This never got brought up before this because you would have to change the file location of the watch-only wallet to see this bug, and I guess that didn't happen often, but calling the new `store_to()` function with the new `force_rewrite` parameter set to `true` triggers key restoring and the bug appeared.
2023-09-10add seraphis_crypto directorykoe3-0/+52
2023-09-10add account_generators for mapping public EC generators to account keyskoe1-0/+71
2023-09-10update TimingsDatabase to support csv format and incremental updatingkoe2-31/+75
2023-08-23wallet2: fix `store_to()` and `change_password()`jeffro2562-34/+90
Resolves #8932 and: 2. Not storing cache when new path is different from old in `store_to()` and 3. Detecting same path when new path contains entire string of old path in `store_to()` and 4. Changing your password / decrypting your keys (in this method or others) and providing a bad original password and getting no error and 5. Changing your password and storing to a new file
2023-08-17wallet2: fix version check at hf version 1j-berman1-1/+1
2023-08-10`KV_SERIALIZE`: remove extraneous semicolons in DSLjeffro2563-91/+91
Prereq of https://github.com/monero-project/monero/pull/8867
2023-08-08multisig: better errors for small malformed kex msgsjeffro2561-3/+6
Resolves https://github.com/monero-project/monero/issues/8493
2023-08-01core_rpc_server: silence unused warningsjeffro2561-0/+1
2023-08-01blockchain_db: add k-anonymity to txid fetchingjeffro2569-0/+257
Read more about k-anonymity [here](https://en.wikipedia.org/wiki/K-anonymity). We implement this feature in the monero daemon for transactions by providing a "Txid Template", which is simply a txid with all but `num_matching_bits` bits zeroed out, and the number `num_matching_bits`. We add an operation to `BlockchainLMDB` called `get_txids_loose` which takes a txid template and returns all txids in the database (chain and mempool) that satisfy that template. Thus, a client can ask about a specific transaction from a daemon without revealing the exact transaction they are inquiring about. The client can control the statistical chance that other TXIDs (besides the one in question) match the txid template sent to the daemon up to a power of 2. For example, if a client sets their `num_matching_bits` to 5, then statistically any txid has a 1/(2^5) chance to match. With `num_matching_bits`=10, there is a 1/(2^10) chance, so on and so forth. Co-authored-by: ACK-J <60232273+ACK-J@users.noreply.github.com>
2023-07-28wallet-rpc: restore from multisig seedjeffro2564-25/+59
2023-07-19scan_tx: fix custom comparator for == case; fixes #8951j-berman1-4/+9
Co-authored-by: woodser <woodser@protonmail.com>
2023-07-18remove more 'using namespace' statements from headersjeffro2564-19/+5
2023-07-16wallet2: when checking frozen multisig tx set, don't assume orderjeffro2561-4/+4
2023-07-03common: do not use DNS to determine if address is localtobtoht1-20/+15
Co-authored-by: j-berman <justinberman@protonmail.com>
2023-07-02core_rpc_server: new file: rpc_ssl.fingerprintJeffrey Ryan2-25/+29
2023-07-02Remove src/platformJeffrey5-176/+0
All the files in src/platform are currently unused and unnecessary. See below: * `mingw/alloca.h`: unused throughout project * `msc/sys/param.h`: 1. In `fix_darwin.patch`, `sys/param.h` is well-defined to be used only in OpenBSD environment 2. `int-util.h` already handles when `sys/param.h` is not present and injects its own values 3. `db_drivers/liblmdb/mdb.c` is a similar situation: already explicity handles different platforms 4. `src/crypto/chacha.h` uses `int-util.h` for endianness context * `msc/alloca.h`: unused * `msc/inline_c.h`: not needed. the `inline` keyword is supported for C99 I believe, and certainly for C11, C14+ * `msc/stdbool.h`: `stdbool.h` is standard since C99, and MSVC has supported it for a long time (~10 years)
2023-07-01blockchain_and_pool: move to crytonote_core and enforce its usagejeffro25612-52/+46
2023-07-01Update help for set command in simplewalletMasFlam1-0/+4
Add help for max-reorg-depth and load-deprecated-formats options
2023-06-30core_rpc_server: return ID of submitted blockjeffro2562-2/+7
2023-06-30Avoid nullptr dereference when constructing Blockchain and tx_memory_poollukas8-60/+83
2023-06-28add crypto/generators for direct access to canonical fixed generatorskoe3-0/+234
2023-06-27wallet: remove CLI code for non default ring sizesJeffro2563-24/+2
2023-06-27Fixup error message.ComputeryPony1-0/+2
Looks like the extra MWARNING was supposed to be guarded by the if statement.
2023-06-21blockchain_db: add clarification to get_block_already_generated_coinsjeffro2561-1/+1
2023-06-15wallet2: fix rescanning tx via scan_txj-berman8-56/+402
- Detach & re-process txs >= lowest scan height - ensures that if a user calls scan_tx(tx1) after scanning tx2, the wallet correctly processes tx1 and tx2 - if a user provides a tx with a height higher than the wallet's last scanned height, the wallet will scan starting from that tx's height - scan_tx requires trusted daemon iff need to re-process existing txs: in addition to querying a daemon for txids, if a user provides a txid of a tx with height *lower* than any *already* scanned txs in the wallet, then the wallet will also query the daemon for all the *higher* txs as well. This is likely unexpected behavior to a caller, and so to protect a caller from revealing txid's to an untrusted daemon in an unexpected way, require the daemon be trusted.
2023-06-12wallet: respect frozen key images in multisig walletsjeffro2562-2/+40
Before this change, if a multisig peer asked you to sign a transaction with a frozen enote, the wallet will do it without any error or warning. This change makes it so that wallets will refuse to sign multisig transactions with frozen enotes. Disclaimer: This PR was generously funded by @LocalMonero.
2023-06-10Add CLSAG serialization to ZMQ codeLee Clagett2-0/+29
2023-06-10wallet2: take ignored-by-value outputs into account in balanceCrypto City1-0/+4
2023-06-08Speed up perf_timer init on x86SChernykh1-1/+1
All Monero binaries have 1 second startup delay because of this code. This is especially noticeable and affects UX in Monero GUI wallet with local node where it often starts another monerod instance to run commands and query node status.
2023-06-07protocol: drop peers sending duplicate txesmoneromooo-monero1-0/+10
2023-06-02cryptonote_basic: fix amount overflow detection on 32-bit systemsjeffro2561-1/+1
On systems where `ULONG_MAX` != `ULLONG_MAX` (e.g. most 32-bit systems), the `round_money_up` function will not correctly detect overflows.
2023-06-02wallet_rpc_server: dedup transfer RPC responsesjeffro2561-157/+59
2023-05-30wallet2: do not lose exception in current thread on refreshCrypto City1-0/+1
2023-05-30wallet2: fix missing exceptions from failing wallet refreshCrypto City1-0/+1
2023-05-27wallet2: ensure transfers and sweeps use same fee calc logicj-berman1-3/+3
Ensures both transfers and sweeps use a fee that's calculated from the tx's weight. Using different logic could theoretically enable distinguishability between the two types of txs. We don't want that.
2023-05-12daemon: remove --fluffy-blockstobtoht1-9/+0
2023-05-12net: tor_address: remove support for v2 onion addressestobtoht2-5/+2
2023-05-11blockchain: ensure base fee cannot reach 0Crypto City1-1/+1
reported by sech1
2023-05-10daemon: remove os-versiontobtoht3-284/+0
2023-05-06fix missing <cstdint> includestobtoht2-0/+2
2023-05-05core: do not force sync the db when finding a block in regtest modeCrypto City1-1/+2
for a slight performance boost in functional tests
2023-05-05bump lmdb sync threshold for performancemoneromooo-monero1-0/+4
Force sync every 100k blocks instead of every 1k blocks. Bumping this value is reported to make a big difference in sync performance, eg: https://github.com/monero-project/monero/issues/8189
2023-04-27Fixed RandomX initialization when mining from scratchSChernykh1-1/+8
2023-04-25remove defunct light wallet codetobtoht6-1185/+21
2023-04-25serialization: remove unused function dump_jsonJeffrey Ryan3-49/+0
2023-04-25wallet, simplewallet: Drop support for mine-to-use RPC systemJeffrey Ryan13-1022/+32
Using post-PR wallet with pre-PR node will generate error message specific to this PR and not generic "command failed" mesages.
2023-04-15Allow option 'non-interactive' in monerod config filealmalh5-11/+7
2023-04-14Show IPv6 addresses in connection listGuillaume Le Vaillant3-4/+16
2023-04-02gamma picker: relax constructor requirements and test for selecting outputs ↵jeffro2561-2/+2
from first spendable block
2023-03-30wallet2: fix infinite loop in fake out selectionCrypto City2-3/+4
The gamma picker and the caller code did not quite agree on the number of rct outputs available for use - by one block - which caused an infinite loop if the picker could never pick outputs from that block but already had picked all other outputs from previous blocks. Also change the range to select from using code from UkoeHB.
2023-03-29cryptonote core/protocol: don't drop peers for soft offensesjeffro2564-3/+10
Also: txs with tx_extra which is too large will not get published to ZMQ Co-authored-by: SChernykh <sergey.v.chernykh@gmail.com>
2023-03-29Fixed deadlock and crash when syncing with full dataset on WindowsSChernykh2-5/+8
It's not allowed to use WaitForSingleObject with _beginthread, because the thread closes its own handle before exiting. So the wait function will either wait on an invalid handle, or on a different handle used by something else. Or, if it starts waiting before the thread exits, the behavior is undefined according to MS: "If this handle is closed while the wait is still pending, the function's behavior is undefined." In my test sync I observed threads getting stuck infinitely on WaitForSingleObject, and then rx_set_main_seedhash spamming new threads when RandomX seed changes again. Eventually the system ran out of resources, and monerod aborted with "Couldn't start RandomX seed thread" message. This PR fixes it by using `_beginthreadex` instead and explicitly closing the handle when it's safe.
2023-03-27Message about DNS_PUBLIC to help users with issue #8452OrvilleRed1-0/+1
2023-03-21wallet2: make m_process_pool_txs local to refresh methodjeffro2562-12/+11
2023-03-21wallet2: do not commit transactions more than oncemoneromooo-monero1-0/+18
Fixes #8793
2023-03-19epee: remove dead code in net_helperJeffro2561-3/+0
2023-03-19wallet2: fix outdated wallet checkCrypto City1-4/+9
it was mistaking the number of forks in the fork table for the last fork, and assuming the table was including every single fork
2023-03-17verRctNonSemanticsSimpleCached: fix fragilityJeffrey Ryan9-111/+288
2023-03-17rpc: give reason when sending non-hex raw txjeffro2561-0/+1
2023-03-14device: Add ledger Stax device id to device detectionFrancois Beutin1-0/+1
2023-03-09cryptonote::transaction_prefix: fix IDE parsing errorkoe1-1/+1
2023-03-09p2p: do not log to global when re-blocking a subnetmoneromooo-monero1-1/+5
2023-03-07Enforce restricted # pool txs served via RPC + optimize chunked reqsj-berman12-168/+243
- `/getblocks.bin` respects the `RESTRICTED_TX_COUNT` (=100) when returning pool txs via a restricted RPC daemon. - A restricted RPC daemon includes a max of `RESTRICTED_TX_COUNT` txs in the `added_pool_txs` field, and returns any remaining pool hashes in the `remaining_added_pool_txids` field. The client then requests the remaining txs via `/gettransactions` in chunks. - `/gettransactions` no longer does expensive no-ops for ALL pool txs if the client requests a subset of pool txs. Instead it searches for the txs the client explicitly requests. - Reset `m_pool_info_query_time` when a user: (1) rescans the chain (so the wallet re-requests the whole pool) (2) changes the daemon their wallets points to (a new daemon would have a different view of the pool) - `/getblocks.bin` respects the `req.prune` field when returning pool txs. - Pool extension fields in response to `/getblocks.bin` are optional with default 0'd values.
2023-03-06cryptonote_basic: remove unused structtobtoht1-9/+0
2023-03-05Handle case where a command line flag is not allowed in the config filealmalh1-0/+13
2023-03-01p2p: avoid spam blocking ipv4 addresses in a blocked subnetmoneromooo-monero1-1/+17
2023-02-28replace 'multisig()' with 'get_multisig_status()' using ↵koe10-140/+186
multisig_account_status and including '.kex_is_done' member
2023-02-26Add a size limit for tx_extra in tx pooltevador6-1/+22
2023-02-24simplewallet: print fully qualified filename for new walletsmoneromooo-monero1-0/+2
from time to time, some people don't realize their wallets get created in their current working directory
2023-02-12variant: add mutable unwrap and visitationkoe1-7/+18
2023-02-03wallet_rpc_server: allow creating more than 64 addresses at oncemoneromooo-monero1-2/+2
it's too low a limit (at least one person mentioned having to call create_address in a loop due to it)
2023-01-30add variant class with cleaner interface than boost::variant<>koe2-0/+159
2023-01-27p2p: add plowsof seed nodesselsta1-1/+11
2023-01-27p2p: remove offline seed nodesselsta1-8/+0
2023-01-19wallet2: add on_reorg callbackCrypto City2-1/+5
2023-01-17blockchain-stats: print any remaining data at end of loopHoward Chu1-74/+83
Fix #8711
2023-01-17Demote large pages warning to `mdebug`SChernykh1-4/+7
2023-01-16Copyright: Update to 2023mj-xmr419-419/+419
Co-authored-by: plowsof <plowsof@protonmail.com> extra files
2023-01-11RandomX: print VM allocation warnings only onceSChernykh1-2/+10
2023-01-09Refactored rx-slow-hash.cSChernykh10-256/+401
- Straight-forward call interface: `void rx_slow_hash(const char *seedhash, const void *data, size_t length, char *result_hash)` - Consensus chain seed hash is now updated by calling `rx_set_main_seedhash` whenever a block is added/removed or a reorg happens - `rx_slow_hash` will compute correct hash no matter if `rx_set_main_seedhash` was called or not (the only difference is performance) - New environment variable `MONERO_RANDOMX_FULL_MEM` to force use the full dataset for PoW verification (faster block verification) - When dataset is used for PoW verification, dataset updates don't stall other threads (verification is done in light mode then) - When mining is running, PoW checks now also use dataset for faster verification
2023-01-03miscellaneous crypto updateskoe5-6/+18
2023-01-03daemonizer: don't uninstall windows service on exitselsta1-3/+0
2023-01-02win-service: enable auto startupplowsof1-1/+1
2023-01-01util: make GMT timestamps explicit for claritymoneromooo-monero1-1/+1
For privacy reasons, time functions use GMT, to avoid logs leaking timezones. It'd make more sense to use localtime for wallet output (which are not logged by default), but that adds inconsistencies which can also be confusing. So add a Z suffix for now to make it clear these are not local time.
2023-01-01rpc: do not misidentify coinbase txes as prunedmoneromooo-monero1-1/+11
2022-12-30wallet2, RPC: Optimize RPC calls for periodic refresh from 3 down to 1 callrbrunner79-205/+759
2022-12-29revisionskoe1-16/+24
2022-12-24vtnerd review commentskoe1-19/+60
2022-12-22common: move boost_serialization_helper.h out and cleanup includesJeffrey Ryan4-127/+2
2022-12-20Cache successful `verRctNonSemanticsSimple` callsSChernykh4-1/+104
2022-12-19add compare_func() method so user-defined comparison functions are easier to usekoe1-0/+14
2022-12-18common: add missing includesselsta2-0/+3
2022-12-18adjust is_sorted_and_unique()koe1-12/+11
2022-12-16adjust multiexp pippenger_cached_data for better reusabilitykoe2-45/+55
2022-12-15comment updateskoe1-1/+3
2022-12-01add container helperskoe1-0/+106
2022-11-21common: DNSResolver can handle hostnames without dot charactersJeffrey Ryan2-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.
2022-11-17p2p: fix exclusive node DNS resolution for certain hostsJeffrey Ryan3-14/+20
Fixes #8633. The function `append_net_address` did not parse hostname + port addresses (e.g. `bar:29080`) correctly if the hostname did not contain a `'.'` character. @vtnerd comments 1 clear up 2nd conditional statement
2022-11-17fix(trezor-tests): fix trezor tests build, fix integrated addr testDusan Klinec1-0/+2
- fix integrated address test, it was not testing integrated address suport - fix trezor test build as dependent classes were changed - add a friend test class for Monero::WalletImpl to support wallet api tests When using wallet_api in tests, synthetic chain is used. Without being able to set `allow_mismatched_daemon_version` in the underlying wallet, we are not able to use a synthetic chain with the tests
2022-11-14p2p: fix back ping to discover healthy peers to connect toj-berman1-1/+1
2022-10-25Fix dandelion++ fluff/stem bug with local txesLee Clagett1-3/+4
2022-10-18wallet2: fix create view-only wallet from existing walletj-berman2-8/+4
2022-10-13wallet_api: take priority into account when estimating feeselsta1-1/+1
2022-09-22Move update_checkpoints() to a later stageSChernykh2-4/+8
update_checkpoints() makes a few DNS requests and can take up to 20-30 seconds to complete (3-6 seconds on average). It is currently called from core::handle_incoming_block() which holds m_incoming_tx_lock, so it blocks all incoming transactions and blocks processing while update_checkpoints() is running. This PR moves it to until after a new block has been processed and relayed, to avoid full monerod locking.
2022-09-21wallet2: fail to establish daemon cxn == "Disconnected" cxn statusj-berman3-4/+5
2022-09-21add an option to force-update multisig key exchange under some circumstanceskoe13-90/+178
2022-09-20Second thread pool for IOSChernykh7-12/+16
2022-09-12wallet2: check wallet compatibility with daemon's hard fork versionj-berman12-26/+246
2022-09-07Fix segfault restoring encrypted multisig seedj-berman2-17/+17
2022-09-06Fix missing semi-colon in error messagej-berman1-1/+1
Co-authored-by: woodser <woodser@protonmail.com>
2022-09-06rpc: skip bootstrap nodes that are lower than last checkpointselsta4-0/+24
2022-09-06Require user ack multisig is experimental to restorej-berman1-0/+13
2022-09-06multisig: fix #8537 seed restore (suggestions by @UkoeHB)j-berman5-10/+25
- 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-24wallet2: ensure imported outputs subaddresses are createdmoneromooo-monero1-0/+4
reported by j-berman
2022-08-22rpc: remove overwriting valueSerHack1-1/+0
2022-08-22Remove redundant checkSerHack1-1/+1
2022-08-21Wallet RPC: remove duplicate lineSerHack1-1/+0
2022-08-19blockchain: fix invalid memory read getting fee on empty chainCrypto City1-1/+1
2022-08-18wallet2: better test on whether to allow output importmoneromooo-monero2-6/+25
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-08-18allow exporting outputs in chunksmoneromooo-monero9-56/+303
this will make it easier huge wallets to do so without hitting random limits (eg, max string size in node).
2022-08-16wallet2: fixes for export/import output flowj-berman2-2/+8
- only allow offline wallets to import outputs - don't import empty outputs - export subaddress indexes when exporting outputs
2022-08-16wallet2: do not assume imported outputs must be non emptymoneromooo-monero1-2/+2
2022-08-16wallet2: prevent importing outputs in a hot walletmoneromooo-monero1-0/+2
2022-08-16wallet2: fix missing subaddress indices in "light" exported outputsmoneromooo-monero2-2/+8
2022-08-15blockchain_prune: fastermoneromooo-monero1-41/+87
on my anecdotal SSD, goes from about 9 hours to 1h20.
2022-08-09version: bump master version numberselsta1-1/+1
Otherwise Ledger rejects the wallet.
2022-08-06ledger support for hf 15 (BP+, view tags)j-berman8-12/+94
2022-08-06dns_util: remove outdated DNSSEC DS trust anchorselsta1-1/+0
2022-07-26Fixed get_block_template_backlog performanceSChernykh2-17/+56
Before the fix, it processed all transactions in the mempool which could be very slow when mempool grows to several MBs in size. I observed `get_block_template_backlog` taking up to 15 seconds of CPU time under high mempool load. After the fix, only transactions that can potentially be mined in the next block will be processed (a bit more than the current block median weight).
2022-07-24device: set ledger min app versionselsta1-1/+1