| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| |
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
| |
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!
|
| |
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
| |
[RELEASE]
1. Use std::is_standard_layout and std::is_trivially_copyable instead of std::is_pod for KV byte-wise serialization, which fixes compile issue for Boost UUIDs
2. Removed reimplementation of std::hash for boost::uuids::uuid
3. Removed << operator overload for crypto::secret_key
4. Removed instances in code where private view key was dumped to the log in plaintext
Release version of #9450, containing C++14 modified assertions
|
| |
|
|
|
|
|
| |
- Fixed uninitialized `state->x` warning
- Fixed broken code with `-O3` or `-Ofast`
The old code is known to break GCC 10.1 and GCC 11.4
|
| |
|
|
|
|
|
|
|
|
|
|
| |
It's not allowed to use WaitForSingleObject with _beginthread, because the thread closes its own handle before exiting.
So the wait function will either wait on an invalid handle, or on a different handle used by something else.
Or, if it starts waiting before the thread exits, the behavior is undefined according to MS: "If this handle is closed while the wait is still pending, the function's behavior is undefined."
In my test sync I observed threads getting stuck infinitely on WaitForSingleObject, and then rx_set_main_seedhash spamming new threads when RandomX seed changes again. Eventually the system ran out of resources, and monerod aborted with "Couldn't start RandomX seed thread" message.
This PR fixes it by using `_beginthreadex` instead and explicitly closing the handle when it's safe.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
| |
- 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
|
| |\
| |
| |
| | |
268a039 Optimized keccak implementation (SChernykh)
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
All tests were conducted on the same PC (Ryzen 5 5600X running at fixed 4.65 GHz).
Before:
test_cn_fast_hash<32> (100000 calls) - OK: 1 us/call
test_cn_fast_hash<16384> (1000 calls) - OK: 164 us/call
After:
test_cn_fast_hash<32> (100000 calls) - OK: 0 us/call
test_cn_fast_hash<16384> (1000 calls) - OK: 31 us/call
More than 5 times speedup for cn_fast_hash.
Also noticed consistent 1-2% improvement in test_construct_tx results.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |/ |
|
| | |
|
| |\
| |
| |
| | |
c36ea26 fix ge_p3_is_point_at_infinity(), which is evaluating field elements that haven't been reduced by the field order (koe)
|
| | |
| |
| |
| | |
haven't been reduced by the field order
|
| |\ \
| | |
| | |
| | | |
e08abaa multisig key exchange update and refactor (koe)
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | | |
If allocating large pages fails, we don't try again.
This has the obvious drawback of not being able to use large pages
if they fail once.
|
| |\ \ \
| |_|/
|/| |
| | | |
187633c slow_hash: don't blow out Mac stack on ARM64 (Howard Chu)
|
| | | | |
|
| |/ / |
|
| |/ |
|
| | |
|
| |\
| |
| |
| | |
86263b3 Honor LARGE_PAGES flag in randomx umask (Howard Chu)
|
| | | |
|
| |/ |
|
| | |
|
| |\
| |
| |
| |
| |
| | |
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)
|
| | | |
|
| |/ |
|
| |\
| |
| |
| | |
a11ec4ac1 Support for supercop ASM in wallet, and benchmark for supercop (Lee Clagett)
|
| | | |
|
| |/
|
|
| |
include all public proof parameters in Schnorr challenges, along with hash function domain separators. Includes new randomized unit tests.
|
| |\
| |
| |
| | |
7178bb5c8 keccak: remove aligned check (moneromooo-monero)
|
| | |
| |
| |
| |
| |
| | |
Some tools report the alignment check as UB, which seems a bit
dubious, but since the performance difference between the two
versions is minimal, I'll go with the safe version
|
| |/
|
|
| |
Update copyright year to 2020
|
| |\
| |
| |
| | |
613071f use memwipe on secret k/alpha values (moneromooo-monero)
|
| | |
| |
| |
| | |
Reported by UkoeHB_ and sarang
|
| |/
|
|
|
|
| |
- 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
|
| |\
| |
| |
| | |
fe92fa1 [randomx] Add missing randomx_vm_set_cache() (cohcho)
|
| | | |
|
| |\ \
| |/
|/|
| | |
c3613031 Silence miner debugmsg spam (Howard Chu)
|
| | |
| |
| |
| | |
Don't try to allocate the dataset repeatedly if it has already failed.
|
| |/ |
|
| |
|
|
|
|
|
| |
* Faster cache initialization with SSSE3/AVX2
* Automatic detection of CPU capabilities in RandomX
* Fixed a possible out-of-bounds access in superscalar program generator
* Use MONERO_RANDOMX_UMASK to manually disable RandomX flags in monerod
|
| |
|
|
| |
Make sure dataset gets re-init'd if a reorg changes the epoch
|
| |
|
|
|
|
| |
We don't need to detect if the cache has changed, just always
call to set it on the VM. The call will be a no-op if the cache
hasn't changed.
|
| |
|
|
| |
Was using the wrong cache slot, and returning invalid PoW hashes to RPC clients
|