Commit Graph
945 Commits
Author SHA1 Message Date
tobtoht 552dd5bdfd Merge pull request #10567
4bec447 tests: remove obsolete memwipe optimization override (selsta)
2026-05-15 11:24:52 +00:00
tobtoht b7e777412e Merge pull request #10536
681ea9f epee: remove LOCAL_ASSERT (jeffro256)
2026-05-13 11:06:54 +00:00
tobtoht 14dc6241ac Merge pull request #10381
2210f85 ringct: make h2d fallible (jeffro256)
2026-05-10 17:41:49 +00:00
selsta 4bec447496 tests: remove obsolete memwipe optimization override 2026-05-09 23:56:26 +02:00
jeffro256 681ea9f1e9 epee: remove LOCAL_ASSERT
LOCAL_ASSERT was only defined on Windows,
only used in the `CHECK_AND_ASSERT` macro,
and was disabled in unit tests anyways,
but only in the main translation unit,
which didn't have local asserts,
since get_set_enable_assert was inline,
so the disabling didn't even do anything.
2026-05-07 13:03:13 -05:00
tobtoht 49ea802139 Merge pull request #9899
05ab316 epee: better scope leaver (jeffro256)
2026-05-06 19:34:39 +00:00
jeffro256 05ab316853 epee: better scope leaver
1. Doesn't allocate a `boost::shared_ptr`
2. Doesn't use a vtable
3. Doesn't use `std::function` wrapper
4. Doesn't necessarily copy functional object
5. Doesn't need a factory function for simple declaration (yay CTAD)
6. Isolated to its own header
7. Name doesn't suck as much
2026-05-06 11:59:00 -05:00
tobtoht 2d48a39658 Merge pull request #10483
0617f43 fix: warning: ignored-attributes (tobtoht)
2cf3e27 fix: warning: unused-result (tobtoht)
d8f27be fix: warning: unused-function (tobtoht)
ffbb0cc fix: warning: unused-const-variable (tobtoht)
57975ab fix: warning: deprecated-declarations (tobtoht)
3294b8e fix: warning: unused-variable (tobtoht)
20f6f5f fix: warning: unused-lambda-capture (tobtoht)
37e76ec fix: warning: inconsistent-missing-override (tobtoht)
2026-05-04 16:36:28 +00:00
jeffro256 2210f85189 ringct: make h2d fallible
One theoretically could have crafted a "long amount" (pre-v10) RingCT transaction
with non-0 padding bytes in the decoded amount which fails receiver scanning, but
passes third-party wallet proof checking.
2026-05-01 19:00:33 -05:00
tobtoht 57975abbd0 fix: warning: deprecated-declarations 2026-04-29 10:21:39 +02:00
tobtoht c7640ed37f Merge pull request #10475
172b4e1 fix: warning: variable set but not used (tobtoht)
2026-04-29 08:07:45 +00:00
tobtoht 172b4e1883 fix: warning: variable set but not used 2026-04-28 16:24:41 +02:00
tobtoht 9d7ba46a36 Merge pull request #10366
baa631f Improve unpack reserve handling (Lee Clagett)
2026-04-27 23:08:32 +00:00
Lee Clagett baa631ff75 Improve unpack reserve handling 2026-04-27 18:25:18 -04:00
tobtoht 30b5d7bd44 daemon: remove miniupnp 2026-04-26 10:54:04 +02:00
tobtoht 94c2ed34c2 Merge pull request #10396
50b259d p2p: isolate regtest from mainnet bootstrap state (Jeetraj)
2026-04-18 08:13:26 +00:00
Jeetraj 50b259d449 p2p: isolate regtest from mainnet bootstrap state 2026-04-09 11:05:47 +05:30
tobtoht 49f3fabbf4 Merge pull request #10382
742c629 p2p: fix hanging shutdown (j-berman)
2026-04-07 09:01:30 +00:00
tobtoht 99addbcc91 Merge pull request #10357
3e2c837 Cleanup some of the fragmented levin handling (Lee *!* Clagett)
2026-04-04 18:44:46 +00:00
tobtoht e992301548 Merge pull request #10388
1498737 zmq: add restricted rpc mode (selsta)
2026-04-02 20:03:09 +00:00
selsta 1498737f7f zmq: add restricted rpc mode 2026-04-01 18:04:24 +02:00
tobtoht 7cfd6f2d22 Merge pull request #10363
3d6b9fb Harden HTTP client auth (Lee *!* Clagett)
2026-03-28 19:50:11 +00:00
j-berman 742c62928a p2p: fix hanging shutdown 2026-03-25 13:27:44 -07:00
jeffro256 d8e978fae6 unit_tests: remove addressof overload for crypto::secret_key 2026-03-21 23:44:19 -10:00
Lee *!* Clagett 3d6b9fb568 Harden HTTP client auth 2026-03-13 13:41:15 -04:00
Lee *!* Clagett 3e2c837b26 Cleanup some of the fragmented levin handling 2026-03-11 13:37:22 -04:00
tobtoht bff2a21e3b Merge pull request #9443
23e29a5 Add Socks v5 support to daemon and wallet (Lee *!* Clagett)
2026-03-08 10:27:05 +00:00
Lee *!* Clagett 23e29a5074 Add Socks v5 support to daemon and wallet 2026-03-06 17:08:49 -05:00
tobtoht 2404f1bc92 Merge pull request #10220
2eed71e cryptonote_basic: fix add_extra_nonce_to_tx_extra() length (jeffro256)
2026-03-01 11:27:03 +00:00
jeffro256 2eed71e575 cryptonote_basic: fix add_extra_nonce_to_tx_extra() length
Reviewed-by: selsta <selsta@sent.at>
Reviewed-by: SChernykh
2026-02-24 17:13:37 -06:00
tobtoht 4efde0f4da Merge pull request #10320
4486925 Transition asio::deadline_timer to asio::steady_timer (Lee *!* Clagett)
2026-02-22 13:01:04 +00:00
tobtoht 55abb977b2 Merge pull request #10312
c93c4fc Misc clang 21 fixes (jeffro256)
2026-02-18 22:18:09 +00:00
Lee *!* Clagett 44869250bd Transition asio::deadline_timer to asio::steady_timer 2026-02-17 11:28:57 -05:00
jeffro256 c93c4fc829 Misc clang 21 fixes
* Use -O3 and other flags instead of -Ofast
  - https://discourse.llvm.org/t/rfc-deprecate-ofast/78687
  - https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
* Find libunwind library based on C++ compiler type, not C compiler type
* In stack_trace.cpp, pass stream modifiers to `std::stringstream` first, then send string to log
* In stack_trace.cpp, remove dead code related to `stack_trace_log` path
* Remove `virtual` method attributues from `final` class `cryptonote::core`
* Remove unused `this` capture in cryptonote protocol handler
* Remove unused variable `bad` in net node
* Use `std::make_unsigned` instead of `boost::make_unsigned`
  - https://github.com/boostorg/type_traits/issues/171
  - https://github.com/boostorg/type_traits/issues/202
  - https://github.com/boostorg/type_traits/pull/199
* Cleanup `include`s in pair serialization
* Test convergence b/t `std::make_unsigned` and `boost::make_unsigned`

Fixes compilation and silences warnings on:
clang version 21.1.6
Linux 6.18.8-3-cachyos
2026-02-09 09:42:32 -07:00
tobtoht 20ef991839 Merge pull request #9494
2a1a489 src: dynamic block sync size Co-authored-by: nahuhh (0xFFFC0000)
2026-02-03 21:25:04 +00:00
j-berman 7d1f779530 p2p: connection patches
- Make sure the server sends a complete response when the client
includes the "Connection: close" header.
- Make sure the server terminates in `m_strand` to avoid
concurrent socket closure and ops processing.
2026-01-15 22:30:43 -08:00
tobtoht 4286fbe6cd Merge pull request #10157
022fb8e unit_tests: @j-berman unit tests for #10157 (jeffro256)
40eb828 cryptonote_core: cache input verification results directly in mempool (jeffro256)
2026-01-03 11:31:27 +00:00
jeffro256andj-berman 022fb8e390 unit_tests: @j-berman unit tests for #10157
Co-authored-by: j-berman <justinberman@protonmail.com>
2026-01-02 15:47:31 -06:00
jeffro256 40eb82873e cryptonote_core: cache input verification results directly in mempool
This replaces `ver_rct_non_semantics_simple_cached()` with an API that offloads
the responsibility of tracking input verification successes to the caller. The
main caller of this function in the codebase, `cryptonote::Blockchain()` instead
keeps track of the verification results for transaction in the mempool by
storing a "verification ID" in the mempool metadata table (with `txpool_tx_meta_t`).
This has several benefits, including:

* When the mempool is large (>8192 txs), we no longer experience cache misses and unnecessarily re-verify ring signatures. This greatly improves block propagation time for FCMP++ blocks under load
* For the same reason, reorg handling can be sped up by storing verification IDs of transactions popped from the chain
* Speeds up re-validating every mempool transaction on fork change (monerod revalidates the whole tx-pool on HFs #10142)
* Caches results for every single type of Monero transaction, not just latest RCT type
* Cache persists over a node restart
* Uses 512KiB less RAM (8192*2*32B)
* No additional storage or DB migration required since `txpool_tx_meta_t` already had padding allocated
* Moves more verification logic out of `cryptonote::Blockchain`

Furthermore, this opens the door to future multi-threaded block verification
speed-ups. Right now, transactions' input proof verification is limited to one
transaction at a time. However, one can imagine a scenario with verification IDs
where input proofs are optimistically multi-threaded in advance of block
processing. Then, even though ring member fetching and verification is
single-threaded inside of `cryptonote::Blockchain::check_tx_inputs()`, the
single thread can skip the CPU-intensive cryptographic code if the verification
ID allows it.

Also changes the default log category in `tx_verification_utils.cpp` from "blockchain" to "verify".
2026-01-02 15:47:19 -06:00
j-berman d7c5f95704 p2p: fix race causing dropped connections during sync
Without this commit:
1) read height from DB
2) add block to chain in separate thread
3) read chain for block id's and request them from peer
4) ERR in handle_response_chain_entry, peer's first block is the
one that was added to the chain, which has block idx=height from
step 1.

This commit reads the chain for height and highest block id's
in one go while holding the m_blockchain_lock to avoid the race.
2025-12-11 21:36:42 -08:00
j-berman c01e1fa288 Fix logging deadlock 2025-11-11 10:43:39 -08:00
tobtoht 8259df0d1d Merge pull request #9860
dbc8402 wallet: fix wallet_keys_unlocker (jeffro256)
2025-09-08 18:08:22 +00:00
jeffro256 dbc8402da6 wallet: fix wallet_keys_unlocker
Fix four issues with wallet_keys_unlocker:
1. It won't decrypt if there are unlockers open simulataneously on multiple `wallet2` instances
2. It won't decrypt if the first unlocker was disabled (i.e. `locked=false`), even with a second non-disabled unlocker
3. If a destructor of an earlier unlocker is triggered before the destructor of a later unlocker, it will re-encrypt too early, while the second unlocker is still in scope
4. Calling the 3-parameter constructor with `locked=true` after an unlocker already exists will "double-encrypt"  the spend key after its destructor since the local variable is `locked=false` and the field member is `locked=true`

Also, replace `wallet2::decrypt_account_for_multisig` with `wallet_keys_unlocker`.
2025-09-04 15:43:38 -05:00
tobtoht ff000b654d Merge pull request #9927
6fd3a2e tools::variant: remove (jeffro256)
2025-07-10 12:32:20 +00:00
tobtoht 6f2efeca1e Merge pull request #9940
e9c89dc wallet: kill support for deprecated ephemeral Boost messages (jeffro256)
2025-07-10 12:29:13 +00:00
Justin Bermanandnahuhh 6e26e4477e wallet: improve lookahead logic & make rpc persistent 2025-07-07 22:16:09 +00:00
benevanoffandnahuhh b987676d63 wallet: ensure subaddress keys table is at least size of requested lookahead 2025-06-27 21:35:16 +00:00
jeffro256 e9c89dc6ab wallet: kill support for deprecated ephemeral Boost messages
The commit kills support for deprecated ephemeral Boost messages: signed/unsigned transaction sets, pending transactions, reserve proofs, MMS messages, etc.
It does NOT kill support for loading very old wallets in Boost format, that should be supported indefinitely. These messages were deprecated 5 years ago. Since
then, we have had a hard fork to enable a new non-compatible transaction type (w/ view tags), and disable the old transaction type. This renders basically all
of the aforementioned messages before that HF useless, with the possible exception of reserve proofs.

This commit also cleans up dead inclusions of boost serialization headers.

This commit is part of upstreaming Carrot/FCMP++. Killing support for Boost messages now means less boilerplate Boost serialization review for Carrot/FCMP++.
2025-05-30 14:24:56 -05:00
jeffro256 6fd3a2e06b tools::variant: remove 2025-05-15 13:48:36 -05:00
0xFFFC0000andnahuhh 2a1a4897cb src: dynamic block sync size
Co-authored-by: nahuhh
2025-05-13 13:51:42 +00:00