summaryrefslogtreecommitdiff
path: root/src/cryptonote_core
Commit message (Collapse)AuthorAgeFilesLines
* 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).
* / Publish submitted txs via zmqj-berman2022-07-214-5/+67
|/
* Merge pull request #8425luigi11112022-07-151-1/+1
|\ | | | | | | fe5d1be build: prepare v0.18.0.0 (selsta)
| * build: prepare v0.18.0.0selsta2022-07-131-1/+1
| |
* | multisig: fix critical vulnerabilities in signinganon2022-06-303-21/+11
|/
* fix backoff delay logic when re-relaying txsj-berman2022-05-121-4/+4
|
* Merge pull request #8178luigi11112022-04-251-9/+15
|\ | | | | | | 5d388eb Bump ring size to 16 for v15 & remove set default in wallet cli (j-berman)
| * Bump ring size to 16 for v15 & remove set default in wallet clij-berman2022-04-181-9/+15
| |
* | Add view tags to outputs to reduce wallet scanning timej-berman2022-04-185-32/+62
|/ | | | | | | | | | | | | 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.
* Merge pull request #8207luigi11112022-04-181-7/+1
|\ | | | | | | 4db6aed CMake: Add missing headers via monero_find_all_headers macro (mj-xmr)