aboutsummaryrefslogtreecommitdiff
path: root/src/cryptonote_core
Commit message (Collapse)AuthorAgeFilesLines
...
* Merge pull request #9689tobtoht2025-01-221-72/+5
|\ | | | | | | 4d2aad837 Revert "blockchain: detect and log bad difficulty calculations" (selsta)
| * Revert "blockchain: detect and log bad difficulty calculations"selsta2025-01-141-72/+5
| | | | | | | | This reverts commit 5741b4d74de542f6f75dddad8125f4c4a5ad9143.
* | Merge pull request #9622tobtoht2025-01-141-11/+2
|\ \ | |/ |/| | | 41c4bc4 Blockchain: get height of RingCT fork programmatically (jeffro256)
| * Blockchain: get height of RingCT fork programmaticallyjeffro2562024-12-161-11/+2
| | | | | | | | | | | | Get height of the RingCT fork to start the output distributuon programmatically, instead of using a hardcoded index. If using a hardcoded index, when the hardfork tables are modified, this can cause segmentation faults or horrific privacy issues: https://codeberg.org/wownero/wownero/issues/488#issuecomment-2514880.
* | Merge pull request #9400luigi11112024-12-231-6/+0
|\ \ | |/ |/| | | f0a574c Blockchain: fix temp fails causing alt blocks to be permanently invalid (jeffro256)
| * Blockchain: fix temp fails causing alt blocks to be permanently invalidjeffro2562024-07-151-6/+0
| |
* | build: fix build with Boost 1.85 and remove instances of viewkey logging ↵jeffro2562024-09-101-2/+2
| | | | | | | | | | | | | | | | | | | | | | [RELEASE] 1. Use std::is_standard_layout and std::is_trivially_copyable instead of std::is_pod for KV byte-wise serialization, which fixes compile issue for Boost UUIDs 2. Removed reimplementation of std::hash for boost::uuids::uuid 3. Removed << operator overload for crypto::secret_key 4. Removed instances in code where private view key was dumped to the log in plaintext Release version of #9450, containing C++14 modified assertions
* | build: prepare v0.18.3.4selsta2024-07-221-1/+1
|/
* Enforce Tx unlock_time is Zero by Relay Rule [RELEASE]jeffro2562024-04-293-9/+18
| | | | | | | | | | | | | | | | 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 @tobtoht: undo rebase changes tx.dsts -> tx_dsts
* build: prepare v0.18.3.3selsta2024-03-111-1/+1
|
* Fixed mempool pruningSChernykh2024-03-082-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)
* Merge pull request #9223luigi11112024-03-081-1/+1
|\ | | | | | | 36ee12b get_block_template_backlog: better sorting logic (SChernykh)
| * get_block_template_backlog: better sorting logicSChernykh2024-03-081-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.
* | tx_memory_pool: make double spends a no-drop offensejeffro2562024-03-081-0/+1
|/ | | | | Nodes who see different txs in a double spend attack will drop each other, splitting the network. Issue found by @boog900.
* Merge pull request #9136luigi11112024-02-241-1/+1
|\ | | | | | | f2360a7 build: prepare v0.18.3.2 (selsta)
| * build: prepare v0.18.3.2selsta2024-02-201-1/+1
| |
* | cryptonote_core: early out on out of bounds scaling parameterselsta2024-02-201-1/+2
|/
* Merge pull request #9014v0.18.3.1luigi11112023-10-021-33/+2
|\ | | | | | | | | 69de381 add a test for the long term weight cache (Boog900) 810f6a6 Fix: long term block weight cache The long term block weight cache was doing a wrong calculation when adding a new block to the cache. (Boog900)
| * Fix: long term block weight cacheBoog9002023-10-021-33/+2
| | | | | | | | | | The long term block weight cache was doing a wrong calculation when adding a new block to the cache.
* | build: prepare v0.18.3.1selsta2023-10-021-1/+1
|/
* build: prepare v0.18.3.0selsta2023-09-101-1/+1
|
* Enforce restricted # pool txs served via RPC + optimize chunked reqs ↵j-berman2023-07-095-37/+74
| | | | | | | | | | | | | | | | | | | | | | [release-v0.18] - `/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.
* wallet2, RPC: Optimize RPC calls for periodic refresh from 3 down to 1 call ↵rbrunner72023-07-094-19/+258
| | | | [release-v0.18]
* blockchain: ensure base fee cannot reach 0Crypto City2023-05-111-1/+1
| | | | reported by sech1
* Merge pull request #8805v0.18.2.2luigi11112023-04-021-1/+1
|\ | | | | | | 4f1262b build: prepare v0.18.2.2 (selsta)
| * build: prepare v0.18.2.2selsta2023-03-271-1/+1
| |
* | cryptonote core/protocol: don't drop peers for soft offensesjeffro2562023-03-292-1/+3
|/ | | | | | Also: txs with tx_extra which is too large will not get published to ZMQ Co-authored-by: SChernykh <sergey.v.chernykh@gmail.com>
* Merge pull request #8785luigi11112023-03-241-1/+1
|\ | | | | | | cdeb286 build: prepare v0.18.2.1 (selsta)
| * build: prepare v0.18.2.1selsta2023-03-181-1/+1
| |
* | Merge pull request #8784luigi11112023-03-182-0/+11
|\ \ | | | | | | | | | 5900ed3 Add a size limit for tx_extra in tx pool (tevador)
| * | Add a size limit for tx_extra in tx pooltevador2023-03-182-0/+11
| |/
* / verRctNonSemanticsSimpleCached: fix fragilityJeffrey Ryan2023-03-175-73/+279
|/
* build: prepare v0.18.2.0selsta2023-02-081-1/+1
|
* Merge pull request #8676luigi11112023-01-111-1/+1
|\ | | | | | | 29208a3 Cache successful erRctNonSemanticsSimple calls (SChernykh)
| * Cache successful `verRctNonSemanticsSimple` callsSChernykh2022-12-201-1/+1
| |
* | Refactored rx-slow-hash.cSChernykh2022-12-144-43/+41
|/ | | | | | | | | - 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
* build: prepare v0.18.1.2selsta2022-09-261-1/+1
|
* Merge pull request #8588luigi11112022-09-261-4/+0
|\ | | | | | | 802c4bb Move update_checkpoints() to a later stage (SChernykh)
| * Move update_checkpoints() to a later stageSChernykh2022-09-221-4/+0
| | | | | | | | 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.
* | Second thread pool for IOSChernykh2022-09-202-3/+3
|/
* wallet2: check wallet compatibility with daemon's hard fork versionj-berman2022-09-121-0/+7
|
* Merge pull request #8552luigi11112022-09-093-0/+18
|\ | | | | | | 93db74a rpc: skip bootstrap nodes that are lower than last checkpoint (selsta)
| * rpc: skip bootstrap nodes that are lower than last checkpointselsta2022-09-063-0/+18
| |
* | build: prepare v0.18.1.1selsta2022-09-061-1/+1
|/
* Merge pull request #8467luigi11112022-08-092-5/+31
|\ | | | | | | fac7c43 continue pool pruning even if a tx can't be found (j-berman)
| * continue pool pruning even if a tx can't be foundj-berman2022-07-262-5/+31
| |
* | Merge pull request #8470luigi11112022-08-091-1/+1
|\ \ | | | | | | | | | 309f6ba build: prepare v0.18.1.0 (selsta)
| * | build: prepare v0.18.1.0selsta2022-07-281-1/+1
| |/
* | Merge pull request #8455luigi11112022-08-082-17/+56
|\ \ | | | | | | | | | 099fc1f Fixed get_block_template_backlog performance (SChernykh)
| * | Fixed get_block_template_backlog performanceSChernykh2022-07-222-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).