aboutsummaryrefslogtreecommitdiff
path: root/src/simplewallet/simplewallet.h
Commit message (Collapse)AuthorAgeFilesLines
* wallet: background sync with just the view keyj-berman2024-05-241-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | - 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.
* Enforce Tx unlock_time is Zero by Relay Rule [RELEASE]jeffro2562024-04-291-4/+2
| | | | | | | | | | | | | | | | 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
* add an option to force-update multisig key exchange under some circumstanceskoe2022-09-211-1/+1
|
* Merge pull request #8545v0.18.1.1luigi11112022-09-151-1/+1
|\ | | | | | | | | | | | | 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)
| * Fix segfault restoring encrypted multisig seedj-berman2022-09-061-1/+1
| |
* | wallet2: check wallet compatibility with daemon's hard fork versionj-berman2022-09-121-1/+0
|/
* 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).
* disable multisig by defaultmoneromooo-monero2022-05-171-0/+1
| | | | | | | | | 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.
* Bump ring size to 16 for v15 & remove set default in wallet clij-berman2022-04-181-1/+0
|
* Merge pull request #8197luigi11112022-04-061-1/+1
|\ | | | | | | da9aa1f Copyright: Update to 2022 (mj-xmr)
| * Copyright: Update to 2022mj-xmr2022-03-041-1/+1
| |
* | Make the wallet name optional when locked.Norman Moeschter2022-03-101-0/+1
|/
* multisig key exchange update and refactorkoe2022-02-221-1/+0
|
* Merge pull request #7358luigi11112021-03-291-0/+1
|\ | | | | | | f346e3e wallet_rpc_payments: implement multithreading (gdmojo)
| * wallet_rpc_payments: implement multithreadinggdmojo2021-02-201-0/+1
| |
* | monero-wallet-cli: Added command scan_txHoria Mihai David2021-02-171-0/+1
|/ | | | To implement this feature, the wallet2::scan_tx API was implemented.
* wallet2: skip reorgs exceeding max-reorg-depth wallet settingxiphon2020-10-131-0/+1
|
* replace most boost serialization with existing monero serializationmoneromooo-monero2020-08-171-0/+1
| | | | | | | | | | | | | | | | | | | | | | This reduces the attack surface for data that can come from malicious sources (exported output and key images, multisig transactions...) since the monero serialization is already exposed to the outside, and the boost lib we were using had a few known crashers. For interoperability, a new load-deprecated-formats wallet setting is added (off by default). This allows loading boost format data if there is no alternative. It will likely go at some point, along with the ability to load those. Notably, the peer lists file still uses the boost serialization code, as the data it stores is define in epee, while the new serialization code is in monero, and migrating it was fairly hairy. Since this file is local and not obtained from anyone else, the marginal risk is minimal, but it could be migrated later if needed. Some tests and tools also do, this will stay as is for now.
* Wallet, daemon: From 'help_advanced' back to 'help', and new 'apropos' commandrbrunner72020-07-241-1/+1
|
* Merge pull request #6512Alexander Blair2020-07-191-1/+1
|\ | | | | | | 5ef0607da Update copyright year to 2020 (SomaticFanatic)
| * Update copyright year to 2020SomaticFanatic2020-05-061-1/+1
| | | | | | | | Update copyright year to 2020
* | Merge pull request #6488Alexander Blair2020-07-161-0/+1
|\ \ | | | | | | | | | 99684e3e simplewallet: add show_qr_code command (selsta)
| * | simplewallet: add show_qr_code commandselsta2020-06-211-0/+1
| |/ | | | | | | Thanks to iDunk for helping with Windows.
* | repo: update donation fund addressselsta2020-06-091-1/+1
| |
* | Merge pull request #6549luigi11112020-06-081-0/+2
|\ \ | | | | | | | | | | | | 82d21f5 easylogging++: sanitize log payload (moneromooo-monero) 7d0b7e8 [master] MMS: New 'config_checksum' subcommand (rbrunner7)
| * | [master] MMS: New 'config_checksum' subcommandrbrunner72020-05-241-0/+2
| |/
* / simplewallet: don't complain about incoming payment ids on changemoneromooo-monero2020-05-131-1/+1
|/
* Merge pull request #6449luigi11112020-05-011-1/+2
|\ | | | | | | 27d551d simplewallet: add sweep_account command (moneromooo-monero)
| * simplewallet: add sweep_account commandmoneromooo-monero2020-04-141-1/+2
| | | | | | | | | | | | | | Expects an account number, then the usual sweep_all options Useful to move monero that was accidentally sent to a subaddress with a very large account index.
* | trezor: adapt to new passphrase mechanismDusan Klinec2020-04-271-1/+1
|/ | | | | | | | | - choice where to enter passphrase is now made on the host - use wipeable string in the comm stack - wipe passphrase memory - protocol optimizations, prepare for new firmware version - minor fixes and improvements - tests fixes, HF12 support
* simplewallet: warn about correlations if print-ring-members is not setmoneromooo-monero2020-03-281-1/+1
| | | | | | | | | The warning about spending more than one output with similar creation time was skipped if print-ring-members was not set, and it defaults to false, which means most people probably aren't getting this warning if they spend correlated outputs. Reported by SeventhAlpaca.
* Merge pull request #6213Alexander Blair2020-02-281-1/+1
|\ | | | | | | | | 94266eeb simplewallet: fix output age display with duplicate heights (moneromooo-monero) f1d379d2 simplewallet: fix "outputs in same tx" detector (moneromooo-monero)
| * simplewallet: fix output age display with duplicate heightsmoneromooo-monero2019-12-031-1/+1
| | | | | | | | | | | | The highlight check was based on height, so would highlight any output at that height, resulting in several matches if a fake out was picked at the same height as the real spend
* | simplewallet: noob-friendly help menuwowario2019-11-131-0/+1
|/
* simplewallet: plug a timing leakmoneromooo-monero2019-11-021-3/+5
| | | | | | | | | | As reported by Tramèr et al, timing of refresh requests can be used to see whether a password was requested (and thus at least one output received) since this will induce a delay in subsequent calls. To avoid this, we schedule calls at a given time instead of sleeping for a set time (which would make delays additive). To further avoid a scheduled call being during the time in which a password is prompted, the actual scheduled time is now randomized.
* simplewallet: add public_nodes commandmoneromooo-monero2019-10-251-0/+5
| | | | Lists nodes exposing their RPC port for public use
* daemon, wallet: new pay for RPC use systemmoneromooo-monero2019-10-251-0/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Daemons intended for public use can be set up to require payment in the form of hashes in exchange for RPC service. This enables public daemons to receive payment for their work over a large number of calls. This system behaves similarly to a pool, so payment takes the form of valid blocks every so often, yielding a large one off payment, rather than constant micropayments. This system can also be used by third parties as a "paywall" layer, where users of a service can pay for use by mining Monero to the service provider's address. An example of this for web site access is Primo, a Monero mining based website "paywall": https://github.com/selene-kovri/primo This has some advantages: - incentive to run a node providing RPC services, thereby promoting the availability of third party nodes for those who can't run their own - incentive to run your own node instead of using a third party's, thereby promoting decentralization - decentralized: payment is done between a client and server, with no third party needed - private: since the system is "pay as you go", you don't need to identify yourself to claim a long lived balance - no payment occurs on the blockchain, so there is no extra transactional load - one may mine with a beefy server, and use those credits from a phone, by reusing the client ID (at the cost of some privacy) - no barrier to entry: anyone may run a RPC node, and your expected revenue depends on how much work you do - Sybil resistant: if you run 1000 idle RPC nodes, you don't magically get more revenue - no large credit balance maintained on servers, so they have no incentive to exit scam - you can use any/many node(s), since there's little cost in switching servers - market based prices: competition between servers to lower costs - incentive for a distributed third party node system: if some public nodes are overused/slow, traffic can move to others - increases network security - helps counteract mining pools' share of the network hash rate - zero incentive for a payer to "double spend" since a reorg does not give any money back to the miner And some disadvantages: - low power clients will have difficulty mining (but one can optionally mine in advance and/or with a faster machine) - payment is "random", so a server might go a long time without a block before getting one - a public node's overall expected payment may be small Public nodes are expected to compete to find a suitable level for cost of service. The daemon can be set up this way to require payment for RPC services: monerod --rpc-payment-address 4xxxxxx \ --rpc-payment-credits 250 --rpc-payment-difficulty 1000 These values are an example only. The --rpc-payment-difficulty switch selects how hard each "share" should be, similar to a mining pool. The higher the difficulty, the fewer shares a client will find. The --rpc-payment-credits switch selects how many credits are awarded for each share a client finds. Considering both options, clients will be awarded credits/difficulty credits for every hash they calculate. For example, in the command line above, 0.25 credits per hash. A client mining at 100 H/s will therefore get an average of 25 credits per second. For reference, in the current implementation, a credit is enough to sync 20 blocks, so a 100 H/s client that's just starting to use Monero and uses this daemon will be able to sync 500 blocks per second. The wallet can be set to automatically mine if connected to a daemon which requires payment for RPC usage. It will try to keep a balance of 50000 credits, stopping mining when it's at this level, and starting again as credits are spent. With the example above, a new client will mine this much credits in about half an hour, and this target is enough to sync 500000 blocks (currently about a third of the monero blockchain). There are three new settings in the wallet: - credits-target: this is the amount of credits a wallet will try to reach before stopping mining. The default of 0 means 50000 credits. - auto-mine-for-rpc-payment-threshold: this controls the minimum credit rate which the wallet considers worth mining for. If the daemon credits less than this ratio, the wallet will consider mining to be not worth it. In the example above, the rate is 0.25 - persistent-rpc-client-id: if set, this allows the wallet to reuse a client id across runs. This means a public node can tell a wallet that's connecting is the same as one that connected previously, but allows a wallet to keep their credit balance from one run to the other. Since the wallet only mines to keep a small credit balance, this is not normally worth doing. However, someone may want to mine on a fast server, and use that credit balance on a low power device such as a phone. If left unset, a new client ID is generated at each wallet start, for privacy reasons. To mine and use a credit balance on two different devices, you can use the --rpc-client-secret-key switch. A wallet's client secret key can be found using the new rpc_payments command in the wallet. Note: anyone knowing your RPC client secret key is able to use your credit balance. The wallet has a few new commands too: - start_mining_for_rpc: start mining to acquire more credits, regardless of the auto mining settings - stop_mining_for_rpc: stop mining to acquire more credits - rpc_payments: display information about current credits with the currently selected daemon The node has an extra command: - rpc_payments: display information about clients and their balances The node will forget about any balance for clients which have been inactive for 6 months. Balances carry over on node restart.
* Merge pull request #5952luigi11112019-10-161-0/+2
|\ | | | | | | 93d5cf2 wallet2: add ignore-outputs-{above/below} option (stoffu)
| * wallet2: add ignore-outputs-{above/below} optionstoffu2019-10-021-0/+2
| | | | | | | | https://github.com/aeonix/aeon/pull/131
* | wallet: remove long payment ID sending supportmoneromooo-monero2019-10-141-2/+0
|/
* simplewallet: lock console on inactivitymoneromooo-monero2019-08-281-0/+21
|
* Wallet: Option to export data to ASCIITadeas Moravec2019-08-221-0/+1
| | | | | | | | | | | New CLI wallet variable: export-format with options "binary" (the default), or "ascii". "Binary" behaves as before, "ascii" forces the wallet to convert data to ASCII using base64. Reading files from the disk tries to auto detect what format has been used (using a magic string added when exporting the data). Implements https://github.com/monero-project/monero/issues/2859
* Merge pull request #5743luigi11112019-08-211-0/+1
|\ | | | | | | 65f29a8 simplewallet: add restore_height command (tobtoht)
| * simplewallet: add restore_height commandthotbot2019-07-081-0/+1
| |
* | Merge pull request #5460luigi11112019-07-241-0/+1
|\ \ | |/ |/| | | a23dbe6 simplewallet: prompt when spending more than one old out in one tx (moneromooo-monero)
| * simplewallet: prompt when spending more than one old out in one txmoneromooo-monero2019-04-181-0/+1
| |
* | wallet: add unlock_time details to show_transfersmoneromooo-monero2019-05-161-1/+1
|/ | | | | also add a note when receiving the tx, because the user might not notice the "XXX blocks to unlock" in the balance.
* simplewallet: add a welcome/disclaimer message commandmoneromooo-monero2019-04-111-0/+1
| | | | | | I saw one when landing on www.tribler.org, and it seemed like a good idea to have something similar, alongside some more general "what is monero" text.
* Merge pull request #5388Riccardo Spagni2019-04-111-0/+1
|\ | | | | | | 0be5b2ee simplewallet: new unset_ring command (moneromooo-monero)
| * simplewallet: new unset_ring commandmoneromooo-monero2019-04-021-0/+1
| | | | | | | | Useful when debugging, though not much for users