Age | Commit message (Collapse) | Author | Files | Lines |
|
eeb7c7c tx_memory_pool: make double spends a no-drop offense (jeffro256)
|
|
32b3a56 wallet2: adjust fee during backlog, fix set priority (selsta)
|
|
Nodes who see different txs in a double spend attack will drop each other, splitting the network.
Issue found by @boog900.
|
|
|
|
7807f56 unit_tests: fix strtoul unit test (jeffro256)
|
|
|
|
33e3f72 serialization: fix infinite loops and clean up dispatching (jeffro256)
|
|
f2360a7 build: prepare v0.18.3.2 (selsta)
|
|
c97c2ec docs: omit i2p port number from ANONYMITY_NETWORKS (selsta)
|
|
0cc8f7a cryptonote_core: early out on out of bounds scaling parameter (selsta)
|
|
b987870 depends: openssl: update to 3.0.13 (tobtoht)
3aabfcf depends: unbound: update to 1.19.1 (tobtoht)
8322f9c depends: expat: update to 2.6.0 (tobtoht)
|
|
fbd0b19 remove ARCH=x86-64 from release-static (woodser)
|
|
052df1b Zero initialize rctSigBase elements (Lee *!* Clagett)
|
|
f5b8634 Add <cstdint> to aligned test (Lee *!* Clagett)
|
|
98ee46f Disable/fix ports with I2P (Lee Clagett)
|
|
dfb990e wallet: mitigate statistical dependence for decoy selection within rings (jeffro256)
|
|
9a89e2d wallet2: call on_reorg callback in handle_reorg (j-berman)
1df5630 wallet2: add on_reorg callback (Crypto City)
|
|
51d7a69 wallet: feature: transfer amount with fee included (jeffro256)
|
|
|
|
To transfer ~5 XMR to an address such that your balance drops by exactly 5 XMR, provide a `subtractfeefrom` flag to the `transfer` command. For example:
transfer 76bDHojqFYiFCCYYtzTveJ8oFtmpNp3X1TgV2oKP7rHmZyFK1RvyE4r8vsJzf7SyNohMnbKT9wbcD3XUTgsZLX8LU5JBCfm 5 subtractfeefrom=all
If my walet balance was exactly 30 XMR before this transaction, it will be exactly 25 XMR afterwards and the destination address will receive slightly
less than 5 XMR. You can manually select which destinations fund the transaction fee and which ones do not by providing the destination index.
For example:
transfer 75sr8AAr... 3 74M7W4eg... 4 7AbWqDZ6... 5 subtractfeefrom=0,2
This will drop your balance by exactly 12 XMR including fees and will spread the fee cost proportionally (3:5 ratio) over destinations with addresses
`75sr8AAr...` and `7AbWqDZ6...`, respectively.
Disclaimer: This feature was paid for by @LocalMonero.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Resolves #8687
|
|
|
|
|
|
|
|
Since we are required to check for uniqueness of decoy picks within any given
ring, and since some decoy picks may fail due to unlock time or malformed EC points,
the wallet2 decoy selection code was building up a larger than needed *unique* set of
decoys for each ring according to a certain distribution *without replacement*. After
filtering out the outputs that it couldn't use, it chooses from the remaining decoys
uniformly random *without replacement*.
The problem with this is that the picks later in the picking process are not independent
from the picks earlier in the picking process, and the later picks do not follow the
intended decoy distribution as closely as the earlier picks. To understand this
intuitively, imagine that you have 1023 marbles. You label 512 marbles with the letter A,
label 256 with the letter B, so on and so forth, finally labelling one marble with the
letter J. You put them all into a bag, shake it well, and pick 8 marbles from the bag,
but everytime you pick a marble of a certain letter, you remove all the other marbles
from that bag with the same letter. That very first pick, the odds of picking a certain
marble are exactly how you would expect: you are twice as likely to pick A as you are B,
twice as likely to pick B as you are C, etc. However, on the second pick, the odds of
getting the first pick are 0%, and the chances for everything else is higher. As you go
down the line, your picked marbles will have letters that are increasingly more unlikely
to pick if you hadn't remove the other marbles. In other words, the distribution of the
later marbles will be more "skewed" in comparison to your original distribution of marbles.
In Monero's decoy selection, this same statistical effect applies. It is not as dramatic
since the distribution is not so steep, and we have more unique values to choose from,
but the effect *is* measureable. Because of the protocol rules, we cannot have duplicate
ring members, so unless that restriction is removed, we will never have perfectly
independent picking. However, since the earlier picks are less affected by this
statistical effect, the workaround that this commit offers is to store the order that
the outputs were picked and commit to this order after fetching output information over RPC.
|
|
47d8899 Fix missing checks for IsObject in ZMQ jsonrpc reading (Lee Clagett)
|
|
fe746dc Fix EAGAIN bug in ZMQ-RPC/ZMQ-PUB (Lee *!* Clagett)
|
|
|
|
fe47806 wallet: fix multisig key memory leak (jeffro256)
|
|
6c38c21 heed NO_COLOR environment variable (moneromooo-monero)
|
|
5435202 readline_buffer: disable bracketed paste escape sequences (Jeffrey Ryan)
|
|
e7d51e5 JH hash compiler workarounds (SChernykh)
|
|
0f75585 multisig: better errors for small malformed kex msgs (jeffro256)
|
|
eae62a0 ringct: make
ctSigBase serialization follow strict aliasing rule (jeffro256)
|
|
14ae812 cryptonote_config: include cstdint (jeffro256)
|
|
5b0c274 gitian: add riscv64 support (selsta)
|
|
- 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
|
|
|
|
Multisig keys per-transfer were being wiped, but not erased, which lead to a ginormous
quadratic bloat the more transfers and exports you performed with the wallet.
|
|
|
|
|
|
09a88cc Update RandomX to 1.2.1 (tevador)
|
|
bdebf68 wallet2: ensure transfers and sweeps use same fee calc logic (j-berman)
|
|
e0b2123 http_client: reduce number of packets sent for small bodies (jeffro256)
|
|
Resolves https://github.com/monero-project/monero/issues/8493
|
|
0c04018 depends: openssl: update to 3.0.11 (tobtoht)
|
|
Accessing an object of type `char` thru an lvalue of type `crypto::hash8` is undefined behavior.
https://developers.redhat.com/blog/2020/06/03/the-joys-and-perils-of-aliasing-in-c-and-c-part-2
|
|
Header was using `uint64_t` without including `<cstdint>` which caused some issues downstream for windows builds
|
|
|
|
|
|
Ensures both transfers and sweeps use a fee that's calculated
from the tx's weight. Using different logic could theoretically
enable distinguishability between the two types of txs. We don't
want that.
|
|
|
|
69de381 add a test for the long term weight cache (Boog900)
810f6a6 Fix: long term block weight cache The long term block weight cache was doing a wrong calculation when adding a new block to the cache. (Boog900)
|
|
fbcd8da build: prepare v0.18.3.1 (selsta)
|
|
03d51b7 wallet2: fix refresh function parameters (selsta)
|
|
|
|
The long term block weight cache was doing a wrong calculation when
adding a new block to the cache.
|
|
|
|
max_blocks is last on master branch
|
|
3f9140e storages: change error log category to serialization (selsta)
It's over 9000!!!
|
|
205c804 wallet: store watch-only wallet correctly when change_password() is called (jeff)
|
|
|
|
|
|
|
|
The Monero GUI code was calling `Monero::wallet::setPassword()` on every open/close for some reason,
and the old `store_to()` code called `store_keys()` with `watch_only=false`, even for watch-only wallets.
This caused a bug where the watch-only keys file got saved with with the JSON field `watch_only` set to 0,
and after saving a watch-only wallet once, a user could never open it back up against because `load()` errored out.
This never got brought up before this because you would have to change the file location of the watch-only
wallet to see this bug, and I guess that didn't happen often, but calling the new `store_to()` function with the
new `force_rewrite` parameter set to `true` triggers key restoring and the bug appeared.
|
|
|
|
64ed938 build: prepare v0.18.3.0 (selsta)
|
|
7dbb14b functional_tests: fix multisig tests noutputs assertion (jeffro256)
|
|
356e687 wallet_rpc_server: chunk refresh to keep responding to RPC while refreshing (moneromooo-monero) 633e1b7 wallet_rpc_server: add --no-initial-sync flag for quicker network binding (moneromooo-monero)
|
|
ba98269 wallet2: fix store_to() and change_password() (jeffro256)
|
|
|
|
Resolves #8932 and:
2. Not storing cache when new path is different from old in `store_to()` and
3. Detecting same path when new path contains entire string of old path in `store_to()` and
4. Changing your password / decrypting your keys (in this method or others) and providing a bad original password and getting no error and
5. Changing your password and storing to a new file
|
|
The changes to the multisig tests in #8914 and #8904 affected each other, this PR cleans up the code and fixes that issue.
|
|
|
|
|
|
b51f4a9 scan_tx: fix custom comparator for == case; fixes #8951 (j-berman)
|
|
ed05ac6 wallet2: when checking frozen multisig tx set, don't assume order (jeffro256)
|
|
78348bc wallet-rpc: restore from multisig seed (jeffro256)
|
|
842478c core_rpc_server: return ID of submitted block (jeffro256)
|
|
f137a35 Enforce restricted # pool txs served via RPC + optimize chunked reqs [release-v0.18] (j-berman)
23f782b wallet2, RPC: Optimize RPC calls for periodic refresh from 3 down to 1 call [release-v0.18] (rbrunner7)
|
|
|
|
Co-authored-by: woodser <woodser@protonmail.com>
|
|
|
|
[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]
|
|
835896e wallet2: do not lose exception in current thread on refresh (Crypto City)
62bb95b wallet2: fix missing exceptions from failing wallet refresh (Crypto City)
|
|
1924c17 protocol: drop peers sending duplicate txes (moneromooo-monero)
|
|
aed36a2 Set SSL SNI even when server verification is disabled (Lee *!* Clagett)
|
|
c6530d2 Add CLSAG serialization to ZMQ code (Lee Clagett)
|
|
dc24312 wallet: respect frozen key images in multisig wallets [RELEASE] (jeffro256)
|
|
438554e properly terminate interrupted TCP connection. fixes #8685 (j-berman)
|
|
26025cb Speed up perf_timer init on x86 (SChernykh)
|
|
aa139f0 wallet_rpc_server: dedup transfer RPC responses [RELEASE] (jeffro256)
|
|
|
|
a4a58eb depends: update openssl to 1.1.1u (tobtoht)
|
|
8dc4abd common: do not use DNS to determine if address is local (tobtoht)
|
|
1fad8cc blockchain: ensure base fee cannot reach 0 (Crypto City)
|
|
cfc6227 cryptonote_basic: fix amount overflow detection on 32-bit systems [RELEASE] (jeffro256)
|
|
1d1d5fb Fixed RandomX initialization when mining from scratch (SChernykh)
|
|
65e13db wallet2: fix rescanning tx via scan_tx (j-berman)
|
|
|
|
|
|
|
|
|
|
|
|
Before this change, if a multisig peer asked you to sign a transaction with a frozen enote, the wallet will do it without any error or warning. This change makes it
so that wallets will refuse to sign multisig transactions with frozen enotes.
Disclaimer: This PR was generously funded by @LocalMonero.
|
|
|
|
All Monero binaries have 1 second startup delay because of this code. This is especially noticeable and affects UX in Monero GUI wallet with local node where it often starts another monerod instance to run commands and query node status.
|
|
|
|
|
|
|
|
Co-authored-by: j-berman <justinberman@protonmail.com>
|
|
f983ac7 fix missing <cstdint> includes (tobtoht)
|
|
reported by sech1
|
|
|
|
|
|
ad80f1b Handle case where a command line flag is not allowed in the config file (almalh)
|
|
4f1262b build: prepare v0.18.2.2 (selsta)
|
|
059b975 cryptonote core/protocol: don't drop peers for soft offenses (jeffro256)
|
|
c742fa4 Fixed deadlock and crash when syncing with full dataset on Windows (SChernykh)
|
|
Also: txs with tx_extra which is too large will not get published to ZMQ
Co-authored-by: SChernykh <sergey.v.chernykh@gmail.com>
|
|
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.
|
|
|
|
1328048 wallet2: fix infinite loop in fake out selection (Crypto City)
|
|
The gamma picker and the caller code did not quite agree on the
number of rct outputs available for use - by one block - which
caused an infinite loop if the picker could never pick outputs
from that block but already had picked all other outputs from
previous blocks.
Also change the range to select from using code from UkoeHB.
|
|
cdeb286 build: prepare v0.18.2.1 (selsta)
|
|
c4cfaa4 p2p: do not log to global when re-blocking a subnet (moneromooo-monero)
f0e326b p2p: avoid spam blocking ipv4 addresses in a blocked subnet (moneromooo-monero)
|
|
|
|
|
|
5900ed3 Add a size limit for tx_extra in tx pool (tevador)
|
|
c59e009 verRctNonSemanticsSimpleCached: fix fragility (Jeffrey Ryan)
|
|
14de562 device: Add ledger Stax device id to device detection (Francois Beutin)
|
|
77d883e workflows: update dependencies to fix warnings (selsta)
|
|
|
|
|
|
|
|
|
|
- Detach & re-process txs >= lowest scan height
- ensures that if a user calls scan_tx(tx1) after scanning tx2,
the wallet correctly processes tx1 and tx2
- if a user provides a tx with a height higher than the wallet's
last scanned height, the wallet will scan starting from that tx's
height
- scan_tx requires trusted daemon iff need to re-process existing
txs: in addition to querying a daemon for txids, if a user
provides a txid of a tx with height *lower* than any *already*
scanned txs in the wallet, then the wallet will also query the
daemon for all the *higher* txs as well. This is likely
unexpected behavior to a caller, and so to protect a caller from
revealing txid's to an untrusted daemon in an unexpected way,
require the daemon be trusted.
|
|
|
|
|
|
dc18efa build: prepare v0.18.2.0 (selsta)
|
|
d8e39bd depends: bump openssl to 1.1.1t (tobtoht)
|
|
988056d p2p: add plowsof seed nodes (selsta)
ce4ef6d p2p: remove offline seed nodes (selsta)
|
|
|
|
https://www.openssl.org/news/secadv/20230207.txt
Patch can be removed, it was included upstream.
|
|
573a369 blockchain-stats: print any remaining data at end of loop (Howard Chu)
|
|
15384cc depends: bump hidapi/libusb (tobtoht)
|
|
f456b3f Demote large pages warning to mdebug (SChernykh)
480b050 RandomX: print VM allocation warnings only once (SChernykh)
|
|
Fix #8711
|
|
|
|
|
|
fixes Trezor connectivity issues on Windows 10/11
Co-authored-by: selsta <selsta@sent.at>
|
|
|
|
|
|
29208a3 Cache successful erRctNonSemanticsSimple calls (SChernykh)
|
|
cbc297a common: add missing includes (selsta)
|
|
f698f2b Refactored rx-slow-hash.c (SChernykh)
|
|
5973985 workflows: set a public DNS when doing tests (selsta)
|
|
2c24322 DNSResolver: fix not handling hostnames without dot characters [release] (Jeffrey Ryan)
|
|
38d4811 p2p: fix exclusive node DNS resolution for certain hosts [release] (Jeffrey Ryan)
|
|
146cac0 p2p: fix back ping to discover healthy peers to connect to (j-berman)
|
|
|
|
|
|
- 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
|
|
8c53995 Fix static builds for Ubuntu 22.04 (AgoraDesk / LocalMonero)
|
|
02b24cb workflows: ubuntu 18.04 is deprecated (selsta)
|
|
1bb5d25 Fix dandelion++ fluff/stem bug with local txes (Lee Clagett)
|
|
85c9fe5 wallet2: fix create view-only wallet from existing wallet (j-berman)
|
|
401dda5 wallet_api: take priority into account when estimating fee (selsta)
|
|
cbf636c workflows: build gitian on tag (selsta)
|
|
|
|
Unrelated, but similar code-wise to #8643. There is a check in `DNSResolver` which automatically fails to resolve hostnames which do not contain the `.` character. This PR removes that check.
|
|
Fixes #8633. The function `append_net_address` did not parse hostname + port addresses (e.g. `bar:29080`) correctly if the hostname did not contain a `'.'` character.
@vtnerd comments 1
clear up 2nd conditional statement
|
|
|
|
Link libbsd, libmd, libprotokit for ZMQ to fix static builds for Ubuntu 22.04
|
|
|
|
|
|
d7445b5 workflows: ubuntu 18.04 is deprecated (selsta)
|
|
07f8e9e epee: dont shrink slice when storing to binary [release] (Jeffrey Ryan)
|
|
|
|
|
|
|
|
853171b build: prepare v0.18.1.2 (selsta)
|
|
|
|
802c4bb Move update_checkpoints() to a later stage (SChernykh)
|
|
5ffa31c wallet2: fail to establish daemon cxn == 'Disconnected' cxn status (j-berman)
|
|
1cd21bf add an option to force-update multisig key exchange under some circumstances (koe)
|
|
7d358cd repo: remove ldns leftovers (selsta)
09402d0 depends: remove unused Qt package (selsta)
|
|
6adf03c Second thread pool for IO (SChernykh)
|
|
And will soon be removed.
|
|
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.
|
|
|
|
|
|
|