Commit Graph
1492 Commits
Author SHA1 Message Date
koeandsuch-gitea e86d98e7ca tx/partial tx validation improvements
(cherry picked from commit b09e9bfe56824cd1d70a14db86d0507c928c1780)
2026-10-04 18:50:24 -04:00
j-bermanandsuch-gitea 1d5bf8cc8e cryptonote_basic: parse_and_validate_tx param to check max size
Simple API to check max blob size before parsing. This is useful
when reading blobs from untrusted sources.

@selsta pointed out that coinbase txs can technically be larger
than get_max_tx_size(), otherwise we could enforce it on all txs.

(cherry picked from commit b66e2227c2f937a3e09dd62ed770b0667bff0779)
2026-10-04 18:50:24 -04:00
selstaandsuch-gitea dfb95d964c wallet2: sanitize untrusted daemon status in sweep unmixable
(cherry picked from commit 144b3f9e644c0b1d4ad994b99edf6c355b38e533)
2026-10-04 18:50:24 -04:00
selstaandsuch-gitea 073daa92bd wallet2: filter unchecked RPC error statuses
(cherry picked from commit c86fd739dceca593346ca3d3d3db835d1308e7ed)
2026-10-04 18:50:24 -04:00
selstaandsuch-gitea 9a4ec1a5d0 wallet2: validate public node addresses before display
(cherry picked from commit c683bf08850161d6b072fd70c0e1325cb39e0a61)
2026-10-04 18:50:24 -04:00
selstaandsuch-gitea a53871e588 wallet2: reset scan status for already processed outputs
(cherry picked from commit 357b446a1335db9b42421acff46acaa0dee46a66)
2026-10-04 18:50:24 -04:00
selstaandsuch-gitea c017fff2ec wallet2: validate block hash when repairing empty hashchain
(cherry picked from commit ef7bdda92af255270a61e4ea4c6c7fe098a70dd0)
2026-10-04 18:50:24 -04:00
selstaandsuch-gitea f7510618e8 wallet2: preserve required SSL when allowing chained certificates
(cherry picked from commit 57a37a156ce1f32b8b3471dc4aad7973130c38da)
2026-10-04 18:50:24 -04:00
koeandsuch-gitea 7951912289 multisig: erase all copies of a nonce at the same time
(cherry picked from commit fe744ac3171fe26b7284d3ac3a275e624e852ec5)
2026-10-04 18:50:24 -04:00
j-bermanandsuch-gitea 7ff4a5567a cryptonote_basic: serialization checks
(cherry picked from commit d869dc0981ac55f90d5b52a1a794b124ae274716)
2026-10-04 18:50:23 -04:00
Thomasandsuch-gitea c9d51bd08a wallet_rpc_server: reject --password with --wallet-dir
(cherry picked from commit 587315ce94c8c3f656ce3bbb5e046e4aa96942d4)
2026-10-04 18:50:23 -04:00
koeandsuch-gitea f4212ace98 add sanity_check_pending_tx
(cherry picked from commit 4eae9740460fb69e30bedeea48c2ab3268974bc0)
2026-10-04 18:50:23 -04:00
Thomasandsuch-gitea 818a0067b6 wallet2: fix data races in refresh error handlers
(cherry picked from commit d9236332a59bb090b0fa74e808237c26189564b0)
2026-10-04 18:50:23 -04:00
woodserandsuch-gitea 0309d199f4 wallet_rpc_server: stop refresh on shutdown
(cherry picked from commit 8379bdfa29ec91fa9c1d3b1492a6de6cb143a007)
2026-10-04 18:50:23 -04:00
selstaandsuch-gitea 552aea4a7d wallet2: fix task lifetime during parsed block processing
(cherry picked from commit a09eb5cf4aefa6c351acf898ad4e3be4a67ad860)
2026-10-04 18:50:23 -04:00
selstaandsuch-gitea 81d781a965 wallet2: validate key image domain in reserve proofs
Reported by zkao, a tool by zkSecurity

(cherry picked from commit 1bb17925fdff1494ec8f7a127c9c6cd814c36e69)
2026-10-04 18:50:22 -04:00
woodserandsuch-gitea 46c1ad8d7a wallet2: return concrete low priority when adjust_priority fails
(cherry picked from commit fbd80b3caba677bca3e5176122d45f758dc6ce18)
2026-10-04 18:50:22 -04:00
woodserandsuch-gitea a1553381a2 wallet2: keep multisig import state consistent across failed refreshes
(cherry picked from commit b2cd62754bfb837bad2a49ea5b3808f35bb6a16c)
2026-10-04 18:50:22 -04:00
woodserandsuch-gitea 10ade8c591 wallet2: honor max_blocks bound during fast_refresh hash pulls
(cherry picked from commit bbd6350751876f24ad21eb70cbfb12670659e927)
2026-10-04 18:50:22 -04:00
selstaandsuch-gitea 131a340a51 wallet2: bounds check additional derivations in is_out_to_acc
(cherry picked from commit 987a2a77d3e4b4d3781e70bc70031ff254313557)
2026-10-04 18:50:21 -04:00
selstaandsuch-gitea 2084879447 wallet2: validate cached transfer indices
Reported by hacksandhops

(cherry picked from commit 72d91039eb5c67c7912ef8328299e8e28d9effb0)
2026-10-04 18:50:21 -04:00
selstaandsuch-gitea 54eb5eb431 wallet2: guard gamma picker against zero-output windows
(cherry picked from commit 7507aed69f4753767711d52747a02e6860b01297)
2026-10-04 18:50:21 -04:00
Oscar Miraandsuch-gitea 8a99066861 wallet2: ignore checkpoints in fast_refresh when height < 1000
(cherry picked from commit 3b268ae2854f6e1d24203b5fd64e2dc5d42bc940)
2026-10-04 18:50:21 -04:00
Oscar Miraandsuch-gitea cd9b1b65e9 wallet2: use nearest checkpoint to allow fast_refresh on old accounts
(cherry picked from commit eba42d6ad5e21d13836c9e51cc6654e6b4fc34dc)
2026-10-04 18:50:21 -04:00
selstaandsuch-gitea 5bb99b960b wallet2: avoid linear scans in pool state updates
(cherry picked from commit 839dba22c3a39eec92d2c6be7972df6dc6d57bab)
2026-10-04 18:50:21 -04:00
selstaandsuch-gitea e9aa147fb3 wallet2: guard optimized coinbase refresh against empty vout
(cherry picked from commit ef7a86c99f7c58c361c3c0ddf5687a165c22ce7a)
2026-10-04 18:50:20 -04:00
selstaandsuch-gitea 06fa8be413 wallet2: reject non-monotonic rct output distributions
(cherry picked from commit b99d15f08d80a8cad6dee88628192ba0411544fb)
2026-10-04 18:50:20 -04:00
selstaandsuch-gitea 77fed902b3 wallet2: store multisig nonce erasure before returning signed txset
(cherry picked from commit d6f0a4d211cc419095e778a39a83d65000e47bf6)
2026-10-04 18:50:20 -04:00
SChernykhandsuch-gitea 78fc142418 wallet2: fix double unlock of a lock
(cherry picked from commit 2b97e3ae049cc872c29b6994304a1e65d8338caa)
2026-10-04 18:50:20 -04:00
selstaandsuch-gitea 72da5948b6 wallet2: clear m_additional_tx_keys during bg sync
(cherry picked from commit 4b00f47d43d784447904d777f220a525044a3374)
2026-10-04 18:50:19 -04:00
selstaandjwinterm e8c2387c24 wallet2: reject duplicate outputs in reserve proofs
(cherry picked from commit 2827d7fe84ad4102dd9f3284eb98da8f0d66266d)
2026-05-06 10:52:36 -04:00
tobtohtandjwinterm 36bbd1a2c7 wallet2: throw if reserve proof can't be parsed
(cherry picked from commit f855ffe87ddc593b286ad02f84b24b804872773a)
2026-05-06 10:52:36 -04:00
selstaandjwinterm 0bf3b9f441 wallet2: ensure daemon returns correct tx for spend proof
(cherry picked from commit 04eeb3ba1fc2ed0239eb10e885136d86b7e98ad0)
2026-05-06 10:52:36 -04:00
selstaandjwinterm 21b51550e5 wallet2: remove deprecated txs_as_hex
also add missing underflow check

(cherry picked from commit 54abe12f94abe5c0ca2e8ae63e3fea2d8cd41c9a)
2026-05-05 18:20:53 -04:00
j-bermanandjwinterm da44d4ea4c cryptonote_basic: pruned hash return bool
(cherry picked from commit 874c771975257c82e275c17af72899b301a63d5f)
2026-05-05 18:20:53 -04:00
selstaandjwinterm af6a55c941 wallet2: add parse multisig tx sanity checks
(cherry picked from commit 2094d38c86bab8ab23bb5ddfb5cd7ce3a7957a63)
2026-05-05 18:20:53 -04:00
Lee *!* Clagettandjwinterm c7227454e8 Add Socks v5 support to daemon and wallet
(cherry picked from commit 23e29a5074)
(cherry picked from commit ce5437f0677966c15d2946bc7c068975aa6bfd83)
2026-05-05 18:20:53 -04:00
woodserandjwinterm 4cbc74bed0 multisig: add flag to skip refresh after multisig import
(cherry picked from commit 7b1e9ca29801d1e380291371e40c8c37ac43d18d)
2026-05-05 18:20:53 -04:00
selstaandjwinterm 33b967d231 wallet2: fix background wallet detection in verify_password()
(cherry picked from commit e7b121ac17d6e0c3bb6f17911ae9ab18132b3c67)
2026-05-05 18:20:52 -04:00
j-bermanandjwinterm 0d9df28884 wallet2: fix edge case where tx's ki's remain marked unspent
If a tx is marked as failed (because it never shows up in the
daemon's pool), its key images get reset back to unspent so they
can be used in future txs.

If the tx re-enters the daemon's pool (e.g. it's removed from the
pool and then relayed back), then the wallet incorrectly maintains
that the tx's key images are unspent.

This change ensures the wallet re-marks the tx's key images as
spent if the tx re-appears in the node's pool.

(cherry picked from commit c147e2dfe2cecb241735e5e625b4cc31009a2b6e)
2026-05-05 18:19:53 -04:00
j-bermanandjwinterm 0ea75b1e3e wallet: identify spends in pool when scanning
- Make sure to mark identified spends in the pool as spends. The
wallet might not know these have been spent if it wasn't the wallet
that relayed the tx to the daemon, or the wallet was cleared via
rescan_bc.
- Make sure to add spends to m_unconfirmed_txs if not present.
- Make sure to process the entire pool again if refreshing for
the first time. The wallet fetches pool and blocks at the same
time. The wallet scans blocks first, then pool. If the wallet
identifies received outputs in the chain, then it may have spent
those received outputs in the pool. So we make sure to re-process
the entire pool again after scanning the chain for the first time.
- Multisig wallets that know about spent key images can now detect
spend txs in the pool. Update tests for that.

(cherry picked from commit 9239d36691bfe94dda12cc925903fed5e761fbe3)
2026-05-05 18:19:53 -04:00
j-bermanandwowario cfd2a69624 wallet2: warn instead of throw when RingDB doesn't include spend
A reorg can end up causing an output's position in the chain to
move. Since the wallet doesn't update the RingDB on reorg, it
may refer to the output's stale position in the chain.

This seems a reasonable solution rather than introducing complex
logic to update the stale ring member's value on rerog, since
RingDB can be deprecated with FCMP++.
2025-10-10 08:49:03 +03:00
wowario 9f429cfc89 wownero skin pack 2025-09-19 21:01:45 +03:00
wowario de22caa968 cleanup old bp 2025-09-19 21:01:43 +03:00
wowario 30dba37f1f bump unlock time to 288 blks 2025-09-19 21:01:40 +03:00
wowario 076254eb38 config wallet2 settings 2025-09-19 21:01:40 +03:00
wowario 220c474ac1 fix mismatched daemon check bug 2025-09-19 21:01:38 +03:00
wowario e38bf823fd adjust approx_blockchain_height 2025-09-19 21:01:37 +03:00
wowario f3631823a8 bump ring size to 22 2025-09-19 21:01:36 +03:00
jeffro256andj-berman 8f98dac4f0 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:32:20 -05:00