aboutsummaryrefslogtreecommitdiff
path: root/src/wallet/api (follow)
AgeCommit message (Collapse)AuthorFilesLines
2021-02-15Merge pull request #7265luigi11111-0/+1
bdabcd0 wallet_api: store fee for incoming txs in history (Ben Evanoff)
2021-01-02wallet_api: store fee for incoming txs in historyBen Evanoff1-0/+1
2020-12-25wallet api: allow wallet to fetch all key images via apibenevanoff3-4/+5
2020-11-29Merge pull request #7020luigi11111-0/+4
2c66894 wallet_api: TransactionHistory - fill unconfirmed out payments dests (xiphon)
2020-11-28Merge pull request #6830luigi11114-0/+23
64e9526 Extend TransactionInfo with coinbase and description attributes in wallet/api (dsc)
2020-11-28Allow tx note edits via TransactionHistory object in wallet/apidsc3-0/+13
2020-11-14wallet_api: TransactionHistory - fill unconfirmed out payments destsxiphon1-0/+4
2020-10-17wallet2_api: implement stop() to interrupt refresh() loop oncexiphon3-0/+11
2020-09-19Extend TransactionInfo with coinbase and description attributes in wallet/apidsc4-0/+23
2020-09-19Allow AddressBook description edits via wallet/api interfacedsc3-0/+21
2020-08-28wallet: allow signing a message with spend or view keymoneromooo-monero1-2/+2
2020-08-27Integrate CLSAGs into moneromoneromooo-monero1-0/+1
They are allowed from v12, and MLSAGs are rejected from v13.
2020-07-20wallet2_api: implement runtime proxy configurationxiphon5-9/+25
2020-07-19Merge pull request #6512Alexander Blair21-21/+21
5ef0607da Update copyright year to 2020 (SomaticFanatic)
2020-05-13simplewallet: don't complain about incoming payment ids on changemoneromooo-monero1-1/+1
2020-05-06Update copyright year to 2020SomaticFanatic21-21/+21
Update copyright year to 2020
2020-05-01Merge pull request #6446luigi11112-4/+6
e509ede trezor: adapt to new passphrase mechanism (ph4r05)
2020-04-27trezor: adapt to new passphrase mechanismDusan Klinec2-4/+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-21Merge pull request #6415luigi11112-7/+19
09abca7 wallet_api: checkUpdate - optional version and buildtag params (xiphon)
2020-04-04Merge pull request #6334luigi11115-6/+14
cc18926 wallet2_api: wallet recovery - seed offset passphrase support (xiphon)
2020-04-02wallet_api: checkUpdate - optional version and buildtag paramsxiphon2-7/+19
2020-03-31Merge pull request #6302luigi11113-0/+30
dab604e wallet2_api: implement estimateTransactionFee (xiphon)
2020-02-11wallet2_api: wallet recovery - seed offset passphrase supportxiphon5-6/+14
2020-01-26wallet: do not split integrated addresses in address book apimoneromooo-monero1-40/+10
2020-01-25wallet2_api: implement estimateTransactionFeexiphon3-0/+30
2019-09-30Merge pull request #5894luigi11111-0/+4
c89f7ef wallet2_api: fix load unsigned tx from file error propagation (xiphon)
2019-09-09wallet2_api: add missing parameterselsta2-4/+4
2019-09-09wallet2_api: fix load unsigned tx from file error propagationxiphon1-0/+4
2019-08-21Merge pull request #5750luigi11111-1/+1
884df82 wallet: provide original address for outgoing transfers (xiphon)
2019-08-17Merge pull request #5518luigi11113-48/+79
def703a wallet_api: add multi destination tx support (selsta)
2019-08-16wallet_api: add multi destination tx supportselsta3-48/+79
2019-08-15Merge pull request #5673luigi11111-8/+17
097cca5 wallet_api: catch getTxKey exception (ph4r05)
2019-07-28Fixed error preventing build of monero-guiNejcraft1-1/+3
get_attribute expects 2 values instead of 1
2019-07-24Merge pull request #5594luigi11113-0/+21
f074b6b device: show address on device display (ph4r05)
2019-07-24Merge pull request #5576luigi11112-4/+0
577324a wallet_manager: omit redundant disconnect, drop unused variable (xiphon)
2019-07-24Merge pull request #5534luigi11113-0/+28
4c66614 expose set/get walletcache attribute functionality in wallet api (selsta)
2019-07-10wallet: provide original address for outgoing transfersxiphon1-1/+1
2019-06-19wallet_api: catch getTxKey exceptionDusan Klinec1-8/+17
- getTxKey method throws an exception, e.g., when user declines txKey export
2019-06-17device: show address on device displayDusan Klinec3-0/+21
- 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-05-27wallet_manager: omit redundant disconnect, drop unused variablexiphon2-4/+0
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-10expose set/get walletcache attribute functionality in wallet apidsc3-0/+28
2019-04-07device/trezor: add button pressed requestDusan Klinec2-0/+12
2019-04-05wallet: API changes to enable passphrase entryDusan Klinec4-10/+37
2019-04-02api/wallet: fix some wrong namespacestoffu1-2/+2
2019-03-25Added socks proxy (tor/i2pd/kovri) support to walletLee Clagett1-2/+1
2019-03-21Merge pull request #5270Riccardo Spagni1-1/+3
5ade7281 Wallet API: multisig_tx_set passing bug fixed (naughtyfox)
2019-03-21Merge pull request #5211Riccardo Spagni5-1/+149
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 Klinec5-1/+149
- 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-12Wallet API: multisig_tx_set passing bug fixednaughtyfox1-1/+3
2019-03-05Update 2019 copyrightbinaryFate21-21/+21
2019-03-04various: remove unused variablesmoneromooo-monero1-1/+0
2019-02-02epee: add SSL supportmoneromooo-monero1-2/+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-01-28Merge pull request #5074Riccardo Spagni1-1/+1
b8c5f550 wallet api: don't truncate address in subaddress_account (selsta)
2019-01-18core, wallet: remember original text version of destination addressmoneromooo-monero1-0/+2
2019-01-16Merge pull request #5034Riccardo Spagni4-0/+15
13785ec9 wallet api/device: set estimated restore height if none is provided (selsta)
2019-01-15wallet api: don't truncate address in subaddress_accountselsta1-1/+1
Same behaviour as subaddress.cpp now.
2019-01-07wallet_api: fix usage of LOG_ERRORmoneromooo-monero1-10/+10
2019-01-02wallet api/device: set estimated restore height if none is providedselsta4-0/+15
2018-11-07api/wallet: fix compile errors made in #4720stoffu1-3/+3
2018-10-26Merge pull request #4615Riccardo Spagni3-2/+38
a7960542 WalletAPI: rescanBlockchain, rescanBlockchainAsync (mmitkevich)
2018-10-18Rename "blackball" for claritymoneromooo-monero1-3/+3
Apparently some people seem to think it's a censorship list...
2018-10-16wallet2_api: fix generating new wallet in the GUImoneromooo-monero1-1/+1
It was creating a new wallet without a password first (this should be fixed), then not changing the password correctly
2018-10-16WalletAPI: rescanBlockchain, rescanBlockchainAsyncmmitkevich3-2/+38
2018-10-07Merge pull request #4036Riccardo Spagni3-0/+21
9acf42d3 Multisig M/N functionality core tests added (naughtyfox) 9f3963e8 Arbitrary M/N multisig schemes: * 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 (naughtyfox)
2018-10-04wallet2_api: fix build with C++14moneromooo-monero1-7/+14
2018-10-01Arbitrary M/N multisig schemes:naughtyfox3-0/+21
* 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-09-30wallet2_api: blackball/unblackball now take two parametersmoneromooo-monero3-2/+28
amount and offset (instead of pubkey)
2018-09-29Merge pull request #4458Riccardo Spagni1-2/+2
921b0fb1 use default create_address_file argument (m2049r)
2018-09-29Merge pull request #4417Riccardo Spagni2-22/+16
a21da905 Wallet: use unique_ptr for WalletImpl members (oneiric)
2018-09-29Merge pull request #4409Riccardo Spagni1-1/+5
7a056f44 WalletAPI: multisigSignData bug fixed (naughtyfox)
2018-09-22wallet2_api: fix for latest code changesmoneromooo-monero3-3/+3
2018-09-19query backing devicem2049r5-0/+37
2018-09-18Merge pull request #4387Riccardo Spagni3-18/+38
6e6ffc06 wallet2_api: bring up to latest wallet api (moneromooo-monero)
2018-09-18Merge pull request #4361Riccardo Spagni3-0/+20
26971d46 WalletAPI: 'hasMultisigPartialKeyImages' function added (naughtyfox)
2018-09-17api/wallet: properly disable key encryptionstoffu1-2/+2
2018-09-16wallet2_api: bring up to latest wallet apimoneromooo-monero3-18/+38
2018-09-14remove obsolete daemon selection of fake outs and old tx constructionmoneromooo-monero1-4/+4
2018-09-11v8: per byte fee, pad bulletproofs, fixed 11 ring sizemoneromooo-monero1-0/+1
2018-09-10WalletAPI: 'hasMultisigPartialKeyImages' function addednaughtyfox3-0/+20
2018-08-23wallet: store trusted-daemon flag in wallet2stoffu2-7/+5
2018-08-16store secret keys encrypted where possiblemoneromooo-monero1-1/+2
The secret spend key is kept encrypted in memory, and decrypted on the fly when needed. Both spend and view secret keys are kept encrypted in a JSON field in the keys file. This avoids leaving the keys in memory due to being manipulated by the JSON I/O API.
2018-08-16wallet: wipe seed from memory where appropriatemoneromooo-monero1-2/+2
2018-08-16wallet2: make --restricted-rpc available for wallet RPC onlystoffu3-8/+8
2018-08-15Merge pull request #4136luigi11111-0/+3
4307489 wallet: disable core dumps on startup in release mode (moneromooo-monero)
2018-08-12wallet: disable core dumps on startup in release modemoneromooo-monero1-0/+3
2018-08-08wallet: allow adjusting number of rounds for the key derivation functionstoffu5-27/+41
2018-07-03wallet2: unlock keys file before calling verify_password (needed for Windows)stoffu3-0/+27
Also added notes to WalletManager::verifyWalletPassword (which afaik seems unused by anyone at the moment) regarding the need to unlock the keys file beforehand.
2018-06-28api/wallet: add missing arg to wallet2::refresh()stoffu1-1/+1
2018-06-27Merge pull request #4000luigi11117-165/+164
4510f41 Wallet API: add some missing override keyword (stoffu)
2018-06-28Wallet API: add some missing override keywordstoffu7-165/+164
Also remove dust() from UnsignedTransactionImpl (already in PendingTransactionImpl)
2018-06-28wallet: prevent the same wallet file from being opened by multiple processesstoffu1-0/+1
2018-06-21Wallet API: add support for wallet creation from hardware devicestoffu5-1/+95
2018-06-19Merge pull request #3829luigi11111-20/+34
4764929 use deterministic viewkey if not supplied (cryptochangements34)
2018-06-16Merge pull request #3735luigi11111-1/+1
4812c06 add .load() to make Boost 1.67 happy with its new is_integral check (Teutone)
2018-06-08Merge pull request #3599luigi11113-0/+17
8787fd8 WalletApi: publicMultisigSignerKey method (naughtyfox)
2018-06-08Merge pull request #3598luigi11113-0/+61
b21bc00 Wallet: added methods to sign and verify arbitrary message with multisig public signer's key (libwallet & wallet api) (naughtyfox)
2018-06-05use deterministic viewkey if not suppliedcryptochangements341-20/+34
2018-05-31Merge pull request #3489luigi11115-254/+475
47fdb74 WalletApi: getMultisigInfo entry for gui wallets... (naughtyfox) 47fdb74 Refactored: work with wallet api statuses to make setting and getting operations atomic along with error strings (naughtyfox)
2018-05-31wallet: fix shared ring db pathstoffu1-2/+6
2018-05-05add .load() to make Boost 1.67 happy with its new is_integral checkTeutone1-1/+1
2018-05-04Wallet API: allow log path to be non-default & console output to be configurablestoffu2-3/+4
2018-04-25Wallet: added methods to sign and verify arbitrary message with multisig ↵naughtyfox3-0/+61
public signer's key (libwallet & wallet api)
2018-04-21Merge pull request #3576Riccardo Spagni3-39/+35
f82c10dc WalletManagerImpl: reuse existing connection to daemon instead of reconnectivng every time (stoffu)
2018-04-13WalletApi: publicMultisigSignerKey methodnaughtyfox3-0/+17
2018-04-07WalletManagerImpl: reuse existing connection to daemon instead of ↵stoffu3-39/+35
reconnectivng every time
2018-03-28wallet: fix default mixin (4 -> 6)sneurlax1-1/+1
2018-03-28WalletApi: getMultisigInfo entry for gui walletsnaughtyfox5-0/+301
WalletApi: makeMultisig call introduced WalletApi: finalizeMultisig call introduced WalletApi: new calls exportMultisigImages and importMultisigImages WalletApi: method to return multisig wallet creation state WalletApi: create multisig transaction, sign multisig transaction, commit transaction and get multisig data are added WalletApi: identation and style fixes
2018-03-28Refactored: work with wallet api statuses to make setting and getting ↵naughtyfox3-255/+175
operations atomic along with error strings WalletApi: added method statusWithErrorString to atomically retrieve error with error string
2018-03-16wallet: more user friendly print_ringmoneromooo-monero3-0/+28
It can now take a txid (to display rings for all its inputs), and will print rings in a format that set_ring understands
2018-03-16wallet2_api: add key reuse mitigations APImoneromooo-monero3-0/+27
2018-03-16wallet2_api: add ring apimoneromooo-monero3-0/+46
2018-03-16wallet2_api: add blackball apimoneromooo-monero4-0/+65
2018-03-14device: untangle cyclic depenencystoffu1-1/+0
When #3303 was merged, a cyclic dependency chain was generated: libdevice <- libcncrypto <- libringct <- libdevice This was because libdevice needs access to a set of basic crypto operations implemented in libringct such as scalarmultBase(), while libringct also needs access to abstracted crypto operations implemented in libdevice such as ecdhEncode(). To untangle this cyclic dependency chain, this patch splits libringct into libringct_basic and libringct, where the basic crypto ops previously in libringct are moved into libringct_basic. The cyclic dependency is now resolved thanks to this separation: libcncrypto <- libringct_basic <- libdevice <- libcryptonote_basic <- libringct This eliminates the need for crypto_device.cpp and rctOps_device.cpp. Also, many abstracted interfaces of hw::device such as encrypt_payment_id() and get_subaddress_secret_key() were previously implemented in libcryptonote_basic (cryptonote_format_utils.cpp) and were then called from hw::core::device_default, which is odd because libdevice is supposed to be independent of libcryptonote_basic. Therefore, those functions were moved to device_default.cpp.
2018-03-14Merge pull request #3360Riccardo Spagni1-3/+3
1ff35fda Wallet API: make nettype non-defaulted to disambiguate from deprecated versions (and make libwallet_api_tests compilable) (stoffu)
2018-03-14Merge pull request #3345Riccardo Spagni2-3/+18
e0cda74a wallet2_api: add info/error/warning entry points (moneromooo-monero)
2018-03-08Merge pull request #3365Riccardo Spagni1-1/+1
55a65f32 Wallet API: corrected testnet/mainnet ordering (stoffu)
2018-03-08Merge pull request #3347Riccardo Spagni1-1/+1
9a6be3da wallet_manager: fixed typo deviuce/device.hpp (stoffu)
2018-03-07Wallet API: corrected testnet/mainnet orderingstoffu1-1/+1
2018-03-06Wallet API: make nettype non-defaulted to disambiguate from deprecated ↵stoffu1-3/+3
versions (and make libwallet_api_tests compilable)
2018-03-05Merge pull request #3313Riccardo Spagni1-0/+10
43026822 Wallet2 + CLI wallet: UTF-8 support for filenames and paths under Windows (rbrunner7)
2018-03-05Merge pull request #3314Riccardo Spagni1-0/+4
71bff546 wallet api: when restoring from EnglishOld, set language to English (stoffu)
2018-03-05Merge pull request #3277Riccardo Spagni8-58/+119
0e7ad2e2 Wallet API: generalize 'bool testnet' to 'NetworkType nettype' (stoffu) af773211 Stagenet (stoffu) cc9a0bee command_line: allow args to depend on more than one args (stoffu) 55f8d917 command_line::get_arg: remove 'required' for dependent args as they're always optional (stoffu) 450306a0 command line: allow has_arg to handle arg_descriptor<bool,false,true> #3318 (stoffu) 9f9e095a Use `genesis_tx` parameter in `generate_genesis_block`. #3261 (Jean Pierre Dudey)
2018-03-05Correct spelling mistakes.Edward Betts2-3/+3
2018-03-05Wallet API: generalize 'bool testnet' to 'NetworkType nettype'stoffu5-42/+103
2018-03-05wallet_manager: fixed typo deviuce/device.hppstoffu1-1/+1
2018-03-05Stagenetstoffu5-21/+21
2018-03-04wallet2_api: add info/error/warning entry pointsmoneromooo-monero2-3/+18
2018-03-04Code modifications to integrate Ledger HW device into monero-wallet-cli.cslashm1-2/+2
The basic approach it to delegate all sensitive data (master key, secret ephemeral key, key derivation, ....) and related operations to the device. As device has low memory, it does not keep itself the values (except for view/spend keys) but once computed there are encrypted (with AES are equivalent) and return back to monero-wallet-cli. When they need to be manipulated by the device, they are decrypted on receive. Moreover, using the client for storing the value in encrypted form limits the modification in the client code. Those values are transfered from one C-structure to another one as previously. The code modification has been done with the wishes to be open to any other hardware wallet. To achieve that a C++ class hw::Device has been introduced. Two initial implementations are provided: the "default", which remaps all calls to initial Monero code, and the "Ledger", which delegates all calls to Ledger device.
2018-02-25wallet api: when restoring from EnglishOld, set language to Englishstoffu1-0/+4
2018-02-25Wallet2 + CLI wallet: UTF-8 support for filenames and paths under Windowsrbrunner71-0/+10
2018-02-16Merge pull request #3214Riccardo Spagni1-0/+1
214d251c wallet: suggest the use of sweep_unmixable when not_enough_outs_to_mix is thrown (stoffu)
2018-02-16Merge pull request #3094Riccardo Spagni2-3/+3
a85dbb3f Fixed typos and wording tweaks (Maxithi)
2018-02-08wallet: suggest the use of sweep_unmixable when not_enough_outs_to_mix is thrownstoffu1-0/+1
2018-01-29Fixed typos and wording tweaksMaxithi2-3/+3
2018-01-28wallet: automatically use low priority if safe (no backlog & recent blocks ↵stoffu2-2/+5
not full)
2018-01-27Merge pull request #3142Riccardo Spagni1-7/+0
a9cae0ab Wallet API: remove unused enum Priority from UnsignedTransaction (stoffu)
2018-01-27Merge pull request #3121Riccardo Spagni1-1/+1
6fbb0b06 cmake: set API header install path to what Qt wallet expects (redfish)
2018-01-27Merge pull request #3104Riccardo Spagni5-12/+110
939629e8 Wallet API: all recover options with password (m2049r)
2018-01-26Readd copyright starting datexmr-eric4-4/+4
2018-01-26Update 2018 copyrightxmr-eric21-21/+21
2018-01-26Wallet API: remove unused enum Priority from UnsignedTransactionstoffu1-7/+0
2018-01-25Merge pull request #3038Riccardo Spagni1-0/+2
eb39a3d7 wallet_api: make this optional but not built by default (moneromooo-monero)
2018-01-17Wallet API: all recover options with passwordm2049r5-12/+110
also renamed memo => mnemonic in api method parms
2018-01-14cmake: set API header install path to what Qt wallet expectsredfish1-1/+1
2018-01-10Reserve proofstoffu3-0/+57
2017-12-31wallet_api: make this optional but not built by defaultmoneromooo-monero1-0/+2
It means it can still be built with make -C build/debug wallet_api but still not DoS us while debugging
2017-12-26wallet-api: added Utils::onStartupstoffu2-0/+6
2017-12-18check accessing an element past the end of a containermoneromooo-monero1-0/+4
2017-12-17Add N/N multisig tx generation and signingmoneromooo-monero3-5/+5
Scheme by luigi1111: Multisig for RingCT on Monero 2 of 2 User A (coordinator): Spendkey b,B Viewkey a,A (shared) User B: Spendkey c,C Viewkey a,A (shared) Public Address: C+B, A Both have their own watch only wallet via C+B, a A will coordinate spending process (though B could easily as well, coordinator is more needed for more participants) A and B watch for incoming outputs B creates "half" key images for discovered output D: I2_D = (Hs(aR)+c) * Hp(D) B also creates 1.5 random keypairs (one scalar and 2 pubkeys; one on base G and one on base Hp(D)) for each output, storing the scalar(k) (linked to D), and sending the pubkeys with I2_D. A also creates "half" key images: I1_D = (Hs(aR)+b) * Hp(D) Then I_D = I1_D + I2_D Having I_D allows A to check spent status of course, but more importantly allows A to actually build a transaction prefix (and thus transaction). A builds the transaction until most of the way through MLSAG_Gen, adding the 2 pubkeys (per input) provided with I2_D to his own generated ones where they are needed (secret row L, R). At this point, A has a mostly completed transaction (but with an invalid/incomplete signature). A sends over the tx and includes r, which allows B (with the recipient's address) to verify the destination and amount (by reconstructing the stealth address and decoding ecdhInfo). B then finishes the signature by computing ss[secret_index][0] = ss[secret_index][0] + k - cc[secret_index]*c (secret indices need to be passed as well). B can then broadcast the tx, or send it back to A for broadcasting. Once B has completed the signing (and verified the tx to be valid), he can add the full I_D to his cache, allowing him to verify spent status as well. NOTE: A and B *must* present key A and B to each other with a valid signature proving they know a and b respectively. Otherwise, trickery like the following becomes possible: A creates viewkey a,A, spendkey b,B, and sends a,A,B to B. B creates a fake key C = zG - B. B sends C back to A. The combined spendkey C+B then equals zG, allowing B to spend funds at any time! The signature fixes this, because B does not know a c corresponding to C (and thus can't produce a signature). 2 of 3 User A (coordinator) Shared viewkey a,A "spendkey" j,J User B "spendkey" k,K User C "spendkey" m,M A collects K and M from B and C B collects J and M from A and C C collects J and K from A and B A computes N = nG, n = Hs(jK) A computes O = oG, o = Hs(jM) B anc C compute P = pG, p = Hs(kM) || Hs(mK) B and C can also compute N and O respectively if they wish to be able to coordinate Address: N+O+P, A The rest follows as above. The coordinator possesses 2 of 3 needed keys; he can get the other needed part of the signature/key images from either of the other two. Alternatively, if secure communication exists between parties: A gives j to B B gives k to C C gives m to A Address: J+K+M, A 3 of 3 Identical to 2 of 2, except the coordinator must collect the key images from both of the others. The transaction must also be passed an additional hop: A -> B -> C (or A -> C -> B), who can then broadcast it or send it back to A. N-1 of N Generally the same as 2 of 3, except participants need to be arranged in a ring to pass their keys around (using either the secure or insecure method). For example (ignoring viewkey so letters line up): [4 of 5] User: spendkey A: a B: b C: c D: d E: e a -> B, b -> C, c -> D, d -> E, e -> A Order of signing does not matter, it just must reach n-1 users. A "remaining keys" list must be passed around with the transaction so the signers know if they should use 1 or both keys. Collecting key image parts becomes a little messy, but basically every wallet sends over both of their parts with a tag for each. Thia way the coordinating wallet can keep track of which images have been added and which wallet they come from. Reasoning: 1. The key images must be added only once (coordinator will get key images for key a from both A and B, he must add only one to get the proper key actual key image) 2. The coordinator must keep track of which helper pubkeys came from which wallet (discussed in 2 of 2 section). The coordinator must choose only one set to use, then include his choice in the "remaining keys" list so the other wallets know which of their keys to use. You can generalize it further to N-2 of N or even M of N, but I'm not sure there's legitimate demand to justify the complexity. It might also be straightforward enough to support with minimal changes from N-1 format. You basically just give each user additional keys for each additional "-1" you desire. N-2 would be 3 keys per user, N-3 4 keys, etc. The process is somewhat cumbersome: To create a N/N multisig wallet: - each participant creates a normal wallet - each participant runs "prepare_multisig", and sends the resulting string to every other participant - each participant runs "make_multisig N A B C D...", with N being the threshold and A B C D... being the strings received from other participants (the threshold must currently equal N) As txes are received, participants' wallets will need to synchronize so that those new outputs may be spent: - each participant runs "export_multisig FILENAME", and sends the FILENAME file to every other participant - each participant runs "import_multisig A B C D...", with A B C D... being the filenames received from other participants Then, a transaction may be initiated: - one of the participants runs "transfer ADDRESS AMOUNT" - this partly signed transaction will be written to the "multisig_monero_tx" file - the initiator sends this file to another participant - that other participant runs "sign_multisig multisig_monero_tx" - the resulting transaction is written to the "multisig_monero_tx" file again - if the threshold was not reached, the file must be sent to another participant, until enough have signed - the last participant to sign runs "submit_multisig multisig_monero_tx" to relay the transaction to the Monero network
2017-11-25Merge pull request #2824Riccardo Spagni11-9/+989
51895fd7 split wallet and wallet_api (moneromooo-monero)
2017-11-25Merge pull request #2368Riccardo Spagni2-0/+48
b0b7e0f0 Spend proof without txkey (stoffu)
2017-11-21Spend proof without txkeystoffu2-0/+48
2017-11-21fix for tx proof: use exception instead of error_str when signature gen failedstoffu2-3/+3
2017-11-18Tx proof (revised):stoffu4-158/+135
- refactoring: proof generation/checking code was moved from simplewallet.cpp to wallet2.cpp - allow an arbitrary message to be signed together with txid - introduce two types (outbound & inbound) of tx proofs; with the same syntax, inbound is selected when <address> belongs to this wallet, outbound otherwise. see GitHub thread for more discussion - wallet RPC: added get_tx_key, check_tx_key, get_tx_proof, check_tx_proof - wallet API: moved WalletManagerImpl::checkPayment to Wallet::checkTxKey, added Wallet::getTxProof/checkTxProof - get_tx_key/check_tx_key: handle additional tx keys by concatenating them into a single string
2017-11-16split wallet and wallet_apimoneromooo-monero11-9/+997
This speeds up building a lot when wallet2.h (or something it includes) changes, since all the API includes wallet2.h
2017-11-14Merge pull request #2701Riccardo Spagni1-1/+3
867b67c4 Wallet API: override update subdir when built from src (Jaquee)
2017-11-06track double spending in the txpoolmoneromooo-monero1-3/+3
Transactions in the txpool are marked when another transaction is seen double spending one or more of its inputs. This is then exposed wherever appropriate. Note that being marked with this "double spend seen" flag does NOT mean this transaction IS a double spend and will never be mined: it just means that the network has seen at least another transaction spending at least one of the same inputs, so care should be taken to wait for a few confirmations before acting upon that transaction (ie, mostly of use for merchants wanting to accept unconfirmed transactions).
2017-11-06Merge pull request #2546Riccardo Spagni1-2/+20
b2d416f2 Distinguish "not enough money" and "not enough unlocked money" (binaryFate)
2017-10-29Wallet API: override update subdir when built from srcJaquee1-1/+3
2017-10-22Wallet API: default values for account and subaddr indexJaquee2-8/+7
2017-10-16Distinguish "not enough money" and "not enough unlocked money"binaryFate1-2/+20
Fix #1530
2017-10-15wallet2+API: use separate callbacks for lightwalletsJaquee1-0/+32
2017-10-15walletAPI: correct confirmations in txHistory for unsynced walletsJaquee1-2/+2
2017-10-15walletAPI: lightwallet exceptionsJaquee1-2/+12
2017-10-15walletAPI: add lightwallet login() and importWalletRequest()Jaquee2-0/+34
2017-10-15walletAPI: init() lightwallet and SSL supportJaquee2-6/+8
2017-10-15walletAPI: add tx unlock_timeJaquee1-4/+0
2017-10-07Subaddresseskenshi8414-100/+552
2017-09-25move checkpoints in a separate librarymoneromooo-monero2-6/+6
2017-09-25wallet2_api: check whether dynamic_cast returns NULLmoneromooo-monero1-0/+2
CID 161844
2017-09-25wallet2_api: remove an unused, uninitialized, fieldmoneromooo-monero1-1/+0
Silences CID 161874
2017-09-25wallet2_api: init error code to "no error" in the ctormoneromooo-monero1-1/+1
CID 161872
2017-09-23store is optional during close and defaults to true; except during descructionm2049r4-13/+15
2017-08-21WalletAPI: only allow trusted daemon when importing key imagesJaquee1-0/+5
2017-08-21WalletAPI: copy wallet data when creating a view only walletJaquee1-0/+27
2017-08-15Merge pull request #2270Riccardo Spagni2-0/+7
1307e3cc WalletAPI: add getDefaultDataDir() (Jaquee)
2017-08-15Merge pull request #2238Riccardo Spagni2-0/+5
ad4649ac Enable verifying wallet password with having to load wallet. (m2049r)
2017-08-09WalletAPI: add getDefaultDataDir()Jaquee2-0/+7
2017-08-07Merge pull request #2247Riccardo Spagni3-0/+9
a839a6fa Wallet API: add tx unlock time (Jaquee)
2017-08-07change mixin to ring size in user visible placesmoneromooo-monero2-9/+9
2017-08-07Merge pull request #2254Riccardo Spagni2-0/+3
e31aac80 walletAPI: add getRefreshFromBlockHeight() (Jaquee) 48c0cb1b wallet api: pause refresh while commiting tx (Jaquee) f233c01c CMakeLists.txt - ios/xcode fix (Jaquee)
2017-08-05walletAPI: add getRefreshFromBlockHeight()Jaquee1-0/+1
2017-08-05wallet api: pause refresh while commiting txJaquee1-0/+2
2017-08-03Wallet API: add tx unlock timeJaquee3-0/+9
2017-08-03Enable verifying wallet password with having to load wallet.m2049r2-0/+5
2017-08-02fix wallet callback signaturesm2049r1-4/+4
2017-06-13wallet_api: fix missing transaction parameter in callbackmoneromooo-monero1-1/+1
It was unused, so harmless Reported by erikd on IRC
2017-05-23Wallet API: Set seed lang when recovering form keysJaquee1-1/+2
2017-05-05Merge pull request #2012Riccardo Spagni2-2/+20
bbf4c210 Wallet API: add spend/view key getters (Jaquee)
2017-05-02Wallet API: add spend/view key gettersJaquee2-2/+20
2017-04-24wallet: add sweep_below functionmoneromooo-monero1-1/+1
It sweeps all outputs below the given threshold This is available via the existing sweep_all RPC, by setting amount_threshold the desired amount (in atomic units)
2017-04-02Wallet API: fix Cold signing split txJaquee1-4/+10
2017-03-24Wallet API: add hard fork info functionsJaquee4-22/+14
2017-03-21wallet: fix set_log not handling 0,xxx style settingsmoneromooo-monero1-1/+1
2017-03-18use const references in catch blocksmoneromooo-monero2-2/+2
2017-03-03wallet api: fix parameters in wallet2callbackImplJaquee1-7/+7
2017-03-03Merge pull request #1827Riccardo Spagni2-2/+4
db1c7d80 wallet api: add missing mining options (Jaquee)
2017-03-02wallet api: add missing mining optionsJaquee2-2/+4
2017-02-25Wallet API: Add support for daemon rpc loginJaquee2-3/+6