| Commit message (Collapse) | Author | Age | Files | Lines |
| |\
| |
| |
| | |
878c781 zmq: apply restricted-mode privacy filtering to get_transaction_pool (greatjourney589)
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Add an include_sensitive parameter to tx_memory_pool::get_pool_for_rpc
(and its core passthrough), mirroring the include_sensitive_data
parameter on the HTTP analog get_transactions_and_spent_keys_info.
When false, receive_time and last_relayed_time are zeroed using the
same masking already applied on the HTTP path.
The ZMQ handler in daemon_handler.cpp passes !m_restricted, so
--restricted-zmq-rpc callers now receive the same privacy-filtered view
as restricted HTTP callers instead of the unfiltered timing metadata
they previously got. Stem-phase txs continue to be excluded regardless
(relay_category::broadcasted filter unchanged).
Refs #10529.
|
| |/
|
|
| |
- txid was a reference to an item which was later deleted in remove_tx_from_transient_lists(), and txid was used after that
|
| | |
|
| |
|
|
|
|
|
| |
Changes complexity from M*N to (2*N+M)*log2(M). The FCMP++ stressnet recently hit mempool sizes of ~55k txs.
If the requesting node's mempool is populated, this results in an average of (55000*55000)/2
(about 1.5 billion) comparisons for the responding node. Under this commit, this would be reduced to
(55000+55000)*log2(55000) comparisons (about 2.6 million), a 99.83% reduction.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Otherwise we can end up double counting txs towards the weight,
which can over-state the pool weight. E.g. relay tx to node in
stem phase, add its weight to pool weight, then receive tx
from another node, then bump the pool weight again. That double
counts the tx towards the pool weight.
If the weight exceeds the max, the node will "prune" txs from the
pool. Thus, over-counting is probably a cause of, but perhaps
not the only cause of:
https://github.com/seraphis-migration/monero/issues/148
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
| |
- 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)
|
| |\
| |
| |
| | |
36ee12b get_block_template_backlog: better sorting logic (SChernykh)
|
| | |
| |
| |
| | |
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.
|
| |/
|
|
|
| |
Nodes who see different txs in a double spend attack will drop each other, splitting the network.
Issue found by @boog900.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[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.
|
| |
|
|
| |
[release-v0.18]
|
| |
|
|
|
|
| |
Also: txs with tx_extra which is too large will not get published to ZMQ
Co-authored-by: SChernykh <sergey.v.chernykh@gmail.com>
|
| | |
|
| |\
| |
| |
| | |
fac7c43 continue pool pruning even if a tx can't be found (j-berman)
|
| | | |
|
| |\ \
| | |
| | |
| | | |
099fc1f 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).
|
| |/ |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
| |
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.
|
| |\
| |
| |
| | |
b10878f10 Change Dandelion++ fluff probability to 20%, and embargo timeout to 39s (Lee Clagett)
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |/ |
|
| | |
|
| | |
|
| |\
| |
| |
| | |
67ade8005 Add randomized delay when forwarding txes from i2p/tor -> ipv4/6 (Lee Clagett)
|
| | | |
|
| |\ \
| | |
| | |
| | | |
5ef0607da Update copyright year to 2020 (SomaticFanatic)
|
| | | |
| | |
| | |
| | | |
Update copyright year to 2020
|
| | | |
| | |
| | |
| | |
| | |
| | | |
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)
|
| |/ / |
|
| |\ \
| | |
| | |
| | | |
ee58362 Used legacy category to match insert_key_images behavior (vtnerd)
|
| | |/ |
|
| |/ |
|
| | |
|
| |
|
|
|
|
| |
- 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)
|
| | | |
|
| |\ \
| | |
| | |
| | |
| | |
| | | |
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)
|
| | |/
| |
| |
| | |
Coverity 196626
|
| |\ \
| | |
| | |
| | | |
054b4c7 protocol: request txpool contents when synced (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
|