aboutsummaryrefslogtreecommitdiff
path: root/src/wallet/wallet2.cpp (unfollow)
AgeCommit message (Collapse)AuthorFilesLines
2020-04-27trezor: adapt to new passphrase mechanismDusan Klinec1-2/+6
- 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-15Allow wallet2.h to run in WebAssemblywoodser1-134/+205
- 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-07simplewallet: new "address one-off <major> <minor>" commandmoneromooo-monero1-3/+12
2020-04-01Hash domain separationSarang Noether1-5/+1
2020-03-31cryptonote_basic: drop unused verification_context::m_not_rct fieldxiphon1-2/+0
2020-03-09Move hex->bin conversion to monero copyright files and with less includesLee Clagett1-1/+1
2020-03-07wallet2: remember daemon address overrides when loading a new walletmoneromooo-monero1-2/+21
2020-02-07wallet2: mention --daemon-ssl-allow-any-cert in --proxy error msgxiphon1-0/+1
2020-01-26wallet: do not split integrated addresses in address book apimoneromooo-monero1-4/+6
2020-01-25wallet2_api: implement estimateTransactionFeexiphon1-14/+14
2020-01-24wallet2: fix store-tx-info loadingmoneromooo-monero1-3/+12
The backward compatibility code was always setting it to 1 in modern wallets since store_tx_keys was not present and thus assumed to be 1 by default. Reported by SeventhAlpaca
2020-01-16wallet2: reject zero keys in json inputmoneromooo-monero1-0/+4
Because the user might do this for reasons unknown. Values beyond l-1 will be reduced, so are accepted. Reported by who-biz.
2020-01-14wallet: reroll fake outs selection on local tx_sanity_check failurexiphon1-2/+44
2020-01-11Wallet: Distingush amounts for a single subaddressTadeas Moravec1-1/+27
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>
2020-01-09wallet2: do not remove known rings when a tx failsmoneromooo-monero1-1/+0
Even if it fails, the ring composition is known to a potential adversary, and so we should reuse the same ring next time
2019-12-31wallet: allow message sign/verify for subaddressesmoneromooo-monero1-2/+16
2019-12-30wallet: fix exceptions getting the hash of a pruned txmoneromooo-monero1-7/+7
2019-12-17wallet2: guard against race with multiple decrypt_keys usersmoneromooo-monero1-0/+7
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-14wallet2: fix hang in wallet refreshmoneromooo-monero1-1/+1
If the hashes received would move the current blockchain past the stop point, the short history would not be updated, since we do not expect another loop, but the daemon might return earlier hashes, causing the end index to not be enough to reach the threshold and this require another loop, which will download the same hashes and cause an infinite loop.
2019-11-28wallet2: better error when restoring a wallet with the wrong keysmoneromooo-monero1-1/+1
2019-11-19wallet: don't issue node rpc proxy requests in '--offline' modexiphon1-0/+1
2019-11-06wallet_rpc_server: new estimate_tx_size_and_weight RPCmoneromooo-monero1-0/+18
2019-11-05wallet2: don't try to lock an empty filenamemoneromooo-monero1-0/+6
2019-11-04wallet2: fix pool txes not being flushed when minedmoneromooo-monero1-1/+1
2019-11-01wallet2: fix is_synced checking target height, not heightmoneromooo-monero1-1/+1
Target height would be appropriate for the daemon, which syncs off other daemons, but the wallet syncs off the daemon it's connected to, and its target is the daemon's current height.
2019-11-01wallet: fix another facet of "did I get some monero" information leakmoneromooo-monero1-10/+30
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-5/+15
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-11-01wallet2: do not repeatedly ask for pool txes sent to usmoneromooo-monero1-5/+0
This lets a passive attacker with access to the network link between node and wallet perform traffic analysis to deduce when an idle wallet receives a transaction. Reported by Tramèr et al.
2019-10-29wallet2: make keys unlocker reentrantmoneromooo-monero1-3/+21
protects against having your keys mangled
2019-10-25simplewallet: add public_nodes commandmoneromooo-monero1-0/+21
Lists nodes exposing their RPC port for public use
2019-10-25daemon, wallet: new pay for RPC use systemmoneromooo-monero1-245/+420
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-23wallet2: error out when we need a daemon password but have no prompt functionmoneromooo-monero1-0/+5
2019-10-23wallet2: fix the logged number of detached transfersmoneromooo-monero1-0/+1
2019-10-14wallet: remove long payment ID sending supportmoneromooo-monero1-7/+0
2019-10-14wallet2: ignore received unencrypted payment IDs (but warn hard)moneromooo-monero1-6/+18
2019-10-04wallet2: don't delete file that may not existselsta1-5/+5
2019-10-02wallet2: add ignore-outputs-{above/below} optionstoffu1-1/+35
https://github.com/aeonix/aeon/pull/131
2019-09-27monerod can now sync from pruned blocksmoneromooo-monero1-1/+1
If the peer (whether pruned or not itself) supports sending pruned blocks to syncing nodes, the pruned version will be sent along with the hash of the pruned data and the block weight. The original tx hashes can be reconstructed from the pruned txes and theur prunable data hash. Those hashes and the block weights are hashes and checked against the set of precompiled hashes, ensuring the data we received is the original data. It is currently not possible to use this system when not using the set of precompiled hashes, since block weights can not otherwise be checked for validity. This is off by default for now, and is enabled by --sync-pruned-blocks
2019-09-17wallet: add edit_address_book RPCmoneromooo-monero1-0/+15
2019-09-10wallet2: enable ignoring fractional outputs also when sweepingstoffu1-0/+16
2019-09-06wallet2: resolve CID 203918 null pointer deference (NULL_RETURNS)anonimal1-0/+6
2019-09-05wallet: fix mismatch between two concepts of "balance"moneromooo-monero1-34/+58
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-09-02Removed unused boost/value_init headerLev Sizov1-1/+0
2019-09-02Changed the use of boost:value_initialized for C++ list initializerJesus Ramirez1-4/+4
2019-08-28simplewallet: lock console on inactivitymoneromooo-monero1-0/+9
2019-08-28rpc: move a leftover light wallet RPC out of daemon RPCmoneromooo-monero1-2/+2
2019-08-24wallet2: fix unset_ring tx retrieval checksmoneromooo-monero1-3/+1
2019-08-23wallet2: fix cold signing losing tx keysmoneromooo-monero1-1/+1
2019-08-22Wallet: Option to export data to ASCIITadeas Moravec1-21/+108
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-22wallet: add --extra-entropy command line flagmoneromooo-monero1-0/+11
It lets the user add custom entropy to the PRNG. It does this by hashing the new data and xoring the resulting hash with the PRNG state.
2019-08-19reject setting lookahead major or minor to 0moneromooo-monero1-0/+2
2019-08-15Replace std::random_shuffle with std::shuffleTom Smeding1-2/+2
According to [1], std::random_shuffle is deprecated in C++14 and removed in C++17. Since std::shuffle is available since C++11 as a replacement and monero already requires C++11, this is a good replacement. A cryptographically secure random number generator is used in all cases to prevent people from perhaps copying an insecure std::shuffle call over to a place where a secure one would be warranted. A form of defense-in-depth. [1]: https://en.cppreference.com/w/cpp/algorithm/random_shuffle
2019-07-02simplewallet: optional all flag to export_outputs/export_key_imagesmoneromooo-monero1-2/+2
2019-06-19wallet2: fix change subaddress mixup when sending pre rct outputsmoneromooo-monero1-0/+1
2019-06-17device: show address on device displayDusan Klinec1-0/+30
- 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-17device: tx_key caching fixed, store recovered txkeyDusan Klinec1-3/+11
2019-06-02Remember RPC version on initial connectHoward Chu1-7/+12
Don't keep asking for it on an intact connection Wallet is too chatty over the wire
2019-05-21Fix configuration bug; wallet2 --daemon-ssl-allow-any-cert now works.Lee Clagett1-1/+4
2019-05-16wallet: add unlock_time details to show_transfersmoneromooo-monero1-2/+2
also add a note when receiving the tx, because the user might not notice the "XXX blocks to unlock" in the balance.
2019-05-11wallet: fix certificate fingerprint length checkmoneromooo-monero1-1/+1
Fixed by crCr62U0
2019-05-02wallet2: don't wait a day before using new version feesmoneromooo-monero1-2/+2
30 blocks should be more than enough to drain the txpool of transactions made with the old fee scheme
2019-05-02wallet: distinguish between empty and absent attributesmoneromooo-monero1-4/+8
2019-05-01wallet2: reject standalone short payment IDs in monero: URI APImoneromooo-monero1-4/+2
2019-04-29remove unused codemoneromooo-monero1-3/+0
2019-04-29wallet2: fix infinite loop picking outputs in corner casemoneromooo-monero1-2/+5
If we have fewer outputs available on the chain than what we require, but the output we're spending already has a ring, it would loop picking outputs randomly, but never find enough. Also tune logs for better debugging this kind of thing.
2019-04-26change SSL certificate fingerprint whitelisting from SHA1 to SHA-256moneromooo-monero1-0/+6
SHA1 is too close to bruteforceable
2019-04-24wallet2: default to trying to keep 5 outputs of 2+ moneromoneromooo-monero1-3/+13
In the case where previously a second unneeded output would be added to a transaction. This should help *some* of the cases where outputs are slowly being consolidated, leading to the whole balance being locked when sending monero.
2019-04-23consensus: from v12, enforce >= 2 outputsmoneromooo-monero1-0/+2
2019-04-23wallet2: add missing "sanity check failed" reason messagemoneromooo-monero1-0/+2
2019-04-23wallet2: fix wrong change being recorded in sweep_allmoneromooo-monero1-2/+2
leading to the sanity check triggering
2019-04-22wallet: fix key image computation signaling to the deviceDusan Klinec1-1/+1
2019-04-18simplewallet: fix output representation offsetmoneromooo-monero1-2/+2
2019-04-18wallet2: "output lineup" fake out selectionmoneromooo-monero1-60/+47
Based on python code by sarang: https://github.com/SarangNoether/skunkworks/blob/outputs/outputs/simulate.py
2019-04-15wallet: new --offline optionmoneromooo-monero1-53/+90
It will avoid connecting to a daemon (so useful for cold signing using a RPC wallet), and not perform DNS queries.
2019-04-12rpc: new sanity check on relayed transactionsmoneromooo-monero1-0/+1
This will weed out some transactions with silly rings
2019-04-11wallet2: update estimate_rct_tx_size for smaller rct proofsmoneromooo-monero1-1/+1
2019-04-11simplewallet: new net_stats commandmoneromooo-monero1-0/+10
displays total sent and received bytes
2019-04-10wallet_rpc_server: add a all flag to export_outputsmoneromooo-monero1-5/+6
if we don't want to export new outputs only
2019-04-07Enabling daemon-rpc SSL now requires non-system CA verificationLee Clagett1-10/+13
If `--daemon-ssl enabled` is set in the wallet, then a user certificate, fingerprint, or onion/i2p address must be provided.
2019-04-07device/trezor: add button pressed requestDusan Klinec1-0/+12
2019-04-07Require manual override for user chain certificates.Lee Clagett1-0/+5
An override for the wallet to daemon connection is provided, but not for other SSL contexts. The intent is to prevent users from supplying a system CA as the "user" whitelisted certificate, which is less secure since the key is controlled by a third party.
2019-04-07Pass SSL arguments via one class and use shared_ptr instead of referenceLee Clagett1-14/+24
2019-04-06Change default SSL to "enabled" if user specifies fingerprint/certificateLee Clagett1-3/+8
Currently if a user specifies a ca file or fingerprint to verify peer, the default behavior is SSL autodetect which allows for mitm downgrade attacks. It should be investigated whether a manual override should be allowed - the configuration is likely always invalid.
2019-04-06Change SSL certificate file list to OpenSSL builtin load_verify_locationLee Clagett1-21/+10
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-06wallet: add number of blocks required for the balance to fully unlockmoneromooo-monero1-12/+43
2019-04-04wallet: new option to start background miningmoneromooo-monero1-0/+7
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-3/+8
2019-04-04crypto: replace rand<T>()%N idiom with unbiased rand_idx(N)stoffu1-4/+4
2019-04-03wallet2: support multi out txes without change in sanity checkmoneromooo-monero1-7/+9
2019-04-02simplewallet: new unset_ring commandmoneromooo-monero1-0/+37
Useful when debugging, though not much for users
2019-04-01wallet: add number of blocks required for the balance to fully unlockmoneromooo-monero1-12/+43
2019-04-01wallet2: set confirmations to 0 for pool txes in proofsmoneromooo-monero1-4/+4
It makes more sense than (uint64_t)-1, which is going to look like very much confirmed when not checking in_pool
2019-04-01wallet_rpc_server: add a set_daemon RPCmoneromooo-monero1-7/+15
2019-04-01wallet2: init some variables to default values if loading old walletsmoneromooo-monero1-0/+3
2019-03-28Add get_tx_proof support, needed for new sanity checkcslashm1-21/+29
Enhance debug info
2019-03-27wallet2: factor the watchonly/multisig/etc fields on creationmoneromooo-monero1-36/+22
There's half a dozen calls, and it's easy to miss some when adding a new field.
2019-03-25wallet2: fix tx sanity check change test for the sweep_all casemoneromooo-monero1-3/+9
2019-03-25wallet2: skip derivation precalc for blocks we know we'll skipmoneromooo-monero1-1/+21
2019-03-25cryptonote: block parsing + hash calculation speedupmoneromooo-monero1-3/+1
This saves a duplicate serialization step
2019-03-25wallet: fix memory only walletsmoneromooo-monero1-2/+4
at least when using restore_deterministic_wallet
2019-03-25Added socks proxy (tor/i2pd/kovri) support to walletLee Clagett1-3/+50
2019-03-24wallet2: set confirmations to 0 for pool txes in proofsmoneromooo-monero1-4/+4
It makes more sense than (uint64_t)-1, which is going to look like very much confirmed when not checking in_pool
2019-03-22wallet: add freeze/thaw/frozen commandsmoneromooo-monero1-12/+73
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-14/+4
2019-03-21wallet2: sanity check new tx before sendingmoneromooo-monero1-105/+213
We generate and check tx proofs and verify the amounts in those match what the original amounts were.
2019-03-20device/trezor: HF10 support added, wallet::APIDusan Klinec1-26/+141
- 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-17wallet2: make use_fork_rules handle chain heights lower than leewaymoneromooo-monero1-1/+1
2019-03-17wallet: flush output cache upon reorgmoneromooo-monero1-3/+12
Fixes output usage tracking
2019-03-15wallet: move light wallet RPC out of core RPCmoneromooo-monero1-11/+11
It's not nothing to do with it
2019-03-15wallet: adds rescan_bc option with preserving key imagesDusan Klinec1-16/+88
- 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-15wallet2: set seed language when creating from jsonmoneromooo-monero1-0/+2
2019-03-14wallet2: fix generation from json when restore height is not setmoneromooo-monero1-1/+1
It was not recovering then, but creating a new random address
2019-03-12wallet2: don't store 0 amount outputs, they'll fail to be spentmoneromooo-monero1-1/+7
It's better to just ignore them, the user does not really need to know they're here. If the mask is wrong, they'll fail to be used, and sweeping will fail as it tries to use it. Reported by Josh Davis.
2019-03-11wallet: fix load failure if the mms isn't usablemoneromooo-monero1-1/+8
2019-03-07wallet2: do not use invalid keys as fake outs in ringsmoneromooo-monero1-0/+11
2019-03-05wallet2: key image import fixesmoneromooo-monero1-15/+17
- return the right output data when offset is not zero - do not consider import failed if result height is zero (it can be 0 if unknown) - select the right tx pubkey when using subaddresses (it's faster, and we might select the wrong one if we got an output using one of the additional tx keys) - account for skipped outputs for spent/unspent balance info "spent" is arguably wrong, since it will count spent change multiple times as it goes through receive/spend cycles.
2019-03-05Update 2019 copyrightbinaryFate1-1/+1
2019-03-05add multisig tx sets to describe_transfer rpc endpointspoke01-4/+15
2019-03-05epee: add SSL supportMartijn Otto1-3/+9
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-05wallet2: don't calculate prefix hash when we don't need itmoneromooo-monero1-6/+6
2019-03-04various: remove unused variablesmoneromooo-monero1-1/+0
2019-03-04Print the reason why a notification spec failed to parsemoneromooo-monero1-1/+1
2019-03-03wallet2: fix mishandling rct outputs in coinbase txmoneromooo-monero1-6/+12
Reported by cutcoin
2019-02-22Better error when sending a tx with a too large extra fieldmoneromooo-monero1-0/+1
2019-02-20wallet: fix payment ID decryption for construction dataDusan Klinec1-7/+6
2019-02-13Don't decrypt keys in view only wallets in wallet_keys_unlockerDoyle1-1/+1
2019-02-02epee: add SSL supportmoneromooo-monero1-7/+41
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-28notify: handle arbitrary tagsmoneromooo-monero1-1/+1
2019-01-22ringct: encode 8 byte amount, saving 24 bytes per outputmoneromooo-monero1-2/+2
Found by knaccc
2019-01-22add a bulletproof version, new bulletproof type, and rct configmoneromooo-monero1-18/+27
This makes it easier to modify the bulletproof format
2019-01-22Pruningmoneromooo-monero1-76/+113
The blockchain prunes seven eighths of prunable tx data. This saves about two thirds of the blockchain size, while keeping the node useful as a sync source for an eighth of the blockchain. No other data is currently pruned. There are three ways to prune a blockchain: - run monerod with --prune-blockchain - run "prune_blockchain" in the monerod console - run the monero-blockchain-prune utility The first two will prune in place. Due to how LMDB works, this will not reduce the blockchain size on disk. Instead, it will mark parts of the file as free, so that future data will use that free space, causing the file to not grow until free space grows scarce. The third way will create a second database, a pruned copy of the original one. Since this is a new file, this one will be smaller than the original one. Once the database is pruned, it will stay pruned as it syncs. That is, there is no need to use --prune-blockchain again, etc.
2019-01-19wallet2: fix hashchain going out of sync on refresh errormoneromooo-monero1-0/+5
2019-01-18core, wallet: remember original text version of destination addressmoneromooo-monero1-7/+11
2019-01-16wallet2: remember which output keys map to which key imagesmoneromooo-monero1-10/+87
This allows filling in transfer_details when a cold signed tx gets seen in a block next
2019-01-13wallet2: fix incorrect patch for determining fork rulesmoneromooo-monero1-1/+1
Half of the patch was correct, but half was introducing another bug, where a wallet asking for a fork that the daemon does not know about yet would decide to use those rules.
2019-01-13wallet2: fix duplicate tx notifications for pool txesmoneromooo-monero1-3/+10
2019-01-09wallet: do not check txpool in background modemoneromooo-monero1-7/+7
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-10/+45
It can get heavy for large wallets
2018-12-31wallet: optionally keep track of owned outputs usesmoneromooo-monero1-2/+25
2018-12-30wallet: do not display daemon controlled text if untrustedmoneromooo-monero1-26/+73
2018-12-24wallet_rpc_server: add all field to export_key_imagesmoneromooo-monero1-3/+6
To use if you want all key images, not just the ones for recently imported outputs
2018-12-21wallet2: finalize_multisig now rejects non N-1/N multisig walletsmoneromooo-monero1-0/+17
2018-12-19Remove unused hash in export_key_imagesdoy-lee1-3/+0
2018-12-16wallet2: cut down on the number of useless derivation threadsmoneromooo-monero1-6/+9
2018-12-16wallet2: fix accessing unwound stack on exceptionmoneromooo-monero1-4/+12
2018-12-14Sync hashchain bug fixednaughtyfox1-4/+3
2018-12-14Wallet: Initialize members without default ctor.Tadeas Moravec1-0/+2
Found by Coverity (188336 in Anonimal's Coverity account).
2018-12-12MMS (Multisig Messaging System): Initial versionrbrunner71-4/+113
2018-12-08wallet2: clear all payments on soft rescan_bcmoneromooo-monero1-0/+4
They'll get duplicated otherwise
2018-12-04device/trezor: ask for KI sync on first refreshDusan Klinec1-5/+9
When doing a first refresh on HW-token based wallet KI sync is required if money were received. Received money may indicate wallet was already used before the restore I.e., some transaction could have been already sent from the wallet. The spent UTXO would not be detected as spent which could lead to double spending errors on submitting a new transaction. Thus if the wallet is HW-token based with the cold signing protocol and the first refresh detected received money the user is asked to perform the key image sync.
2018-12-04device: enable to use multiple independent device walletsDusan Klinec1-0/+19
- adds a new option `--hw-device-deriv-path` to the simple wallet. Enables to specify wallet derivation path / wallet code (path avoided so it can be misinterpreted as a file path). - devices can use different derivation mechanisms. Trezor uses standard SLIP-10 mechanism with fixed SLIP-44 prefix for Monero - Trezor: when empty, the default derivation mechanism is used with 44'/128'/0'. When entered the derivation path is 44'/128'/PATH. - Trezor: the path is always taken as elements are hardened (1<<31 bit turned on)
2018-11-29device/trezor: passphrase entry on hostDusan Klinec1-3/+49
- simple device callback object added. Device can request passphrase/PIN entry via the callback or notify user some action is required - callback is routed to wallet2, which routes the callback to i_wallet_callback so CLI or GUI wallets can support passphrase entry for HW tokens - wallet: device open needs wallet callback first - passphrase protected device needs wallet callback so user can enter passphrase
2018-11-26rpc: speedup get_outs.binmoneromooo-monero1-0/+1
2018-11-23remove some unused codemoneromooo-monero1-5/+0
Found by codacy.com
2018-11-23a few minor (but easy) performance tweaksmoneromooo-monero1-2/+2
Found by codacy.com
2018-11-22wallet2: resume processing when tx extra is partially brokenstoffu1-2/+2
Motivated by https://monero.stackexchange.com/questions/10483 Some exchanges appear to have customized the wallet software in an inappropriate way, making the tx extra field partially unreadable. PR #3716 changed the wallet behavior disallowing such partially valid tx extra. An example tx reported by the user is e87c675a85f34ecac58a8846613d25062f1813e1023c552b705afad32b972c38 where the normal tx pubkey appears again with the aditional tx pubkeys tag `04` which is inappropriate.
2018-11-22wallet2: add n_vouts to capture listmoneromooo-monero1-1/+1
2018-11-20Fix issue 4793 - M/N multisig transaction signaturenaughtyfox1-16/+61
2018-11-20rpc: speedup get_output_distributionmoneromooo-monero1-2/+5
and decrease the amount of data carried around
2018-11-15various: do not propagate exception through dtormoneromooo-monero1-1/+6
Coverity 189689, 189690, 189692, 189695
2018-11-07wallet2: remove redundant chacha key generation in store_keysstoffu1-1/+0
2018-11-06build: fix Ubuntu 16.04 (GCC 5.4.0) compilationxiphon1-1/+2
2018-11-05wallet2: fix off by one in output pickingmoneromooo-monero1-12/+19
and take into account wallet level minimum spend age
2018-11-04wallet2: only export necessary outputs and key imagesmoneromooo-monero1-46/+76
and disable annoying test that requires ridiculous amounts of skullduggery every time some format changes
2018-11-04wallet2: faster output and key image import/exportmoneromooo-monero1-18/+76
2018-11-04Fix: out_of_hashchain_bounds_error in refreshHasan Pekdemir1-1/+1
15:43 < hahsun> Im on stagenet and I suddenly get this exception: 2018-11-04 14:42:52.416 [RPC0] ERROR wallet.wallet2 src/wallet/wallet2.cpp:2070 !m_blockchain.is_in_bounds(current_index). THROW EXCEPTION: error::out_of_hashchain_bounds_error 16:01 <+moneromooo> OK, possibly because the blckchain is always seeded with the genesis block hash... 16:02 <+moneromooo> So that case should be allowed, assuming it doesn't break the code around it. 16:05 <+moneromooo> OK if stop_height == size || (size==1 && stop_heigt ==0) 16:05 <+moneromooo> Throw if not that. 16:06 < hahsun> k
2018-11-03wallet: add a non destructive blockchain rescanmoneromooo-monero1-3/+19
2018-11-03wallet2: demote a few uninteresting recurring logs to TRACEmoneromooo-monero1-5/+5
2018-11-03wallet2: fix print_ring printing double entries for transactionsmoneromooo-monero1-0/+1
When a tx gets from unconfirmed to conirmed, the rings for that transaction were being added twice
2018-11-02device/trezor: trezor support addedDusan Klinec1-25/+133
2018-10-31wallet2: use padded bulletproofs for multisig signingstoffu1-4/+1
Analogous to #4540
2018-10-28wallet2: rewrite keys file in a safer mannerNathan Dorfman1-3/+12
2018-10-27wallet2: save ring in the ringdb once a tx is createdmoneromooo-monero1-0/+14
Even if it is never relayed, it ensures a daemon supplying fake outs on demand will never be asked for a set with the real input being the only intersecting member (only a problem with people who trust their privacy to some stranger's node, but it seems to be a massively common thing, even in Monero)
2018-10-27wallet2: fix ring reuse breaking when using histogrammoneromooo-monero1-0/+3
2018-10-23Update ZMQ fee estimate and add ZMQ output distributionLee Clagett1-8/+8
2018-10-23wallet2: extend fake out picks away from the gamma pickmoneromooo-monero1-2/+23
in order to unbias selection from blocks with few txes
2018-10-22wallet2/create_transactions_2: removed obsolete '/ 1024' on min_fee calcPaul Shapiro1-1/+1
2018-10-22wallet2: sanity check rct output distribution from the daemonmoneromooo-monero1-1/+7
2018-10-21wallet2/create_transactions_2: fixed typo in try_tx=true's estimate_fee argsPaul Shapiro1-1/+1
2018-10-21wallet2/create_transactions_2: removed extraneous shuffle before sort of ↵Paul Shapiro1-5/+1
unused_*_indices_per_subaddr
2018-10-18Rename "blackball" for claritymoneromooo-monero1-1/+1
Apparently some people seem to think it's a censorship list...
2018-10-16wallet2: initialize some scalar fields in ctor where appropriatemoneromooo-monero1-0/+4
Coverity 188336
2018-10-13SOFTWARE is the default wallet devicem2049r1-0/+1
2018-10-11Return appropriate RPC error code when key image signature check failsMichał Sałaban1-1/+1
2018-10-10wallet_rpc_server: optionally return tx keys in sign_transfermoneromooo-monero1-0/+4
2018-10-09wallet2: make fake out selection messages less spammymoneromooo-monero1-3/+18
2018-10-09wallet2: fix cold signing using non padded bulletproofsmoneromooo-monero1-4/+1
This code was deciding which bulletproof configuration to use based on ptx which weren't created yet.
2018-10-06Fix some calls to the translation functionGuillaume LE VAILLANT1-2/+2
Some strings were not detected by lupdate because "tr() cannot be called without context".
2018-10-03wallet2: disable height based segregationmoneromooo-monero1-3/+3
It can still be enable via DNS if a key reusing fork pops up
2018-10-02wallet2: clear found out for every tx keydoy-lee1-1/+1
Avoids triggering the sanity check
2018-10-01Arbitrary M/N multisig schemes:naughtyfox1-98/+304
* support in wallet2 * support in monero-wallet-cli * support in monero-wallet-rpc * support in wallet api * support in monero-gen-trusted-multisig * unit tests for multisig wallets creation
2018-10-01wallet: fix --generate-from-json using wrong passwordmoneromooo-monero1-4/+9
2018-09-29Merge pull request #4333Riccardo Spagni1-0/+24
73403004 add --block-notify to monerod and --tx-notify to monero-wallet-{cli,rpc} (moneromooo-monero)
2018-09-29Merge pull request #4461Riccardo Spagni1-1/+5
7dd11711 wallet2: fix transfers between subaddresses hitting the sanity check (moneromooo-monero)
2018-09-29Merge pull request #4456Riccardo Spagni1-2/+9
06d05c21 device: set device name correctly if key_on_device is set (Dusan Klinec)
2018-09-29Merge pull request #4406Riccardo Spagni1-3/+27
7964d4f8 wallet2: handle corner case in picking fake outputs (moneromooo-monero)
2018-09-25wallet2: fix duplicate output making it to the RPCmoneromooo-monero1-8/+33
2018-09-22wallet2: handle corner case in picking fake outputsmoneromooo-monero1-3/+27
If we originally think we have enough outputs on the blockchain to pick random fake outputs, we might end up with not enough of them if enough are actually blackballed.
2018-09-19query backing devicem2049r1-12/+68
2018-09-18wallet: implement coin splitting for sweep_* 'outputs' optionwhythat1-3/+25
Implemented strategy splits total amount into N equal parts, where N is a specified number of outputs. If N > 1, dummy change output is NOT created. rebased by moneromooo