aboutsummaryrefslogtreecommitdiff
path: root/src/wallet/wallet2.h (follow)
AgeCommit message (Collapse)AuthorFilesLines
2024-05-20Merge pull request #9151luigi11111-6/+6
ff49444 @tobtoht: undo rebase changes tx.dsts -> tx_dsts (jeffro256) 38f354e Enforce Tx unlock_time is Zero by Relay Rule (jeffro256)
2024-05-20Merge pull request #7852luigi11111-1/+2
8d94d08 replace 'multisig()' with 'get_multisig_status()' using multisig_account_status and including '.kex_is_done' member (koe)
2024-02-24Enforce Tx unlock_time is Zero by Relay Rulejeffro2561-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
2024-02-24Merge pull request #9160luigi11111-1/+9
c50ade5 Daemon-specific proxy for the wallet-rpc. (0xFFFC0000)
2024-02-20wallet: feature: transfer amount with fee includedjeffro2561-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.
2024-02-18Daemon-specific proxy for the wallet-rpc.0xFFFC00001-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.
2023-11-28serialization: remove container wrappers and serialize directlyjeffro2561-30/+30
Some downstream code (most notably PR https://github.com/UkoeHB/monero/pull/25) wants to use the src/serialization lib for storing information persistently. When one builds classes/machines wishing to serialize containers, they must use the `serializable_*` container classes. In this case, this makes the Seraphis library code unnecessarily tightly coupled with the src/serialization code since one cannot swap out their type of storage format without major refactoring of class field types. By serializing STL containers directly, we can abstract the serialization details away, making for much cleaner design. Also small bonus side effect of this change is that STL containers with custom Comparators, Allocators, and Hashers are serializable. `std::multimap` is added to the list of serializable containers. Depends upon https://github.com/monero-project/monero/pull/9069.
2023-08-23wallet2: fix `store_to()` and `change_password()`jeffro2561-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
2023-08-17Merge pull request #8914luigi11111-1/+1
45b52de wallet-rpc: restore from multisig seed (jeffro256)
2023-07-28wallet-rpc: restore from multisig seedjeffro2561-1/+1
2023-07-06Merge pull request #8904luigi11111-0/+1
369a5a8 wallet: respect frozen key images in multisig wallets (jeffro256)
2023-06-27wallet: remove CLI code for non default ring sizesJeffro2561-2/+0
2023-06-15wallet2: fix rescanning tx via scan_txj-berman1-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.
2023-06-12wallet: respect frozen key images in multisig walletsjeffro2561-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.
2023-04-25remove defunct light wallet codetobtoht1-46/+1
2023-04-25Merge pull request #8724luigi11111-37/+4
d2a591d wallet, simplewallet: Drop support for mine-to-use RPC system (Jeffrey Ryan)
2023-04-25Merge pull request #8798luigi11111-3/+2
f383fd3 wallet2: make m_process_pool_txs local to refresh method (jeffro256)
2023-04-25wallet, simplewallet: Drop support for mine-to-use RPC systemJeffrey Ryan1-37/+4
Using post-PR wallet with pre-PR node will generate error message specific to this PR and not generic "command failed" mesages.
2023-04-25Merge pull request #8716luigi11111-0/+1
9c7d28b wallet2: add on_reorg callback (Crypto City)
2023-04-25Merge pull request #8698luigi11111-1/+1
5b4fea7 Copyright: Update to 2023 (mj-xmr)
2023-03-30wallet2: fix infinite loop in fake out selectionCrypto City1-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.
2023-03-21wallet2: make m_process_pool_txs local to refresh methodjeffro2561-3/+2
2023-03-07Enforce restricted # pool txs served via RPC + optimize chunked reqsj-berman1-1/+2
- `/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.
2023-02-28replace 'multisig()' with 'get_multisig_status()' using ↵koe1-1/+2
multisig_account_status and including '.kex_is_done' member
2023-01-19wallet2: add on_reorg callbackCrypto City1-0/+1
2023-01-16Copyright: Update to 2023mj-xmr1-1/+1
Co-authored-by: plowsof <plowsof@protonmail.com> extra files
2022-12-30wallet2, RPC: Optimize RPC calls for periodic refresh from 3 down to 1 callrbrunner71-6/+12
2022-10-28Merge pull request #8355luigi11111-1/+1
23fde15 wallet_rpc_server: chunk refresh to keep responding to RPC while refreshing (moneromooo-monero) 5bb2369 wallet_rpc_server: add --no-initial-sync flag for quicker network binding (moneromooo-monero)
2022-09-26Merge pull request #8329luigi11111-1/+2
4b0785f add an option to force-update multisig key exchange under some circumstances (koe)
2022-09-21add an option to force-update multisig key exchange under some circumstanceskoe1-1/+2
2022-09-15Merge pull request #8556luigi11111-1/+6
b8271ab wallet2: check wallet compatibility with daemon's hard fork version (j-berman)
2022-09-15Merge pull request #8551luigi11111-1/+2
eca7f6a Fix segfault restoring encrypted multisig seed (j-berman) f713c3c Require user ack multisig is experimental to restore (j-berman) 564a7a3 multisig: fix #8537 seed restore (suggestions by @UkoeHB) (j-berman)
2022-09-12wallet2: check wallet compatibility with daemon's hard fork versionj-berman1-1/+6
2022-09-06multisig: fix #8537 seed restore (suggestions by @UkoeHB)j-berman1-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.
2022-08-18wallet2: better test on whether to allow output importmoneromooo-monero1-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)
2022-08-18allow exporting outputs in chunksmoneromooo-monero1-13/+51
this will make it easier huge wallets to do so without hitting random limits (eg, max string size in node).
2022-08-16wallet2: fixes for export/import output flowj-berman1-0/+2
- only allow offline wallets to import outputs - don't import empty outputs - export subaddress indexes when exporting outputs
2022-08-16wallet2: fix missing subaddress indices in "light" exported outputsmoneromooo-monero1-1/+5
2022-07-14Merge pull request #8432luigi11111-0/+8
edcc094 derive multisig tx secret keys from an entropy source plus the tx inputs' key images (koe)
2022-07-14Merge pull request #7986luigi11111-2/+5
5770265 wallet2: keep around transaction prefix for confirmed transfers (tobtoht)
2022-07-13derive multisig tx secret keys from an entropy source plus the tx inputs' ↵koe1-0/+8
key images
2022-07-13Merge pull request #8421luigi11111-0/+2
bd1e7c5 wallet2: prevent crash when reading tx w/fewer outputs than expected (j-berman)
2022-07-13Merge pull request #8149luigi11111-3/+20
c7b2944 multisig: fix critical vulnerabilities in signing (anon)
2022-07-05wallet2: prevent crash when reading tx w/fewer outputs than expectedj-berman1-0/+2
2022-06-30multisig: fix critical vulnerabilities in signinganon1-3/+20
2022-06-03wallet_rpc_server: chunk refresh to keep responding to RPC while refreshingmoneromooo-monero1-1/+1
2022-06-01Improve consistency between on_money_received and on_money_received_unconfirmedLuke Parker1-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).
2022-05-26Merge pull request #8328luigi11111-0/+3
2979474 disable multisig by default (moneromooo-monero)
2022-05-17disable multisig by defaultmoneromooo-monero1-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.
2022-05-13wallet2: speedup large tx construction: batch ringdb lookupsCrypto City1-0/+1
3.3 seconds -> 2.8 seconds on a test case
2022-05-13wallet2: speedup large tx construction: batch ringdb updatesCrypto City1-0/+1
5.2 seconds -> 4.1 seconds on a test case
2022-05-13wallet2: speedup large tx construction: cache public key validitymoneromooo-monero1-5/+5
5.9 second -> 5.2 seconds on a test case
2022-04-18Add view tags to outputs to reduce wallet scanning timej-berman1-8/+42
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.
2022-04-10Fee changes from ArticMinemoneromooo-monero1-1/+2
https://github.com/ArticMine/Monero-Documents/blob/master/MoneroScaling2021-02.pdf with a change to use 1.7 instead of 2.0 for the max long term increase rate
2022-04-06Merge pull request #8197luigi11111-1/+1
da9aa1f Copyright: Update to 2022 (mj-xmr)
2022-04-06Merge pull request #8179luigi11111-3/+42
ae0a840 wallet2: decrease the amount of data exchanged for output export (moneromooo-monero)
2022-04-05Merge pull request #7170luigi11111-1/+1
bd27deb Bulletproofs+ (SarangNoether) b7713cc Precompute initial transcript hash (SarangNoether) b535d66 Updates from security audit (SarangNoether) a0d80b1 plug bulletproofs plus into consensus (moneromooo-monero) 75bd004 ringct: a few minor optimizations from review (moneromooo-monero) a345060 ringct: port some of vtnerd's review changes from BP+ to BP (moneromooo-monero) 4c94cfe store outPk/8 in the tx for speed (moneromooo-monero) 5acdd0e bulletproofs+: some minor cleanup from vtnerd's review (moneromooo-monero)
2022-04-05plug bulletproofs plus into consensusmoneromooo-monero1-1/+1
2022-03-29wallet2: decrease the amount of data exchanged for output exportmoneromooo-monero1-3/+42
2022-03-10Make the wallet name optional when locked.Norman Moeschter1-0/+3
2022-03-04Copyright: Update to 2022mj-xmr1-1/+1
2022-03-02Merge pull request #7877luigi11111-39/+7
e08abaa multisig key exchange update and refactor (koe)
2022-02-22multisig key exchange update and refactorkoe1-39/+7
2021-10-19wallet2: fix key encryption when changing ask-password from 0/1 to 2moneromooo-monero1-3/+1
we reuse the wallet_keys_unlocker object, which does the right thing in conjunction with other users of decrypt/encrypt (ie, refresh).
2021-10-01wallet2: keep around transaction prefix for confirmed transferstobtoht1-2/+5
2021-04-23wallet2: Fix rescan_bc keep_ki optionNathan Dorfman1-1/+1
2021-04-06Merge pull request #7321luigi11111-5/+5
f9b5b52 fix serialization being different on mac (moneromooo-monero)
2021-03-29Merge pull request #7358luigi11111-1/+1
f346e3e wallet_rpc_payments: implement multithreading (gdmojo)
2021-03-05fix serialization being different on macmoneromooo-monero1-5/+5
On Mac, size_t is a distinct type from uint64_t, and some types (in wallet cache as well as cold/hot wallet transfer data) use pairs/containers with size_t as fields. Mac would save those as full size, while other platforms would save them as varints. Might apply to other platforms where the types are distinct. There's a nasty hack for backward compatibility, which can go after a couple forks.
2021-02-20wallet_rpc_payments: implement multithreadinggdmojo1-1/+1
2021-02-18Merge pull request #7312luigi11111-0/+2
186271e monero-wallet-cli: Added command scan_tx (Horia Mihai David)
2021-02-17monero-wallet-cli: Added command scan_txHoria Mihai David1-0/+2
To implement this feature, the wallet2::scan_tx API was implemented.
2020-12-10simplewallet: don't complain about connecting to the daemon when offlinemoneromooo-monero1-0/+1
2020-12-01Merge pull request #6890Alexander Blair1-0/+4
ec14e4b8c wallet2: skip reorgs exceeding max-reorg-depth wallet setting (xiphon)
2020-10-13wallet2: skip reorgs exceeding max-reorg-depth wallet settingxiphon1-0/+4
2020-10-12wallet2: fix missing m_state field in wallet serializationmoneromooo-monero1-1/+3
2020-09-15wallet2: adapt to deterministic unlock timeTheCharlatan1-8/+10
2020-09-12wallet2: fix tx sanity check triggering on pre-rct outputsmoneromooo-monero1-1/+1
2020-08-28Bind signature to full address and signing modeSarang Noether1-1/+1
2020-08-28wallet: allow signing a message with spend or view keymoneromooo-monero1-2/+4
2020-08-27Integrate CLSAGs into moneromoneromooo-monero1-1/+1
They are allowed from v12, and MLSAGs are rejected from v13.
2020-08-27Merge pull request #6767Alexander Blair1-0/+3
07442a605 Fix build with Boost 1.74 (moneromooo-monero)
2020-08-27Merge pull request #6752Alexander Blair1-1/+1
85899230d simplewallet: allow setting tx keys when sending to a subaddress (moneromooo-monero) e916201f1 wallet2: fix setting tx keys when another is already set (moneromooo-monero)
2020-08-27Merge pull request #6690Alexander Blair1-33/+170
7175dcb10 replace most boost serialization with existing monero serialization (moneromooo-monero)
2020-08-17Revert "Use domain-separated ChaCha20 for in-memory key encryption"luigi11111-11/+0
This reverts commit 921dd8dde5d381052d0aa2936304a3541a230c55.
2020-08-17replace most boost serialization with existing monero serializationmoneromooo-monero1-33/+170
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.
2020-08-16Merge pull request #6716Alexander Blair1-3/+4
76c16822d wallet2_api: implement runtime proxy configuration (xiphon)
2020-08-16Fix build with Boost 1.74moneromooo-monero1-0/+3
Thanks iDunk for testing
2020-08-10simplewallet: allow setting tx keys when sending to a subaddressmoneromooo-monero1-1/+1
The tx key derivation is different then
2020-08-09Use domain-separated ChaCha20 for in-memory key encryptionSarang Noether1-0/+11
2020-07-20wallet2_api: implement runtime proxy configurationxiphon1-3/+4
2020-07-19Merge pull request #6512Alexander Blair1-1/+1
5ef0607da Update copyright year to 2020 (SomaticFanatic)
2020-05-13simplewallet: don't complain about incoming payment ids on changemoneromooo-monero1-1/+2
2020-05-06Update copyright year to 2020SomaticFanatic1-1/+1
Update copyright year to 2020
2020-05-06Merge pull request #6485luigi11111-0/+2
7a8c1ee wallet2: fix subaddress expansion when receiving monero (moneromooo-monero)
2020-05-05Merge pull request #6467luigi11111-3/+3
8b655de simplewallet: report timestamp based expected unlock time on balance (moneromooo-monero)
2020-05-01Merge pull request #6446luigi11111-3/+3
e509ede trezor: adapt to new passphrase mechanism (ph4r05)
2020-04-27wallet2: fix subaddress expansion when receiving moneromoneromooo-monero1-0/+2
2020-04-27trezor: adapt to new passphrase mechanismDusan Klinec1-3/+3
- 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
2020-04-22simplewallet: report timestamp based expected unlock time on balancemoneromooo-monero1-3/+3
2020-04-15Allow wallet2.h to run in WebAssemblywoodser1-10/+30
- Add abstract_http_client.h which http_client.h extends. - Replace simple_http_client with abstract_http_client in wallet2, message_store, message_transporter, and node_rpc_proxy. - Import and export wallet data in wallet2. - Use #if defined __EMSCRIPTEN__ directives to skip incompatible code.
2020-04-10Merge pull request #6394luigi11111-0/+1
69b5992 simplewallet: new 'address one-off <major> <minor>' command (moneromooo-monero)
2020-04-07simplewallet: new "address one-off <major> <minor>" commandmoneromooo-monero1-0/+1
2020-03-31Merge pull request #6302luigi11111-0/+1
dab604e wallet2_api: implement estimateTransactionFee (xiphon)
2020-03-27Merge pull request #6299Alexander Blair1-0/+5
9c1f970b wallet2: remember daemon address overrides when loading a new wallet (moneromooo-monero)
2020-03-27Merge pull request #6289Alexander Blair1-0/+1
ffe7165e wallet: reroll fake outs selection on local tx_sanity_check failure (xiphon)
2020-03-12Merge pull request #6268Alexander Blair1-2/+2
a6c24412 wallet: fix exceptions getting the hash of a pruned tx (moneromooo-monero)
2020-03-07wallet2: remember daemon address overrides when loading a new walletmoneromooo-monero1-0/+5
2020-02-28Merge pull request #6238Alexander Blair1-0/+2
f717d593 wallet2: guard against race with multiple decrypt_keys users (moneromooo-monero)
2020-02-19Merge pull request #6190luigi11111-1/+6
096a9db Wallet: Distingush amounts for a single subaddress (tmoravec)
2020-02-06Merge pull request #6069Alexander Blair1-1/+1
d64e5aa7 wallet: allow message sign/verify for subaddresses (moneromooo-monero)
2020-01-26wallet: do not split integrated addresses in address book apimoneromooo-monero1-5/+30
2020-01-25wallet2_api: implement estimateTransactionFeexiphon1-0/+1
2020-01-14wallet: reroll fake outs selection on local tx_sanity_check failurexiphon1-0/+1
2020-01-11Merge pull request #6105Alexander Blair1-0/+2
0de8a0d3 wallet_rpc_server: new estimate_tx_size_and_weight RPC (moneromooo-monero)
2020-01-11Wallet: Distingush amounts for a single subaddressTadeas Moravec1-1/+6
Adding a new `amounts` field ot the output of `get_transfers` RPC method. This field specifies individual payments made to a single subaddress in a single transaction, e.g., made by this command: transfer <addr1> <amount1> <addr1> <amount2>
2019-12-31wallet: allow message sign/verify for subaddressesmoneromooo-monero1-1/+1
2019-12-30wallet: fix exceptions getting the hash of a pruned txmoneromooo-monero1-2/+2
2019-12-17wallet2: guard against race with multiple decrypt_keys usersmoneromooo-monero1-0/+2
If more than one thread wants to make sure of the spend secret key, then we decrypt on the first caller and reencrypt on the last caller, otherwise we could use an invalid secret key.
2019-12-12Merge pull request #6057luigi11111-0/+2
3b8dcc2 wallet2: make keys unlocker reentrant (moneromooo-monero)
2019-11-06wallet_rpc_server: new estimate_tx_size_and_weight RPCmoneromooo-monero1-0/+2
2019-11-01wallet: fix another facet of "did I get some monero" information leakmoneromooo-monero1-1/+2
We get new pool txes before processing any tx, pool or not. This ensures that if we're asked for a password, this does not cause a measurable delay in the txpool query after the last block query.
2019-11-01wallet2: do not send an unnecessary last getblocks.bin call on refreshmoneromooo-monero1-2/+2
The "everything refreshed" state was detected when a refresh call did not return any new blocks. This can be detected without that extra "empty" call by comparing the claimed node height to the height of the last block retrieved. Doing this avoids that last call, saves some bandwidth, and makes the common refresh case use only one call rather than two. As a side effect, it prevents an information leak reported by Tramèr et al: if the wallet retrieves a set of blocks which includes an output sent to the refreshing wallet, the wallet will prompt the user for the password to decode the amount and calculate the key image for the new output, and this will delay subsequent calls to getblocks.bin, allowing a passive adversary to note the delay and deduce when the wallet receives at least one output. This can still happen if the wallet downloads more than 1000 blocks, since this will be split in several calls, but then the most the adversary can tell is which 1000 block section the user received some monero (the adversary can estimate the heights of the blocks by calculating how many "large" transfers are done, which will be sections of blocks, the last of which will usually be below 1000, but the size of the data should allow the actual number of blocks sent to be determined fairly accurately). This timing trick still be used via the subsequent scan for incoming txes in the txpool, which will be fixed later.
2019-10-29wallet2: make keys unlocker reentrantmoneromooo-monero1-0/+2
protects against having your keys mangled
2019-10-25simplewallet: add public_nodes commandmoneromooo-monero1-0/+2
Lists nodes exposing their RPC port for public use
2019-10-25daemon, wallet: new pay for RPC use systemmoneromooo-monero1-17/+66
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.
2019-10-16Merge pull request #5952luigi11111-0/+6
93d5cf2 wallet2: add ignore-outputs-{above/below} option (stoffu)
2019-10-14wallet: remove long payment ID sending supportmoneromooo-monero1-3/+0
2019-10-14wallet2: ignore received unencrypted payment IDs (but warn hard)moneromooo-monero1-1/+1
2019-10-02wallet2: add ignore-outputs-{above/below} optionstoffu1-0/+6
https://github.com/aeonix/aeon/pull/131
2019-09-17wallet: add edit_address_book RPCmoneromooo-monero1-0/+1
2019-09-08Merge pull request #5855luigi11111-7/+9
2ec455d wallet: fix mismatch between two concepts of 'balance' (moneromooo-monero)
2019-09-05wallet: fix mismatch between two concepts of "balance"moneromooo-monero1-7/+9
One considers the blockchain, while the other considers the blockchain and some recent actions, such as a recently created transaction which spend some outputs, but isn't yet mined. Typically, the "balance" command wants the latter, to reflect the recent action, but things like proving ownership wants the former. This fixes a crash in get_reserve_proof, where a preliminary check and the main code used two concepts of "balance".
2019-08-28simplewallet: lock console on inactivitymoneromooo-monero1-0/+3
2019-08-22Wallet: Option to export data to ASCIITadeas Moravec1-0/+12
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
2019-08-21Merge pull request #5722luigi11111-1/+1
8be5fea simplewallet: optional all flag to export_outputs/export_key_images (moneromooo-monero)
2019-07-24Merge pull request #5600luigi11111-0/+1
dd58057 Remember RPC version on initial connect (hyc)
2019-07-24Merge pull request #5594luigi11111-0/+2
f074b6b device: show address on device display (ph4r05)
2019-07-24Merge pull request #5513luigi11111-1/+1
bc94ba4 wallet: distinguish between empty and absent attributes (moneromooo-monero)
2019-07-02simplewallet: optional all flag to export_outputs/export_key_imagesmoneromooo-monero1-1/+1
2019-06-17device: show address on device displayDusan Klinec1-0/+2
- Trezor: support for device address display (subaddress, integrated address) - Wallet::API support added - Simplewallet: - address device [<index>] - address new <label> // shows address on device also - integrated_address [device] <payment_id|address> // new optional "device" arg to display also on the device
2019-06-02Remember RPC version on initial connectHoward Chu1-0/+1
Don't keep asking for it on an intact connection Wallet is too chatty over the wire
2019-05-16wallet: add unlock_time details to show_transfersmoneromooo-monero1-1/+1
also add a note when receiving the tx, because the user might not notice the "XXX blocks to unlock" in the balance.
2019-05-02wallet: distinguish between empty and absent attributesmoneromooo-monero1-1/+1
2019-04-18wallet2: "output lineup" fake out selectionmoneromooo-monero1-0/+25
Based on python code by sarang: https://github.com/SarangNoether/skunkworks/blob/outputs/outputs/simulate.py
2019-04-16Merge pull request #5445Riccardo Spagni1-4/+9
b18f0b10 wallet: new --offline option (moneromooo-monero)
2019-04-16Merge pull request #5418Riccardo Spagni1-2/+2
374f388d wallet_rpc_server: add a all flag to export_outputs (moneromooo-monero)
2019-04-15wallet: new --offline optionmoneromooo-monero1-4/+9
It will avoid connecting to a daemon (so useful for cold signing using a RPC wallet), and not perform DNS queries.
2019-04-15Merge pull request #5396Riccardo Spagni1-0/+2
b40392fb wallet2: add --no-dns flag (moneromooo-monero)
2019-04-15Merge pull request #5355Riccardo Spagni1-0/+3
c68fe787 device/trezor: add button pressed request (Dusan Klinec) 827f52ad wallet: API changes to enable passphrase entry (Dusan Klinec)
2019-04-11Merge pull request #5388Riccardo Spagni1-0/+2
0be5b2ee simplewallet: new unset_ring command (moneromooo-monero)
2019-04-11Merge pull request #5382Riccardo Spagni1-3/+3
c12b43cb wallet: add number of blocks required for the balance to fully unlock (moneromooo-monero) 3f1e9e84 wallet2: set confirmations to 0 for pool txes in proofs (moneromooo-monero) 36c037ec wallet_rpc_server: error out on getting the spend key from a hot wallet (moneromooo-monero) cd1eaff2 wallet_rpc_server: always fill out subaddr_indices in get_transfers (moneromooo-monero)
2019-04-11Merge pull request #5374Riccardo Spagni1-0/+9
a2561653 wallet: new option to start background mining (moneromooo-monero)
2019-04-11simplewallet: new net_stats commandmoneromooo-monero1-0/+3
displays total sent and received bytes
2019-04-10wallet_rpc_server: add a all flag to export_outputsmoneromooo-monero1-2/+2
if we don't want to export new outputs only
2019-04-07device/trezor: add button pressed requestDusan Klinec1-0/+3
2019-04-07Pass SSL arguments via one class and use shared_ptr instead of referenceLee Clagett1-8/+2
2019-04-06Change SSL certificate file list to OpenSSL builtin load_verify_locationLee Clagett1-2/+2
Specifying SSL certificates for peer verification does an exact match, making it a not-so-obvious alias for the fingerprints option. This changes the checks to OpenSSL which loads concatenated certificate(s) from a single file and does a certificate-authority (chain of trust) check instead. There is no drop in security - a compromised exact match fingerprint has the same worse case failure. There is increased security in allowing separate long-term CA key and short-term SSL server keys. This also removes loading of the system-default CA files if a custom CA file or certificate fingerprint is specified.
2019-04-06Merge pull request #5350Riccardo Spagni1-0/+1
050bb337 wallet2: factor the watchonly/multisig/etc fields on creation (moneromooo-monero)
2019-04-06Merge pull request #5347Riccardo Spagni1-0/+3
d45b85e1 wallet2: skip derivation precalc for blocks we know we'll skip (moneromooo-monero)
2019-04-04wallet: new option to start background miningmoneromooo-monero1-0/+9
The setup-background-mining option can be used to select background mining when a wallet loads. The user will be asked the first time the wallet is created.
2019-04-04wallet2: add --no-dns flagmoneromooo-monero1-0/+2
2019-04-02simplewallet: new unset_ring commandmoneromooo-monero1-0/+2
Useful when debugging, though not much for users
2019-04-01wallet: add number of blocks required for the balance to fully unlockmoneromooo-monero1-3/+3
2019-04-01Merge pull request #5319Riccardo Spagni1-0/+6
f825055d wallet_rpc_server: error out on getting the spend key from a hot wallet (moneromooo-monero) 67aa4adc wallet_rpc_server: add a set_daemon RPC (moneromooo-monero) 705acbac wallet2: init some variables to default values if loading old wallets (moneromooo-monero) f82bc29e wallet_rpc_server: always fill out subaddr_indices in get_transfers (moneromooo-monero) 01efdc6a wallet_rpc_server: set confirmations to 0 for pending/pool txes (moneromooo-monero)
2019-04-01wallet_rpc_server: add a set_daemon RPCmoneromooo-monero1-0/+6
2019-04-01Merge pull request #5333Riccardo Spagni1-1/+25
18faa6da wallet: add freeze/thaw/frozen commands (moneromooo-monero)
2019-04-01Merge pull request #5303Riccardo Spagni1-1/+1
0a6cb30d wallet: flush output cache upon reorg (moneromooo-monero)
2019-04-01Merge pull request #5298Riccardo Spagni1-2/+3
8fd7452b wallet: move light wallet RPC out of core RPC (moneromooo-monero)
2019-03-27wallet2: factor the watchonly/multisig/etc fields on creationmoneromooo-monero1-0/+1
There's half a dozen calls, and it's easy to miss some when adding a new field.
2019-03-25wallet2: skip derivation precalc for blocks we know we'll skipmoneromooo-monero1-0/+3
2019-03-25Added socks proxy (tor/i2pd/kovri) support to walletLee Clagett1-1/+3
2019-03-24Merge pull request #5277Riccardo Spagni1-4/+20
adf6d773 wallet: fix offline signing calling a daemon RPC (moneromooo-monero)
2019-03-22wallet: add freeze/thaw/frozen commandsmoneromooo-monero1-1/+25
These commands let one freeze outputs by key image, so they do not appear in balance, nor are considered when creating a transaction, etc This is helpful when receiving an output from a suspected spy, who might try to track your other outputs by seeing with what other outputs it gets spent. The frozen command may be used without parameters to list all currently frozen outputs.
2019-03-21wallet: fix offline signing calling a daemon RPCmoneromooo-monero1-4/+20
2019-03-21wallet2: sanity check new tx before sendingmoneromooo-monero1-0/+4
We generate and check tx proofs and verify the amounts in those match what the original amounts were.
2019-03-21Merge pull request #5211Riccardo Spagni1-11/+16
c9b13fbb tests/trezor: HF9 and HF10 tests (Dusan Klinec) a1fd1d49 device/trezor: HF10 support added, wallet::API (Dusan Klinec) d74d26f2 crypto: hmac_keccak added (Dusan Klinec)
2019-03-20device/trezor: HF10 support added, wallet::APIDusan Klinec1-11/+16
- import only key images generated by cold signing process - wallet_api: trezor methods added - wallet: button request code added - const added to methods - wallet2::get_tx_key_device() tries to decrypt stored tx private keys using the device. - simplewallet supports get_tx_key and get_tx_proof on hw device using the get_tx_key feature - live refresh enables refresh with trezor i.e. computing key images on the fly. More convenient and efficient for users. - device: has_ki_live_refresh added - a thread is watching whether live refresh is being computed, if not for 30 seconds, it terminates the live refresh process - switches Trezor state
2019-03-19Merge pull request #5203Riccardo Spagni1-0/+1
8b514645 add multisig tx sets to describe_transfer rpc endpoint (spoke0)
2019-03-19Merge pull request #4889Riccardo Spagni1-1/+5
f42263eb wallet: adds rescan_bc option with preserving key images (Dusan Klinec)
2019-03-17Merge pull request #5061Riccardo Spagni1-1/+1
1f2930ce Update 2019 copyright (binaryFate)
2019-03-17wallet: flush output cache upon reorgmoneromooo-monero1-1/+1
Fixes output usage tracking
2019-03-15wallet: move light wallet RPC out of core RPCmoneromooo-monero1-2/+3
It's not nothing to do with it
2019-03-15wallet: adds rescan_bc option with preserving key imagesDusan Klinec1-1/+5
- enables to perform rescan_spent / ki sync with untrusted daemon. Spent check status involves RPC calls which require trusted daemon status as it leaks information. The new call performs soft reset while preserving key images thus a sequence: refresh, ki sync / import, rescan_bc keep_ki will correctly perform spent checking without need for trusted daemon. - useful to detect spent outputs with untrusted daemon on watch_only / multisig / hw-cold wallets after expensive key image sync. - cli: rescan_bc keep_ki
2019-03-14Merge pull request #4977Riccardo Spagni1-0/+2
5ea17909 device/trezor: debugging features, trezor tests (Dusan Klinec)
2019-03-05Update 2019 copyrightbinaryFate1-1/+1
2019-03-05add multisig tx sets to describe_transfer rpc endpointspoke01-0/+1
2019-03-05epee: add SSL supportMartijn Otto1-1/+2
RPC connections now have optional tranparent SSL. An optional private key and certificate file can be passed, using the --{rpc,daemon}-ssl-private-key and --{rpc,daemon}-ssl-certificate options. Those have as argument a path to a PEM format private private key and certificate, respectively. If not given, a temporary self signed certificate will be used. SSL can be enabled or disabled using --{rpc}-ssl, which accepts autodetect (default), disabled or enabled. Access can be restricted to particular certificates using the --rpc-ssl-allowed-certificates, which takes a list of paths to PEM encoded certificates. This can allow a wallet to connect to only the daemon they think they're connected to, by forcing SSL and listing the paths to the known good certificates. To generate long term certificates: openssl genrsa -out /tmp/KEY 4096 openssl req -new -key /tmp/KEY -out /tmp/REQ openssl x509 -req -days 999999 -sha256 -in /tmp/REQ -signkey /tmp/KEY -out /tmp/CERT /tmp/KEY is the private key, and /tmp/CERT is the certificate, both in PEM format. /tmp/REQ can be removed. Adjust the last command to set expiration date, etc, as needed. It doesn't make a whole lot of sense for monero anyway, since most servers will run with one time temporary self signed certificates anyway. SSL support is transparent, so all communication is done on the existing ports, with SSL autodetection. This means you can start using an SSL daemon now, but you should not enforce SSL yet or nothing will talk to you.
2019-03-05device/trezor: debugging features, trezor testsDusan Klinec1-0/+2
2019-03-04Merge pull request #4054Riccardo Spagni1-2/+6
24569454 epee: add SSL support (moneromooo-monero)
2019-03-03wallet2: fix mishandling rct outputs in coinbase txmoneromooo-monero1-1/+1
Reported by cutcoin
2019-02-02epee: add SSL supportmoneromooo-monero1-2/+6
RPC connections now have optional tranparent SSL. An optional private key and certificate file can be passed, using the --{rpc,daemon}-ssl-private-key and --{rpc,daemon}-ssl-certificate options. Those have as argument a path to a PEM format private private key and certificate, respectively. If not given, a temporary self signed certificate will be used. SSL can be enabled or disabled using --{rpc}-ssl, which accepts autodetect (default), disabled or enabled. Access can be restricted to particular certificates using the --rpc-ssl-allowed-certificates, which takes a list of paths to PEM encoded certificates. This can allow a wallet to connect to only the daemon they think they're connected to, by forcing SSL and listing the paths to the known good certificates. To generate long term certificates: openssl genrsa -out /tmp/KEY 4096 openssl req -new -key /tmp/KEY -out /tmp/REQ openssl x509 -req -days 999999 -sha256 -in /tmp/REQ -signkey /tmp/KEY -out /tmp/CERT /tmp/KEY is the private key, and /tmp/CERT is the certificate, both in PEM format. /tmp/REQ can be removed. Adjust the last command to set expiration date, etc, as needed. It doesn't make a whole lot of sense for monero anyway, since most servers will run with one time temporary self signed certificates anyway. SSL support is transparent, so all communication is done on the existing ports, with SSL autodetection. This means you can start using an SSL daemon now, but you should not enforce SSL yet or nothing will talk to you.
2019-01-28Merge pull request #5056Riccardo Spagni1-2/+2
8258a9e7 wallet: do not check txpool in background mode (moneromooo-monero)
2019-01-22add a bulletproof version, new bulletproof type, and rct configmoneromooo-monero1-1/+1
This makes it easier to modify the bulletproof format
2019-01-16wallet2: remember which output keys map to which key imagesmoneromooo-monero1-6/+14
This allows filling in transfer_details when a cold signed tx gets seen in a block next
2019-01-16Merge pull request #5027Riccardo Spagni1-0/+3
9092fc4b wallet: do not display daemon controlled text if untrusted (moneromooo-monero)
2019-01-16Merge pull request #5012Riccardo Spagni1-1/+1
d7354c78 wallet_rpc_server: add all field to export_key_images (moneromooo-monero)
2019-01-09wallet: do not check txpool in background modemoneromooo-monero1-2/+2
This avoids the constant message about needed to run refresh to enter a password. Also mention the txpool when asking for the password if the reason is a pool tx.
2018-12-31wallet2: speedup output trackingmoneromooo-monero1-3/+4
It can get heavy for large wallets
2018-12-31wallet: optionally keep track of owned outputs usesmoneromooo-monero1-1/+9