aboutsummaryrefslogtreecommitdiff
path: root/src/wallet/wallet2.h
Commit message (Collapse)AuthorAgeFilesLines
* wallet2: avoid linear scans in pool state updatesselsta2026-06-281-1/+3
|
* wallet2: store multisig nonce erasure before returning signed txsetselsta2026-06-091-1/+2
|
* multisig: add flag to skip refresh after multisig importwoodser2026-04-081-1/+3
|
* Merge pull request #10162v0.18.4.6tobtoht2026-02-221-0/+1
|\ | | | | | | 48252dd add getter for daemon proxy (woodser)
| * add getter for daemon proxywoodser2025-10-121-0/+1
| |
* | wallet: identify spends in pool when scanningj-berman2025-10-071-1/+1
|/ | | | | | | | | | | | | | | | - 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.
* wallet: deprecate wallet2::find_and_save_rings()jeffro2562025-07-291-1/+1
| | | | | | | 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>
* wallet: refactor subaddress expansion & add to transfer testjeffro2562025-07-071-0/+7
|
* fix: multisig stale data after failed refreshSNeedlewoods2025-04-241-2/+2
|
* Merge pull request #8617tobtoht2025-02-131-4/+152
|\ | | | | | | e44e8b164 wallet: background sync with just the view key (j-berman)
| * wallet: background sync with just the view keyj-berman2024-05-241-4/+152
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - When background syncing, the wallet wipes the spend key from memory and processes all new transactions. The wallet saves all receives, spends, and "plausible" spends of receives the wallet does not know key images for. - When background sync disabled, the wallet processes all background synced txs and then clears the background sync cache. - Adding "plausible" spends to the background sync cache ensures that the wallet does not need to query the daemon to see if any received outputs were spent while background sync was enabled. This would harm privacy especially for users of 3rd party daemons. - To enable the feature in the CLI wallet, the user can set background-sync to reuse-wallet-password or custom-background-password and the wallet automatically syncs in the background when the wallet locks, then processes all background synced txs when the wallet is unlocked. - The custom-background-password option enables the user to open a distinct background wallet that only has a view key saved and can be opened/closed/synced separately from the main wallet. When the main wallet opens, it processes the background wallet's cache. - To enable the feature in the RPC wallet, there is a new `/setup_background_sync` endpoint. - HW, multsig and view-only wallets cannot background sync.
* | wallet: fix signed_tx_set RangeProofType serializationjeffro2562025-01-181-1/+1
| |
* | Daemon-specific proxy for the wallet-rpc.0xFFFC00002024-11-231-1/+9
| | | | | | | | | | | | | | 1. Daemon-specific proxy is exclusive with global proxy (--proxy). 2. If you set global proxy (--proxy) you cannot set daemon-specific proxy. 3. If you don't set global proxy, you can set proxy (or not set) proxy for each daemon connection with the proxy field in jsonrpc to the wallet-rpc.
* | Make wallet2::estimate_fee staticLee Clagett2024-08-071-1/+1
|/
* Enforce Tx unlock_time is Zero by Relay Rule [RELEASE]jeffro2562024-04-291-6/+6
| | | | | | | | | | | | | | | | Related to https://github.com/monero-project/research-lab/issues/78 Added a relay rule that enforces the `unlock_time` field is equal to 0 for non-coinbase transactions. UIs changed: * Removed `locked_transfer` and `locked_sweep_all` commands from `monero-wallet-cli` APIs changed: * Removed `unlock_time` parameters from `wallet2` transfer methods * Wallet RPC transfer endpoints send error codes when requested unlock time is not 0 * Removed `unlock_time` parameters from `construct_tx*` cryptonote core functions @tobtoht: undo rebase changes tx.dsts -> tx_dsts
* Merge pull request #9008luigi11112024-02-241-0/+1
|\ | | | | | | | | 9a89e2d wallet2: call on_reorg callback in handle_reorg (j-berman) 1df5630 wallet2: add on_reorg callback (Crypto City)
| * wallet2: add on_reorg callbackCrypto City2023-09-271-0/+1
| |
* | wallet: feature: transfer amount with fee includedjeffro2562024-02-201-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | wallet2: fix refresh function parametersselsta2023-10-011-1/+1
|/ | | | max_blocks is last on master branch
* Merge pull request #8941luigi11112023-09-141-1/+1
|\ | | | | | | 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)
| * wallet_rpc_server: chunk refresh to keep responding to RPC while refreshingmoneromooo-monero2023-08-171-1/+1
| |
* | wallet2: fix `store_to()` and `change_password()`jeffro2562023-08-231-6/+16
|/ | | | | | | | 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
* Merge pull request #8942luigi11112023-08-171-1/+1
|\ | | | | | | 78348bc wallet-rpc: restore from multisig seed (jeffro256)
| * wallet-rpc: restore from multisig seedjeffro2562023-08-101-1/+1
| |
* | Enforce restricted # pool txs served via RPC + optimize chunked reqs ↵j-berman2023-07-091-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [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.
* | wallet2, RPC: Optimize RPC calls for periodic refresh from 3 down to 1 call ↵rbrunner72023-07-091-6/+12
|/ | | | [release-v0.18]
* Merge pull request #8905luigi11112023-07-061-0/+1
|\ | | | | | | dc24312 wallet: respect frozen key images in multisig wallets [RELEASE] (jeffro256)
| * wallet: respect frozen key images in multisig wallets [RELEASE]jeffro2562023-06-121-0/+1
| | | | | | | | | | | | | | 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.
* | Merge pull request #8566luigi11112023-06-271-3/+34
|\ \ | |/ |/| | | 65e13db wallet2: fix rescanning tx via scan_tx (j-berman)
| * wallet2: fix rescanning tx via scan_txj-berman2023-03-131-3/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - 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.
* | wallet2: fix infinite loop in fake out selectionCrypto City2023-03-251-0/+1
|/ | | | | | | | | | 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.
* add an option to force-update multisig key exchange under some circumstanceskoe2022-09-211-1/+2
|
* Merge pull request #8545v0.18.1.1luigi11112022-09-151-1/+2
|\ | | | | | | | | | | | | 12e7c41 Merge pull request #5 from j-berman/restore-msig-encrypted-seed (Justin Berman) 848a0c0 Fix segfault restoring encrypted multisig seed (j-berman) 401f5d9 Require user ack multisig is experimental to restore (j-berman) fc8a5d6 multisig: fix #8537 seed restore (suggestions by @UkoeHB) (j-berman)
| * multisig: fix #8537 seed restore (suggestions by @UkoeHB)j-berman2022-09-011-1/+2
| | | | | | | | | | | | | | | | - spend secret key is no longer the sum of multisig key shares; no need to check that is the case upon restore. - restoring a multisig wallet from multisig info means that the wallet must have already completed all setup rounds. Upon restore, set the number of rounds completed accordingly.
* | wallet2: check wallet compatibility with daemon's hard fork versionj-berman2022-09-121-1/+6
| |
* | wallet2: better test on whether to allow output importmoneromooo-monero2022-09-071-3/+17
| | | | | | | | | | | | | | | | Being offline is not a good enough heuristic, so we keep track of whether the wallet ever refreshed from a daemon, which is a lot better, and probably the best we can do without manual user designation (which would break existing cold wallet setups till the user designates those wallets)
* | allow exporting outputs in chunksmoneromooo-monero2022-09-071-13/+51
| | | | | | | | | | this will make it easier huge wallets to do so without hitting random limits (eg, max string size in node).
* | wallet2: fixes for export/import output flowj-berman2022-09-061-0/+2
| | | | | | | | | | | | - only allow offline wallets to import outputs - don't import empty outputs - export subaddress indexes when exporting outputs
* | wallet2: fix missing subaddress indices in "light" exported outputsmoneromooo-monero2022-09-061-1/+5
|/
* Merge pull request #8432luigi11112022-07-141-0/+8
|\ | | | | | | edcc094 derive multisig tx secret keys from an entropy source plus the tx inputs' key images (koe)
| * derive multisig tx secret keys from an entropy source plus the tx inputs' ↵koe2022-07-131-0/+8
| | | | | | | | key images
* | Merge pull request #7986luigi11112022-07-141-2/+5
|\ \ | |/ |/| | | 5770265 wallet2: keep around transaction prefix for confirmed transfers (tobtoht)
| * wallet2: keep around transaction prefix for confirmed transferstobtoht2021-10-011-2/+5
| |
* | Merge pull request #8421luigi11112022-07-131-0/+2
|\ \ | | | | | | | | | bd1e7c5 wallet2: prevent crash when reading tx w/fewer outputs than expected (j-berman)
| * | wallet2: prevent crash when reading tx w/fewer outputs than expectedj-berman2022-07-051-0/+2
| | |
* | | Merge pull request #8149luigi11112022-07-131-3/+20
|\ \ \ | | | | | | | | | | | | c7b2944 multisig: fix critical vulnerabilities in signing (anon)
| * | | multisig: fix critical vulnerabilities in signinganon2022-06-301-3/+20
| |/ /
* / / Improve consistency between on_money_received and on_money_received_unconfirmedLuke Parker2022-06-011-1/+1
|/ / | | | | | | | | | | unconfirmed solely uses a - b, and received now accepts b so it can provide more detailed logs on what occurred (printing a - b, yet with a and b).
* | Merge pull request #8328luigi11112022-05-261-0/+3
|\ \ | | | | | | | | | 2979474 disable multisig by default (moneromooo-monero)
| * | disable multisig by defaultmoneromooo-monero2022-05-171-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | There are vulnerabilities in multisig protocol if the parties do not trust each other, and while there is a patch for it, it has not been throroughly reviewed yet, so it is felt safer to disable multisig by default for now. If all parties in a multisig setup trust each other, then it is safe to enable multisig.