Commit Graph
100 Commits
Author SHA1 Message Date
jeffro256 a6c9d62e66 depends: Bitcoin -> Monero typo 2026-06-17 17:05:29 -05:00
jeffro256 e9a8a268be wallet: wallet args take argv[] as const 2026-06-14 19:00:23 -05:00
jeffro256 9dbce17bb5 Blockchain: option for fast manual block popping 2026-06-07 14:59:57 -05:00
jeffro256 c1f7f0bdb6 crypto: fix strict aliasing for expandedKey in aesb.c 2026-06-07 12:32:10 -05:00
jeffro256andselsta 360db8f6fe unit_tests: test every single field of JSON tx repr
Co-authored-by: selsta <selsta@sent.at>
2026-06-05 12:43:02 -05:00
jeffro256 589dd0a973 ringct: merge decodeRct and decodeRctSimple 2026-06-05 12:37:00 -05:00
jeffro256 03018306a9 ledger: lazy view key loading
Defer loading of private view key from device until first time it is needed.
Do not fail if this fails. This has two effects:

1. The prompt to export the view key is only needed once when creating a `cryptonote::account_base`
2. The call to `connect()` doesn't fail if the user decies to not export the viewkey, and thus usage of the device without exporting view keys is possible

This is a small convenience for Ledger users, but will be an even larger convenience for Ledger device testing
2026-06-04 13:52:33 -05:00
jeffro256 868782513e crypto: split wire serialization in header 2026-05-27 00:18:48 -05:00
9b337ca01f rpc: remove pay-to-use RPC on node side
Co-authored-by: tobtoht <tob@featherwallet.org>
Co-authored-by: SNeedlewoods <sneedlewoods_1@protonmail.com>
2026-05-26 22:54:30 +02:00
jeffro256andselsta 7704a194f0 contrib: fix unaligned&aliased levin buffer reads
Co-authored-by: selsta <selsta@users.noreply.github.com>
2026-05-21 21:16:45 -05:00
jeffro256 aa3abe2c03 net_ssl: Use EVP API to create EVP_PKEYs when available
The following functions are deprecated in OpenSSL 3.0 and used in net_ssl.cpp: `RSA_free`, `EC_KEY_free`, `RSA_new`, `RSA_generate_key_ex`, `EC_KEY_set_group`, `EC_KEY_generate_key`.

Since EVP_RSA_gen was added in OpenSSL 3.0 and since the aforementioned functions were deprecated in OpenSSL 3.0, I check if the OpenSSL version >= 3.0, and use EVP_RSA_gen instead of everything else up to assigning the private key to the certificate in `create_rsa_ssl_certificate`.

I also deleted `create_ec_ssl_certificate` since it wasn't used.
2026-05-18 23:47:46 -05:00
jeffro256 fbd7776b7b monero_blockchain_export: >2.5x blocksdat export speed
Uses efficient DB traversal to slash disk read time, which is a large chunk of the run-time.
2026-05-13 14:30:30 -05:00
jeffro256andselsta b8cc5b6a4b blockchain_db: hide sensitive txs in get_txids_loose
Co-authored-by: selsta <selsta@sent.at>
2026-05-13 14:20:50 -05:00
jeffro256 123e33d34a wallet: fix RPC describe transfer source entry 2026-05-13 14:05:43 -05:00
b4c54499cd wallet: add wallet2_basic library types
The `wallet2_basic` library is a minimalistic library for loading / storing historic `wallet2` files. It has several design goals:
* Enable future migration away from monolithic `wallet2` codebase without losing funds
* Simplify FCMP++/Carrot integration
* Speed-up compile-time for current codebase, but especially the FCMP++/Carrot integration, which is split over several translation units

Co-authored-by: j-berman <justinberman@protonmail.com>
Co-authored-by: selsta <selsta@sent.at>
2026-05-08 12:18:33 -05:00
jeffro256 617eb9d394 core_tests: remove unused --test_data_path CLI argument 2026-05-07 13:20:13 -05: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
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
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
jeffro256 0545a9611c cryptonote_core: add change address sanity check
Prevents silly mistakes where wrong change address is passed
2026-04-23 11:35:31 -05:00
jeffro256 def9420da1 blockchain_utilities: fix --data-dir option 2026-04-22 00:27:53 -05:00
jeffro256 f684e7f3ce functional_tests: fix HTTP digest auth sporadic failures 2026-04-13 15:13:15 -05:00
jeffro256 d8e978fae6 unit_tests: remove addressof overload for crypto::secret_key 2026-03-21 23:44:19 -10:00
jeffro256 887752611a crypto: fix chacha aliasing and alignment issues 2026-03-21 23:30:48 -10:00
jeffro256 c5be4dda1c crypto: STD-compliant shifting in sc_check() 2026-03-21 22:34:01 -10: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
jeffro256 2b9d2161d3 cryptonote_core: remove Boost serialization for tx_source_entry 2026-02-22 02:22:03 -06:00
jeffro256 2f3527097b ignore: clang cache
https://clangd.llvm.org/design/indexing#backgroundindex
2026-02-09 12:30:59 -07:00
jeffro256 3f1b610a97 ignore: compile_commands.json
https://clang.llvm.org/docs/JSONCompilationDatabase.html
2026-02-09 11:59:50 -07: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
jeffro256 6a99c22cbc rpc: return error gracefully on cryptonight v1 check 2026-01-31 10:14:05 -06:00
jeffro256 b90f455e6b blockchain_db: remove {add/get}_max_block_size() 2026-01-21 11:49:46 -06:00
jeffro256 7a2ba648f4 wallet: add source info to describe_transfer RPC 2026-01-15 12:44:54 -06:00
jeffro256 3f964fcdb5 blockchain_db/rpc: faster is_key_image_spent
Does the following to speedup the `/is_key_image_spent` RPC endpoint:
  - Reads all on-chain key images in one LMDB read transacion
  - Uses `cryptonote_core::are_key_images_spent_in_pool()` instead of `cryptonote_core::get_pool_transactions_and_spent_keys_info()` for pool querying. This only does a LMDB read per key image if in the pool.
  - Filters known on-chain spent key images before querying for key images spent in pool

This RPC endpoint was causing major daemon slowdowns in the Carrot/FCMP++ Alpha Stressnet when using the `rescan_spent` command, especially for large wallets.
The effect was much worse if the mempool was full.
2026-01-07 00:49:44 -06:00
jeffro256 2d978db016 common: fix apply_permutation() for std::vector<bool> 2026-01-05 18:51:01 -06:00
jeffro256 bc5cdf47db wallet: unrestrict get_transfers and get_transfer_by_txid 2026-01-05 14:17:10 -06: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
jeffro256 0673c957af tx_memory_pool: speedup get_complement() for large requests
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.
2025-11-26 13:40:33 -06:00
jeffro256 d8d212ca42 common: add std equivalent of hash_combine 2025-11-13 11:59:57 -06:00
jeffro256 a817da5215 serialization: revert va_args_commaprefix usage 2025-11-13 11:48:13 -06:00
jeffro256 38bc62741b Blockchain: cancel pop_blocks() operation on interupt
On SIGINT, `Blockchain::cancel()` is called, which sets `m_cancel` to `true`.
This commit stops attempting to pop blocks from the chain once that flag is
set. This should leave the blockchain in a well-define state, even if the
`pop_blocks()` operation itself did not "complete".
2025-11-07 13:21:00 -06:00
jeffro256 1bcca58d82 simplewallet: use passed decrypted payment ID from wallet2 for notifications
Adds payment ID paramater to `on_money_received()` wallet callback.
2025-11-06 00:53:06 -06:00
jeffro256 acda1d4a37 p2p: unpack memory layout of peerlist entries
The `#pragma pack(push, 1)` directive was causing unaligned memory
accesses to shared pointers in `epee::net_utils::network_address`.
The peerlist file uses Boost serialization, so this should be
backwards compatible.
2025-11-05 15:30:52 -06:00
jeffro256 32d9359b9a fuzz: fix some warnings 2025-10-28 01:13:00 -05:00
jeffro256 9e57f9be83 blockchain_prune: check DB version
Prevents accidental future corruption of the database by refusing
to prune the DB before checking the version value inside the
properties table.
2025-10-27 18:11:54 -05:00
jeffro256 5905b202f0 wallet: sanity check ring indices only against spendable 2025-10-15 17:00:21 -05:00
jeffro256 ece0342cb5 epee: align container pod as blob serialization
`{un}serialize_stl_container_pod_val_as_blob()` use aligned memory accesses on potentially unaligned pointers.
2025-10-14 16:05:43 -05:00
jeffro256 a863bf7095 BlockchainDB: rm skip_coinbase in get_blocks_from()
Parameter `skip_coinbase` was always set to `true`, and didn't actually skip the coinbase transactions. The method broke when set to `false`.

Noticed by @akildemir
2025-10-13 16:03:44 -05:00
jeffro256 0fc5e87f2c cryptonote_core: rm confusing/redundant BP consensus rule
This rule is confusing/redundant because before v8, no
bulletproofs whatsoever were allowed. And during and after
v8, ONLY multi-output bulletproofs were allowed, i.e.
exactly 1 bulletproof is allowed which proves the range of
all amount commitments in the transaction.

Sources:
  * No BP before v8:
    - https://github.com/monero-project/monero/blob/d32b5bfe18e2f5b979fa8dc3a8966c76159ca722/src/cryptonote_core/blockchain.cpp#L3021-L3032
  * Only 1 BP allowed:
    - https://github.com/monero-project/monero/blob/d32b5bfe18e2f5b979fa8dc3a8966c76159ca722/src/cryptonote_basic/cryptonote_format_utils.cpp#L174
    - https://github.com/monero-project/monero/blob/d32b5bfe18e2f5b979fa8dc3a8966c76159ca722/src/cryptonote_basic/cryptonote_format_utils.cpp#L150
  * BP must cover all outputs:
    - https://github.com/monero-project/monero/blob/d32b5bfe18e2f5b979fa8dc3a8966c76159ca722/src/cryptonote_basic/cryptonote_format_utils.cpp#L190-L194
    - https://github.com/monero-project/monero/blob/d32b5bfe18e2f5b979fa8dc3a8966c76159ca722/src/cryptonote_basic/cryptonote_format_utils.cpp#L166-L170
2025-10-09 15:57:54 -05:00
jeffro256 ca27d519df cryptonote_basic: remove redundant call to get_transaction_hash() in overload
Issue noticed by DataHoarder.
2025-10-05 16:47:57 -05:00
jeffro256andiamamyth 4e9d199913 daemon: fix print_cn command when 0 connections
Deferencing the result of `std::max_element()` when `res.connections` has 0 elements leads to UB, and segfaults in practice.

Co-authored-by: iamamyth <user@example.com>
2025-09-28 13:55:44 -05:00
jeffro256 488bf71925 cryptonote_basic: add overload for get_block_longhash() 2025-09-07 09:58:20 -05: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
jeffro256 57c40b8993 functional_tests: fix piecemeal export in cold_signing, part 2
Do not mark output import as done if exception is thrown for output being past last imported output.
2025-08-26 15:38:25 -05:00
jeffro256 22433f8414 functional_tests: fix piecemeal export in cold_signing
The `while` loop condition was incorrect, which could lead to incomplete imports.
Also, setting `start` to an *undone* output speeds up the test by 16s on my machine.
2025-08-22 13:21:32 -05:00
jeffro256 78b8c83fdf functional_tests: check transfers list consistency in cold_signing 2025-08-21 11:34:58 -05:00
jeffro256 a5b2ad04c5 BlockchainLMDB: do not assume alignment for alt block entries 2025-08-20 23:23:48 -05:00
jeffro256 613ee85402 cryptonote_basic: remove state_idle in connection_context 2025-08-07 20:55:44 -05:00
jeffro256andj-berman dc350f35a5 wallet: deprecate wallet2::find_and_save_rings()
Rings for outgoing transactions are stored within the scanning code since the last hardfork,
so this code is largely unneccessary now.

Co-authored-by: j-berman <justinberman@protonmail.com>
2025-07-29 12:28:39 -05:00
jeffro256 377071ea89 cryptonote_core: remove blockchain_storage_boost_serialization.h
unused
2025-07-24 02:22:14 -05:00
jeffro256 5e54c72629 wallet: RPC method /incoming_transfers without daemon connection
Allows calling /incoming_transfers for cold wallets especially
2025-07-24 01:51:06 -05:00
jeffro256 a2f336d22f serialization: massage pair casting to remove user-defined-cast warnings
Similar to: https://github.com/sstsimulator/sst-core/pull/1315
2025-07-16 00:03:42 -05:00
jeffro256 2820757d9d common: remove tools::add_element
Since C++17, `std::vector::emplace_back()` returns a reference, so this helper isn't needed anymore.
2025-07-11 11:31:46 -05:00
jeffro256 3c05f00b85 crypto: check+throw for Cryptonight v1 invalid input
If `crypto::cn_slow_hash()` is called with `variant=1` and an input length of less thab 43 bytes, it triggers a program exit.
This checks first and throws an exception instead.

Thank you to ADA Logics and the MAGIC Monero Fund for reporting this!
2025-07-11 11:19:43 -05:00
jeffro256 6131ddef10 rpc: return error correctly on bad key image string
Because of the missing `return` statement, the status is set to "OK" later on in the method when it shouldn't be.

Thank you to ADA Logics and the MAGIC Monero Fund for reporting this!
2025-07-11 10:39:03 -05:00
jeffro256andnahuhh 6d06de74b2 wallet: refactor subaddress expansion & add to transfer test 2025-07-07 22:16:11 +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
4c341da1e5 BlockchainLMDB: remove virtual qualifers from overriden methods and mark final
According to guideline at https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines.html#c128-virtual-functions-should-specify-exactly-one-of-virtual-override-or-final

Co-authored-by: SNeedlewoods <sneedlewoods_1@protonmail.com>
Co-authored-by: Lee *!* Clagett <code@leeclagett.com>
2025-05-30 12:11:43 -05:00
jeffro256 6fd3a2e06b tools::variant: remove 2025-05-15 13:48:36 -05:00
jeffro256 deb1ec93c8 BlockchainLMDB: mark overridden methods with override 2025-05-15 13:13:39 -05:00
jeffro256 0db4ed059e gpg_keys: bump jeffro256 expiration to 2027-05-09 2025-05-08 19:11:54 -05:00
jeffro256 06b74ae3f5 ringct & cryptonote_basic: detangle dependencies
`libringct` was linking against `libcryptonote_basic` for a single, one-line convenience function: `cryptonote::get_blob_hash`.
Since `cryptonote_basic.h` includes `rctTypes.h`, this one function effectively made an explicit circular dependency between
the two libraries. `cryptonote_format_utils.cpp` was including header `rctSigs.h` from `libringct`, when only `rctOps.h` from
`libringct_basic` needed to be included. `libcryptonote_basic` wasn't explictly linking against `libringct_basic` nor
`libringct` like it should have. And `libblockchain_db` wasn't linking against `libcryptonote_basic` like it should have. We
can also downgrade `libblockchain_db`'s dependency on `libringct` to `libringct_basic`.
2025-05-07 19:52:24 -05:00
jeffro256 98b79485df msys2 build: include int headers 2025-04-29 00:57:37 -05:00
jeffro256 7cb406e05a cryptonote_basic: is_coinbase() take prefix
Useful for wallet business logic, which stores the prefixes in `m_transfers`, not the whole transaction.
2025-04-02 11:01:49 -05:00
jeffro256 7b28be0ef3 functional_tests: test PR #9863 2025-04-01 13:56:44 -05:00
jeffro256 8af33c71cf epee: syncobj: replace shims with Boost classes
a. `critical_section` is functionally identical to a `boost::recursive_mutex`
b. `critical_region_t` is functionally identical to a `boost::unique_lock`
c. remove some vestigial definitons `g_test_dbg_lock_sleep` as a variable
2025-04-01 11:09:26 -05:00
jeffro256 18376ca57d epee: remove reg_exp_definer.h
Locking to initialize static block variables isn't necessary since C++11:
https://en.cppreference.com/w/cpp/language/storage_duration#Static_block_variables
2025-03-31 14:02:15 -05:00
jeffro256 f728c963c1 CMakeLists: add cache option for MANUAL_SUBMODULES 2025-03-28 13:14:06 -05:00
jeffro256 6d6e8e1733 construct_tx_and_get_tx_key: don't erase exception trace 2025-03-26 15:10:09 -05:00
jeffro256 332d92ffbe epee: span::operator[] allow mut ref from const span
Changes the `operator[]` method so we can get mutable
references to elements even if the span is `const`.
The operator is now also `constexpr`.
This behavior matches `std::span`.

C++ standard reference: https://en.cppreference.com/w/cpp/container/span/operator_at
2025-03-22 16:53:17 -05:00
jeffro256 51a72c1209 Blockchain: remove skip for pruned txs in check_tx_inputs()
I can't see how this would trigger in the current codebase, so it's not a *current* safety issue,
but I can very well see it becoming on in the future if downstream code doesn't handle the passing
of pruned transactions correctly. I think the safe/good choice would be to remove this skip now
that all transactions that pass into the mempool are supposed to be unpruned. And for all in-block
txs, `check_tx_inputs()` isn't called for checkpointed blocks, and we sync pruned blocks only if
syncing checkpointed blocks.
2025-03-17 09:31:50 -05:00
jeffro256 528664b1c8 cryptonote_protocol: fix handling of pruned blocks during sync 2025-03-17 09:09:25 -05:00
jeffro256 5393bef139 wallet: fix different-signedness int comparison warnings 2025-03-13 04:10:29 -05:00
jeffro256 c069c04ede blockchain sync: reduce disk writes from 2 to 1 per tx 2025-03-10 01:02:37 -05:00
jeffro256 9d93a3d098 crypto: add function sc_1() 2025-03-07 19:43:05 -06:00
jeffro256 418a9adb13 BlockchainLMDB: fix data.mdb nuking on Windows 2025-02-17 11:57:32 -06:00
jeffro256 9386f87a78 ringct: remove inclusion of cryptonote_format_utils.h in rctOps.cpp
This vestigial include line breaks some downstream builds
2025-01-31 16:04:08 -06:00
jeffro256 70e4412930 wallet: mark wallet error throwing functions as noreturn
Simplifies calling logic where a branch ends but a return value is needed
2025-01-28 00:05:31 -06:00
jeffro256 ff4e86dc4f ringct: remove unused range proof types and fix serialization bug 2025-01-18 23:40:19 -06:00
jeffro256 254ac2baef crypto: make CRYPTO_DEFINE_HASH_FUNCTIONS adhere strict aliasing
This code could've caused issues if the pointer to the `public_key`, `key_image`, `hash`, etc wasn't aligned on an 8-byte boundary.
2025-01-09 11:58:39 -06:00
jeffro256 d64d3bd530 p2p: remove dead protocol defs 2024-12-27 15:22:19 -06:00
jeffro256andMike c99c07bf4a common/password: flush confirm prompt before user input
Co-authored-by: Mike <mpech@tuta.io>
2024-12-26 13:32:11 -06:00
jeffro256 f84f237af7 unit_tests: fix variant tests after 'optional' name split 2024-12-24 13:55:18 -06:00
jeffro256 fe170698b1 Blockchain: get height of RingCT fork programmatically
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.
2024-12-16 15:16:38 -06:00
jeffro256 b5f29eeacd p2p: allow comments in banlist files
In-line comments explicitly explaining banned hosts/subnets might help assuage fears of some good banlists' arbitaryiness.
2024-12-12 23:48:06 -06:00
jeffro256 eb6f12c213 serialization: silence warning about shifting uint8_t by 8
Some compilers are stupid and give a warning on this line when `T = uint8_t`, even though it will never run
2024-11-08 15:06:32 -06:00
jeffro256andj-berman c7dce222f8 ringct: add operator!= for key
Part of upstreaming Seraphis/Carrot

Co-authored-by: j-berman <justinberman@protonmail.com>
2024-11-06 03:01:48 -06:00
jeffro256 c1ead13df3 wallet2_api: use std::optional instead of handmade optional
Cleaner, adheres to POLA, and allows for better compiler optimization. Declaration should be backwards compatible. Requires C++17.
2024-10-30 13:04:30 -04:00
jeffro256 0f9a5c1020 crypto: remove unused OAES code
@SyntheticBird45 reported that the OpenBSD compiler gives warnings about string functions used in `oaes_sprintf`,
as well as use of `rand()` in `oaes_key_gen`. Neither of these functions are used in the codebase. Removing the
unused OAES functions silences these warnings.
2024-10-07 11:04:34 -05:00