Age | Commit message (Collapse) | Author | Files | Lines |
|
The long term block weight cache was doing a wrong calculation when
adding a new block to the cache.
|
|
ffbf9f4 blockchain_and_pool: move to crytonote_core and enforce its usage (jeffro256)
d6f86e5 Avoid nullptr dereference when constructing Blockchain and tx_memory_pool (lukas)
|
|
503c3e0 core: do not force sync the db when finding a block in regtest mode (Crypto City)
|
|
d391ac0 blockchain: ensure base fee cannot reach 0 (Crypto City)
|
|
|
|
bb83eb1 daemon: remove --fluffy-blocks (tobtoht)
|
|
|
|
reported by sech1
|
|
for a slight performance boost in functional tests
|
|
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
|
|
5b4fea7 Copyright: Update to 2023 (mj-xmr)
|
|
Also: txs with tx_extra which is too large will not get published to ZMQ
Co-authored-by: SChernykh <sergey.v.chernykh@gmail.com>
|
|
3771641 Add a size limit for tx_extra in tx pool (tevador)
|
|
7159f92 verRctNonSemanticsSimpleCached: fix fragility (Jeffrey Ryan)
|
|
c4af33e Enforce restricted # pool txs served via RPC + optimize chunked reqs (j-berman)
9752116 wallet2, RPC: Optimize RPC calls for periodic refresh from 3 down to 1 call (rbrunner7)
|
|
|
|
- `/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.
|
|
|
|
Co-authored-by: plowsof <plowsof@protonmail.com>
extra files
|
|
1a568de Cache successful erRctNonSemanticsSimple calls (SChernykh)
|
|
7a3a593 common: move boost_serialization_helper.h out and cleanup includes (Jeffrey Ryan)
|
|
- 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
|
|
|
|
|
|
|
|
6f0fb76 blockchain: fix invalid memory read getting fee on empty chain (Crypto City)
|
|
8e7c7af Move update_checkpoints() to a later stage (SChernykh)
|
|
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.
|
|
|
|
|
|
2639c4f rpc: skip bootstrap nodes that are lower than last checkpoint (selsta)
|
|
|
|
1fc60ca Publish submitted txs via zmq (j-berman)
|
|
628fdcd continue pool pruning even if a tx can't be found (j-berman)
|
|
f797655 Fixed get_block_template_backlog performance (SChernykh)
|
|
|
|
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).
|
|
|
|
fe5d1be build: prepare v0.18.0.0 (selsta)
|
|
|
|
|
|
|
|
|
|
5d388eb Bump ring size to 16 for v15 & remove set default in wallet cli (j-berman)
|
|
|
|
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.
|
|
4db6aed CMake: Add missing headers via monero_find_all_headers macro (mj-xmr)
|
|
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
|
|
|
|
591c174 Remove footgun doc comment in miner TX validation (Luke Parker)
|
|
0d6fce8 Compil. time: cryptonote_core minus portable_storage header (mj-xmr)
|
|
da9aa1f Copyright: Update to 2022 (mj-xmr)
|
|
|
|
This comment suggests this check is unnecessary, when it is completely necessary as miner TXs can have multiple outputs *which is a statement directly, and incorrectly, contradicted by this comment*. While I don't ever see someone removing this code and getting their edits merged into Monero, someone inexperienced who thinks they're cleaning old code may break their own work, and then there's really just zero benefit to keeping this around.
|
|
|
|
|
|
e08abaa multisig key exchange update and refactor (koe)
|
|
|
|
a4ebec9 Add python method (Howard Chu)
0221b01 Add calcpow RPC (Howard Chu)
|
|
Calculate PoW hash for a block candidate
|
|
|
|
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.
|
|
|
|
dfee15e RPC and ZeroMQ APIs to support p2pool (SChernykh)
|
|
Adds the following:
- "get_miner_data" to RPC API
- "json-miner-data" to ZeroMQ subscriber contexts
Both provide the necessary data to create a custom block template. They are used by p2pool.
Data provided:
- major fork version
- current height
- previous block id
- RandomX seed hash
- network difficulty
- median block weight
- coins mined by the network so far
- mineable mempool transactions
|
|
4ced092 daemon: allow proxy configuration (anon, selsta, tobtoht)
|
|
Co-authored-by: selsta <selsta@sent.at>
Co-authored-by: tobtoht <thotbot@protonmail.com>
|
|
8ff21e1 doc: update IRC references to Libera (fdov)
|
|
254a133 core: speed up print_coinbase_tx_sum (moneromooo-monero)
|
|
|
|
ed6f053 blockchain: speed up repeated pops (mostly in tests) (moneromooo-monero)
|
|
a1c4307 Warnings: unused variable in core/blockchain.cpp (mj-xmr)
|
|
|
|
|
|
The heavy rolling median reset only has to be performed after
all blocks are popped
|
|
23aae55 Remove payload copy in all outgoing p2p messages (Lee Clagett)
|
|
673c6d2 Reduce compilation time of epee/portable_storage_template_helper.h (mj-xmr)
|
|
|
|
It only needs to parse the tx headers, not the full tx data
|
|
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.
|
|
bd12984 Remove copies from foreach loops (thanks to Clang) (Lee Clagett)
1572df9 Removing unused namespace alias (Lee Clagett)
|
|
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.
|
|
|
|
|
|
This reverts commit 63c7ca07fba2f063c760f786a986fb3e02fb040e, reversing
changes made to 2218e23e84a89e9a1e4c0be5d50f891ab836754f.
|
|
|
|
it is accessed both when adding and when prevalidating a set
of new hashes from a peer
|
|
|
|
|
|
b10878f10 Change Dandelion++ fluff probability to 20%, and embargo timeout to 39s (Lee Clagett)
|
|
d73cb95 Fix timeout checks for forwarded and Dandelion++ stem txes (Lee Clagett)
|
|
a9cd5d9 cryptonote_core: dandelion - use local height or median height if syncing (xiphon)
|
|
874487f blockchain: remove some dead code (moneromooo-monero)
|
|
a25bc71 Make Blockchain::get_fee_quantization_mask() compile time (SChernykh)
|
|
|
|
A 20% fluff probability increases the precision of a spy connected to
every node by 10% on average, compared to a network using 0% fluff
probability. The current value (10% fluff) should increase precision by
~5% compared to baseline.
This decreases the expected stem length from 10 to 5. The embargo
timeout was therefore lowered to 39s; the fifth node in a stem is
expected to have a 90% chance of being the first to timeout, which is
the same probability we currently have with an expected stem length of
10 nodes.
|
|
|
|
This is already done
|
|
This also removes potential thread safety bug in that function.
|
|
|
|
11b20229c tx_pool: silence spammy harmless warning till we fix the bug (moneromooo-monero)
|
|
a12a8174e Dandelion++: skip desynced peers in stem phase (xiphon)
|
|
Miners with MLSAG txes which they'd already verified included
a couple in that block, but the consensus rules had changed
in the meantime, so that block is technically invalid and any
node which did not already have those two txes in their txpool
could not sync. Grandfather them in, since it has no effect in
practice.
|
|
|
|
|
|
Based on a patch by TheCharlatan <seb.kung@gmail.com>
|
|
|
|
|
|
d20ff4f64 functional_tests: add a large (many randomx epochs) p2p reorg test (moneromooo-monero)
6a0b3b1f8 functional_tests: add randomx tests (moneromooo-monero)
9d42649d5 core: fix mining from a block that's not the current top (moneromooo-monero)
|
|
6a37da8 threadpool: guard against exceptions in jobs, and armour plating (moneromooo-monero)
|
|
Those would, if uncaught, exit run and leave the waiter to wait
indefinitely for the number of active jobs to reach 0
|
|
|
|
|
|
They are allowed from v12, and MLSAGs are rejected from v13.
|
|
07442a605 Fix build with Boost 1.74 (moneromooo-monero)
|
|
844fb4e94 enforce claiming maximum coinbase amount (moneromooo-monero)
|
|
Claiming a slightly lesser amount does not yield the size gains
that were seen pre rct, so this closes a fingerprinting vector
|
|
|
|
13eee1d6a rpc: reject wrong sized txid (moneromooo-monero)
92e6b7df2 easylogging++: fix crash with reentrant logging (moneromooo-monero)
6dd95d530 epee: guard against exceptions in RPC handlers (moneromooo-monero)
90016ad74 blockchain: guard against exceptions in add_new_block/children (moneromooo-monero)
|
|
267ce5b71 avoid a couple needless copies (moneromooo-monero)
|
|
fb31167b1 Wallet, daemon: From 'help_advanced' back to 'help', and new 'apropos' command (rbrunner7)
|
|
Thanks iDunk for testing
|
|
67ade8005 Add randomized delay when forwarding txes from i2p/tor -> ipv4/6 (Lee Clagett)
|
|
Reporter requested credit to be given to Decred
|
|
|
|
7bd66b01b daemon: guard against rare 'difficulty drift' bug with checkpoints and recalculation (stoffu)
|
|
5d882f4f1 blockchain: fix theoretical race getting bulk timestamps (moneromooo-monero)
|
|
5ef0607da Update copyright year to 2020 (SomaticFanatic)
|
|
This fixes the functional tests, since txes would not be mined
after being sent to the daemon (they'd be waiting for the
dandelion timeout first)
|
|
The cache is discarded when a block is popped, but then gets
rebuilt when the difficulty for next block is requested.
While this is all properly locked, it does not take into account
the delay caused by a database transaction being only committed
(and thus its effects made visible to other threads) later on,
which means another thread could request difficulty between
the pop and the commit, which would end up using stale database
view to build the cache, but that cache would not be invalidated
again when the transaction gets committed, which would cause the
cache to not match the new database data.
To fix this, we now keep track of when the cache is invalidated
so we can invalidate it again upon database transaction commit
to ensure it gets calculated again with fresh data next time it
is nedeed.
|
|
4d8d121 Fix D++ block template check (vtnerd)
|
|
795e186 blockchain: fix total_height in getblocks.bin response (moneromooo-monero)
|
|
f037121 cryptonote_core: remove 'We are most likely forked' message (moneromooo-monero)
|
|
5741b4d blockchain: detect and log bad difficulty calculations (moneromooo-monero)
|
|
|
|
|
|
recalculation
On startup, it checks against the difficulty checkpoints, and if any mismatch is found, recalculates all the blocks with wrong difficulties. Additionally, once a week it recalculates difficulties of blocks after the last difficulty checkpoint.
|
|
|
|
It's time based and we don't have forks every 6 months anymore
|
|
|
|
|
|
|
|
|
|
70609d7 cryptonote_core: take out the time based upgrade warning (moneromooo-monero)
|
|
Update copyright year to 2020
|
|
It doesn't really work anymore since we don't have a fork soon
|
|
ee58362 Used legacy category to match insert_key_images behavior (vtnerd)
|
|
2efbd5f cryptonote: fix reuse of non default tx data when relaying (moneromooo-monero)
|
|
a813c46 cryptonote_core: skip dns checkpoints on startup if not enforced (xiphon)
|
|
|
|
688a3e8 Add timelock verification on device (cslashm)
|
|
|
|
|
|
An automatic tx variable is initialized properly on the first
run through the loop, but not the second. Moving the variable
inside the loop ensures the ctor is called again to init it.
|
|
|
|
|
|
fcb06f7 cryptonote_core: skip block notify on blockchain switching rollback (xiphon)
|
|
c61abf8 remove empty statements (shopglobal)
|
|
9bde70e core: mention time being off in hash rate changes message (moneromooo-monero)
|
|
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)
|
|
054b4c7 protocol: request txpool contents when synced (moneromooo-monero)
|
|
|
|
|
|
ffe7165e wallet: reroll fake outs selection on local tx_sanity_check failure (xiphon)
|
|
02224e71 Fix check_fee() discrepancy. (UkoeHB)
|
|
aa93e388 p2p: remove old debug commands (Aaron Hook)
|
|
- 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
|
|
5de2295 Correct key image check in tx_pool (vtnerd)
|
|
8958b4e blockchain_db: faster fetching of consecutive txes (moneromooo-monero)
|
|
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
|
|
|
|
|
|
for example, in the RPC server
|
|
987c3139 print_coinbase_tx_sum now supports 128 bits sums (moneromooo-monero)
|
|
5985c5af rpc: add bad-blocks to flush_cache RPC (moneromooo-monero)
|
|
Useful for wallet refresh or node sync
|
|
|
|
Cleaning up a little around the code base.
|
|
Coverity 196626
|
|
|
|
67b4a19e simplewallet: noob-friendly help menu (wowario)
|
|
b9fc2066 Add a --keep-fakechain option to keep fakechain databases (JamesWrigley)
|
|
65301c40 core: point out when we hit the block rate visibility limit (moneromooo-monero)
|
|
8a27645 blockchain: fix flushing txes from the txpool (moneromooo-monero)
|
|
08635a08 blockchain: speedup fetching pruned contiguous tx blobs (moneromooo-monero)
|
|
70c9cd3c Change to Tx diffusion (Dandelion++ fluff) instead of flooding (Lee Clagett)
|
|
21d4c216 blockchain: error out if the builtin hashes data size is wrong (moneromooo-monero)
|
|
|
|
M100 = max{300kb, min{100block_median, m_long_term_effective_median_block_weight}}
not
M100 = max{300kb, m_long_term_effective_median_block_weight}
Fix base reward in get_dynamic_base_fee_estimate().
get_dynamic_base_fee_estimate() should match check_fee()
Fee is calculated based on block reward, and the reward penalty takes into account 0.5*max_block_weight (both before and after HF_VERSION_EFFECTIVE_SHORT_TERM_MEDIAN_IN_PENALTY).
Moved median calculation according to best practice of 'keep definitions close to where they are used'.
|
|
|
|
886ed25 blockchain: fix comment wrongly refering to SHA-3 rather than Keccak (moneromooo-monero)
|
|
c96b7ee tx_pool: fix error message assuming incorrectly (moneromooo-monero)
|
|
The tail emission will bring the total above 64 bits
|
|
Flushes m_invalid_blocks in Blockchain.
|
|
About twice as fast, very roughly
|
|
|
|
|
|
|
|
|
|
e4d1674e8 0.15.0.0 release engineering (Riccardo Spagni)
|