Electroneum
wallet2_api.h
Go to the documentation of this file.
1 // Copyright (c) 2014-2019, The Monero Project
2 //
3 // All rights reserved.
4 //
5 // Redistribution and use in source and binary forms, with or without modification, are
6 // permitted provided that the following conditions are met:
7 //
8 // 1. Redistributions of source code must retain the above copyright notice, this list of
9 // conditions and the following disclaimer.
10 //
11 // 2. Redistributions in binary form must reproduce the above copyright notice, this list
12 // of conditions and the following disclaimer in the documentation and/or other
13 // materials provided with the distribution.
14 //
15 // 3. Neither the name of the copyright holder nor the names of its contributors may be
16 // used to endorse or promote products derived from this software without specific
17 // prior written permission.
18 //
19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
20 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
21 // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
22 // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25 // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26 // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
27 // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 //
29 // Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers
30 
31 #pragma once
32 
33 
34 #include <string>
35 #include <vector>
36 #include <list>
37 #include <set>
38 #include <ctime>
39 #include <iostream>
40 #include <stdexcept>
41 
42 // Public interface for libwallet library
43 namespace Electroneum {
44 
45 enum NetworkType : uint8_t {
46  MAINNET = 0,
48  STAGENET
49 };
50 
51  namespace Utils {
52  bool isAddressLocal(const std::string &hostaddr);
53  void onStartup();
54  }
55 
56  template<typename T>
57  class optional {
58  public:
60  optional(const T &t): t(t), set(true) {}
61  const T &operator*() const { return t; }
62  T &operator*() { return t; }
63  operator bool() const { return set; }
64  private:
65  T t;
66  bool set;
67  };
68 
73 {
74  enum Status {
78  };
79 
80  enum Priority {
86  };
87 
88  virtual ~PendingTransaction() = 0;
89  virtual int status() const = 0;
90  virtual std::string errorString() const = 0;
91  // commit transaction or save to file if filename is provided.
92  virtual bool commit(const std::string &filename = "", bool overwrite = false) = 0;
93  virtual uint64_t amount() const = 0;
94  virtual uint64_t dust() const = 0;
95  virtual uint64_t fee() const = 0;
96  virtual std::vector<std::string> txid() const = 0;
101  virtual uint64_t txCount() const = 0;
102  virtual std::vector<uint32_t> subaddrAccount() const = 0;
103  virtual std::vector<std::set<uint32_t>> subaddrIndices() const = 0;
104 
121  virtual std::string multisigSignData() = 0;
122  virtual void signMultisigTx() = 0;
127  virtual std::vector<std::string> signersKeys() const = 0;
128 };
129 
134 {
135  enum Status {
139  };
140 
141  virtual ~UnsignedTransaction() = 0;
142  virtual int status() const = 0;
143  virtual std::string errorString() const = 0;
144  virtual std::vector<uint64_t> amount() const = 0;
145  virtual std::vector<uint64_t> fee() const = 0;
146  virtual std::vector<uint64_t> mixin() const = 0;
147  // returns a string with information about all transactions.
148  virtual std::string confirmationMessage() const = 0;
149  virtual std::vector<std::string> paymentId() const = 0;
150  virtual std::vector<std::string> recipientAddress() const = 0;
151  virtual uint64_t minMixinCount() const = 0;
156  virtual uint64_t txCount() const = 0;
162  virtual bool sign(const std::string &signedFileName) = 0;
163 };
164 
169 {
170  enum Direction {
173  };
174 
175  struct Transfer {
176  Transfer(uint64_t _amount, const std::string &address);
177  const uint64_t amount;
178  const std::string address;
179  };
180 
181  virtual ~TransactionInfo() = 0;
182  virtual int direction() const = 0;
183  virtual bool isPending() const = 0;
184  virtual bool isFailed() const = 0;
185  virtual uint64_t amount() const = 0;
186  virtual uint64_t fee() const = 0;
187  virtual uint64_t blockHeight() const = 0;
188  virtual std::set<uint32_t> subaddrIndex() const = 0;
189  virtual uint32_t subaddrAccount() const = 0;
190  virtual std::string label() const = 0;
191  virtual uint64_t confirmations() const = 0;
192  virtual uint64_t unlockTime() const = 0;
194  virtual std::string hash() const = 0;
195  virtual std::time_t timestamp() const = 0;
196  virtual std::string paymentId() const = 0;
198  virtual const std::vector<Transfer> & transfers() const = 0;
199 };
204 {
205  virtual ~TransactionHistory() = 0;
206  virtual int count() const = 0;
207  virtual TransactionInfo * transaction(int index) const = 0;
208  virtual TransactionInfo * transaction(const std::string &id) const = 0;
209  virtual std::vector<TransactionInfo*> getAll() const = 0;
210  virtual void refresh() = 0;
211 };
212 
217 public:
218  AddressBookRow(std::size_t _rowId, const std::string &_address, const std::string &_paymentId, const std::string &_description):
219  m_rowId(_rowId),
220  m_address(_address),
221  m_paymentId(_paymentId),
222  m_description(_description) {}
223 
224 private:
225  std::size_t m_rowId;
226  std::string m_address;
227  std::string m_paymentId;
228  std::string m_description;
229 public:
230  std::string extra;
231  std::string getAddress() const {return m_address;}
232  std::string getDescription() const {return m_description;}
233  std::string getPaymentId() const {return m_paymentId;}
234  std::size_t getRowId() const {return m_rowId;}
235 };
236 
242 {
243  enum ErrorCode {
248  };
249  virtual ~AddressBook() = 0;
250  virtual std::vector<AddressBookRow*> getAll() const = 0;
251  virtual bool addRow(const std::string &dst_addr , const std::string &payment_id, const std::string &description) = 0;
252  virtual bool deleteRow(std::size_t rowId) = 0;
253  virtual void refresh() = 0;
254  virtual std::string errorString() const = 0;
255  virtual int errorCode() const = 0;
256  virtual int lookupPaymentID(const std::string &payment_id) const = 0;
257 };
258 
260 public:
261  SubaddressRow(std::size_t _rowId, const std::string &_address, const std::string &_label):
262  m_rowId(_rowId),
263  m_address(_address),
264  m_label(_label) {}
265 
266 private:
267  std::size_t m_rowId;
268  std::string m_address;
269  std::string m_label;
270 public:
271  std::string extra;
272  std::string getAddress() const {return m_address;}
273  std::string getLabel() const {return m_label;}
274  std::size_t getRowId() const {return m_rowId;}
275 };
276 
278 {
279  virtual ~Subaddress() = 0;
280  virtual std::vector<SubaddressRow*> getAll() const = 0;
281  virtual void addRow(uint32_t accountIndex, const std::string &label) = 0;
282  virtual void setLabel(uint32_t accountIndex, uint32_t addressIndex, const std::string &label) = 0;
283  virtual void refresh(uint32_t accountIndex) = 0;
284 };
285 
287 public:
288  SubaddressAccountRow(std::size_t _rowId, const std::string &_address, const std::string &_label, const std::string &_balance, const std::string &_unlockedBalance):
289  m_rowId(_rowId),
290  m_address(_address),
291  m_label(_label),
292  m_balance(_balance),
293  m_unlockedBalance(_unlockedBalance) {}
294 
295 private:
296  std::size_t m_rowId;
297  std::string m_address;
298  std::string m_label;
299  std::string m_balance;
300  std::string m_unlockedBalance;
301 public:
302  std::string extra;
303  std::string getAddress() const {return m_address;}
304  std::string getLabel() const {return m_label;}
305  std::string getBalance() const {return m_balance;}
306  std::string getUnlockedBalance() const {return m_unlockedBalance;}
307  std::size_t getRowId() const {return m_rowId;}
308 };
309 
311 {
312  virtual ~SubaddressAccount() = 0;
313  virtual std::vector<SubaddressAccountRow*> getAll() const = 0;
314  virtual void addRow(const std::string &label) = 0;
315  virtual void setLabel(uint32_t accountIndex, const std::string &label) = 0;
316  virtual void refresh() = 0;
317 };
318 
321 
323  bool isReady;
324  uint32_t threshold;
325  uint32_t total;
326 };
327 
328 
332 
333  virtual double progress() const { return m_progress; }
334  virtual bool indeterminate() const { return m_indeterminate; }
335 
336 protected:
337  double m_progress;
339 };
340 
341 struct Wallet;
343 {
344  virtual ~WalletListener() = 0;
350  virtual void moneySpent(const std::string &txId, uint64_t amount) = 0;
351 
357  virtual void moneyReceived(const std::string &txId, uint64_t amount) = 0;
358 
364  virtual void unconfirmedMoneyReceived(const std::string &txId, uint64_t amount) = 0;
365 
370  virtual void newBlock(uint64_t height) = 0;
371 
375  virtual void updated() = 0;
376 
377 
381  virtual void refreshed() = 0;
382 
386  virtual void onDeviceButtonRequest(uint64_t code) { (void)code; }
387 
391  virtual void onDeviceButtonPressed() { }
392 
397  throw std::runtime_error("Not supported");
398  }
399 
404  if (!on_device) throw std::runtime_error("Not supported");
405  return optional<std::string>();
406  }
407 
411  virtual void onDeviceProgress(const DeviceProgress & event) { (void)event; };
412 
416  virtual void onSetWallet(Wallet * wallet) { (void)wallet; };
417 };
418 
419 
424 struct Wallet
425 {
426  enum Device {
429  Device_Trezor = 2
430  };
431 
432  enum Status {
436  };
437 
442  };
443 
444  virtual ~Wallet() = 0;
445  virtual std::string seed() const = 0;
446  virtual std::string getSeedLanguage() const = 0;
447  virtual void setSeedLanguage(const std::string &arg) = 0;
449  virtual int status() const = 0; //deprecated: use safe alternative statusWithErrorString
451  virtual std::string errorString() const = 0; //deprecated: use safe alternative statusWithErrorString
453  virtual void statusWithErrorString(int& status, std::string& errorString) const = 0;
454  virtual bool setPassword(const std::string &password) = 0;
455  virtual bool setDevicePin(const std::string &pin) { (void)pin; return false; };
456  virtual bool setDevicePassphrase(const std::string &passphrase) { (void)passphrase; return false; };
457  virtual std::string address(uint32_t accountIndex = 0, uint32_t addressIndex = 0) const = 0;
458  std::string mainAddress() const { return address(0, 0); }
459  virtual std::string path() const = 0;
460  virtual NetworkType nettype() const = 0;
461  bool mainnet() const { return nettype() == MAINNET; }
462  bool testnet() const { return nettype() == TESTNET; }
463  bool stagenet() const { return nettype() == STAGENET; }
465  virtual void hardForkInfo(uint8_t &version, uint64_t &earliest_height) const = 0;
467  virtual bool useForkRules(uint8_t version, int64_t early_blocks) const = 0;
477  virtual std::string integratedAddress(const std::string &payment_id) const = 0;
478 
483  virtual std::string secretViewKey() const = 0;
484 
489  virtual std::string publicViewKey() const = 0;
490 
495  virtual std::string secretSpendKey() const = 0;
496 
501  virtual std::string publicSpendKey() const = 0;
502 
507  virtual std::string publicMultisigSignerKey() const = 0;
508 
515  virtual bool store(const std::string &path) = 0;
520  virtual std::string filename() const = 0;
525  virtual std::string keysFilename() const = 0;
538  virtual bool init(const std::string &daemon_address, uint64_t upper_transaction_size_limit = 0, const std::string &daemon_username = "", const std::string &daemon_password = "", bool use_ssl = false, bool lightWallet = false) = 0;
539 
547  virtual bool createWatchOnly(const std::string &path, const std::string &password, const std::string &language) const = 0;
548 
554  virtual void setRefreshFromBlockHeight(uint64_t refresh_from_block_height) = 0;
555 
560  virtual uint64_t getRefreshFromBlockHeight() const = 0;
561 
567  virtual void setRecoveringFromSeed(bool recoveringFromSeed) = 0;
568 
574  virtual void setRecoveringFromDevice(bool recoveringFromDevice) = 0;
575 
582  virtual void setSubaddressLookahead(uint32_t major, uint32_t minor) = 0;
583 
588  virtual bool connectToDaemon() = 0;
589 
594  virtual ConnectionStatus connected() const = 0;
595  virtual void setTrustedDaemon(bool arg) = 0;
596  virtual bool trustedDaemon() const = 0;
597  virtual uint64_t balance(uint32_t accountIndex = 0) const = 0;
598  uint64_t balanceAll() const {
599  uint64_t result = 0;
600  for (uint32_t i = 0; i < numSubaddressAccounts(); ++i)
601  result += balance(i);
602  return result;
603  }
604  virtual uint64_t unlockedBalance(uint32_t accountIndex = 0) const = 0;
605  uint64_t unlockedBalanceAll() const {
606  uint64_t result = 0;
607  for (uint32_t i = 0; i < numSubaddressAccounts(); ++i)
608  result += unlockedBalance(i);
609  return result;
610  }
611 
616  virtual bool watchOnly() const = 0;
617 
622  virtual uint64_t blockChainHeight() const = 0;
623 
628  virtual uint64_t approximateBlockChainHeight() const = 0;
629 
635  virtual uint64_t estimateBlockChainHeight() const = 0;
641  virtual uint64_t daemonBlockChainHeight() const = 0;
642 
648  virtual uint64_t daemonBlockChainTargetHeight() const = 0;
649 
654  virtual bool synchronized() const = 0;
655 
656  static std::string displayAmount(uint64_t amount);
657  static uint64_t amountFromString(const std::string &amount);
658  static uint64_t amountFromDouble(double amount);
659  static std::string genPaymentId();
660  static bool paymentIdValid(const std::string &paiment_id);
661  static bool addressValid(const std::string &str, NetworkType nettype);
662  static bool addressValid(const std::string &str, bool testnet) // deprecated
663  {
664  return addressValid(str, testnet ? TESTNET : MAINNET);
665  }
666  static bool keyValid(const std::string &secret_key_string, const std::string &address_string, bool isViewKey, NetworkType nettype, std::string &error);
667  static bool keyValid(const std::string &secret_key_string, const std::string &address_string, bool isViewKey, bool testnet, std::string &error) // deprecated
668  {
669  return keyValid(secret_key_string, address_string, isViewKey, testnet ? TESTNET : MAINNET, error);
670  }
671  static std::string paymentIdFromAddress(const std::string &str, NetworkType nettype);
672  static std::string paymentIdFromAddress(const std::string &str, bool testnet) // deprecated
673  {
674  return paymentIdFromAddress(str, testnet ? TESTNET : MAINNET);
675  }
676  static uint64_t maximumAllowedAmount();
677  // Easylogger wrapper
678  static void init(const char *argv0, const char *default_log_base_name) { init(argv0, default_log_base_name, "", true); }
679  static void init(const char *argv0, const char *default_log_base_name, const std::string &log_path, bool console);
680  static void debug(const std::string &category, const std::string &str);
681  static void info(const std::string &category, const std::string &str);
682  static void warning(const std::string &category, const std::string &str);
683  static void error(const std::string &category, const std::string &str);
684 
688  virtual void startRefresh() = 0;
692  virtual void pauseRefresh() = 0;
693 
698  virtual bool refresh() = 0;
699 
703  virtual void refreshAsync() = 0;
704 
709  virtual bool rescanBlockchain() = 0;
710 
714  virtual void rescanBlockchainAsync() = 0;
715 
720  virtual void setAutoRefreshInterval(int millis) = 0;
721 
726  virtual int autoRefreshInterval() const = 0;
727 
732  virtual void addSubaddressAccount(const std::string& label) = 0;
736  virtual size_t numSubaddressAccounts() const = 0;
741  virtual size_t numSubaddresses(uint32_t accountIndex) const = 0;
747  virtual void addSubaddress(uint32_t accountIndex, const std::string& label) = 0;
753  virtual std::string getSubaddressLabel(uint32_t accountIndex, uint32_t addressIndex) const = 0;
760  virtual void setSubaddressLabel(uint32_t accountIndex, uint32_t addressIndex, const std::string &label) = 0;
761 
766  virtual MultisigState multisig() const = 0;
771  virtual std::string getMultisigInfo() const = 0;
778  virtual std::string makeMultisig(const std::vector<std::string>& info, uint32_t threshold) = 0;
784  virtual std::string exchangeMultisigKeys(const std::vector<std::string> &info) = 0;
790  virtual bool finalizeMultisig(const std::vector<std::string>& extraMultisigInfo) = 0;
796  virtual bool exportMultisigImages(std::string& images) = 0;
802  virtual size_t importMultisigImages(const std::vector<std::string>& images) = 0;
807  virtual bool hasMultisigPartialKeyImages() const = 0;
808 
814  virtual PendingTransaction* restoreMultisigTransaction(const std::string& signData) = 0;
828  virtual PendingTransaction * createTransaction(const std::string &dst_addr, const std::string &payment_id,
829  optional<uint64_t> amount, uint32_t mixin_count,
831  uint32_t subaddr_account = 0,
832  std::set<uint32_t> subaddr_indices = {}) = 0;
833 
841 
847  virtual UnsignedTransaction * loadUnsignedTx(const std::string &unsigned_filename) = 0;
848 
853  virtual bool submitTransaction(const std::string &fileName) = 0;
854 
855 
860  virtual void disposeTransaction(PendingTransaction * t) = 0;
861 
867  virtual bool exportKeyImages(const std::string &filename) = 0;
868 
874  virtual bool importKeyImages(const std::string &filename) = 0;
875 
876 
877  virtual TransactionHistory * history() = 0;
878  virtual AddressBook * addressBook() = 0;
879  virtual Subaddress * subaddress() = 0;
881  virtual void setListener(WalletListener *) = 0;
886  virtual uint32_t defaultMixin() const = 0;
891  virtual void setDefaultMixin(uint32_t arg) = 0;
892 
899  virtual bool setUserNote(const std::string &txid, const std::string &note) = 0;
905  virtual std::string getUserNote(const std::string &txid) const = 0;
906  virtual std::string getTxKey(const std::string &txid) const = 0;
907  virtual bool checkTxKey(const std::string &txid, std::string tx_key, const std::string &address, uint64_t &received, bool &in_pool, uint64_t &confirmations) = 0;
908  virtual std::string getTxProof(const std::string &txid, const std::string &address, const std::string &message) const = 0;
909  virtual bool checkTxProof(const std::string &txid, const std::string &address, const std::string &message, const std::string &signature, bool &good, uint64_t &received, bool &in_pool, uint64_t &confirmations) = 0;
910  virtual std::string getSpendProof(const std::string &txid, const std::string &message) const = 0;
911  virtual bool checkSpendProof(const std::string &txid, const std::string &message, const std::string &signature, bool &good) const = 0;
916  virtual std::string getReserveProof(bool all, uint32_t account_index, uint64_t amount, const std::string &message) const = 0;
917  virtual bool checkReserveProof(const std::string &address, const std::string &message, const std::string &signature, bool &good, uint64_t &total, uint64_t &spent) const = 0;
918 
919  /*
920  * \brief signMessage - sign a message with the spend private key
921  * \param message - the message to sign (arbitrary byte data)
922  * \return the signature
923  */
924  virtual std::string signMessage(const std::string &message) = 0;
932  virtual bool verifySignedMessage(const std::string &message, const std::string &addres, const std::string &signature) const = 0;
933 
939  virtual std::string signMultisigParticipant(const std::string &message) const = 0;
947  virtual bool verifyMessageWithPublicKey(const std::string &message, const std::string &publicKey, const std::string &signature) const = 0;
948 
949  virtual bool parse_uri(const std::string &uri, std::string &address, std::string &payment_id, uint64_t &amount, std::string &tx_description, std::string &recipient_name, std::vector<std::string> &unknown_parameters, std::string &error) = 0;
950 
951  virtual std::string getDefaultDataDir() const = 0;
952 
953  /*
954  * \brief rescanSpent - Rescan spent outputs - Can only be used with trusted daemon
955  * \return true on success
956  */
957  virtual bool rescanSpent() = 0;
958 
960  virtual bool blackballOutputs(const std::vector<std::string> &outputs, bool add) = 0;
961 
963  virtual bool blackballOutput(const std::string &amount, const std::string &offset) = 0;
964 
966  virtual bool unblackballOutput(const std::string &amount, const std::string &offset) = 0;
967 
969  virtual bool getRing(const std::string &key_image, std::vector<uint64_t> &ring) const = 0;
970 
972  virtual bool getRings(const std::string &txid, std::vector<std::pair<std::string, std::vector<uint64_t>>> &rings) const = 0;
973 
975  virtual bool setRing(const std::string &key_image, const std::vector<uint64_t> &ring, bool relative) = 0;
976 
978  virtual void segregatePreForkOutputs(bool segregate) = 0;
979 
981  virtual void segregationHeight(uint64_t height) = 0;
982 
984  virtual void keyReuseMitigation2(bool mitigation) = 0;
985 
987  virtual bool lightWalletLogin(bool &isNewWallet) const = 0;
988 
990  virtual bool lightWalletImportWalletRequest(std::string &payment_id, uint64_t &fee, bool &new_request, bool &request_fulfilled, std::string &payment_address, std::string &status) = 0;
991 
993  virtual bool lockKeysFile() = 0;
994  virtual bool unlockKeysFile() = 0;
996  virtual bool isKeysFileLocked() = 0;
997 
1002  virtual Device getDeviceType() const = 0;
1003 
1005  virtual uint64_t coldKeyImageSync(uint64_t &spent, uint64_t &unspent) = 0;
1006 };
1007 
1012 {
1013 
1023  virtual Wallet * createWallet(const std::string &path, const std::string &password, const std::string &language, NetworkType nettype, uint64_t kdf_rounds = 1) = 0;
1024  Wallet * createWallet(const std::string &path, const std::string &password, const std::string &language, bool testnet = false) // deprecated
1025  {
1026  return createWallet(path, password, language, testnet ? TESTNET : MAINNET);
1027  }
1028 
1038  virtual Wallet * openWallet(const std::string &path, const std::string &password, NetworkType nettype, uint64_t kdf_rounds = 1, WalletListener * listener = nullptr) = 0;
1039  Wallet * openWallet(const std::string &path, const std::string &password, bool testnet = false) // deprecated
1040  {
1041  return openWallet(path, password, testnet ? TESTNET : MAINNET);
1042  }
1043 
1054  virtual Wallet * recoveryWallet(const std::string &path, const std::string &password, const std::string &mnemonic,
1055  NetworkType nettype = MAINNET, uint64_t restoreHeight = 0, uint64_t kdf_rounds = 1) = 0;
1056  Wallet * recoveryWallet(const std::string &path, const std::string &password, const std::string &mnemonic,
1057  bool testnet = false, uint64_t restoreHeight = 0) // deprecated
1058  {
1059  return recoveryWallet(path, password, mnemonic, testnet ? TESTNET : MAINNET, restoreHeight);
1060  }
1061 
1071  virtual Wallet * recoveryWallet(const std::string &path, const std::string &mnemonic, NetworkType nettype, uint64_t restoreHeight = 0) = 0;
1072  Wallet * recoveryWallet(const std::string &path, const std::string &mnemonic, bool testnet = false, uint64_t restoreHeight = 0) // deprecated
1073  {
1074  return recoveryWallet(path, mnemonic, testnet ? TESTNET : MAINNET, restoreHeight);
1075  }
1076 
1090  virtual Wallet * createWalletFromKeys(const std::string &path,
1091  const std::string &password,
1092  const std::string &language,
1093  NetworkType nettype,
1094  uint64_t restoreHeight,
1095  const std::string &addressString,
1096  const std::string &viewKeyString,
1097  const std::string &spendKeyString = "",
1098  uint64_t kdf_rounds = 1) = 0;
1099  Wallet * createWalletFromKeys(const std::string &path,
1100  const std::string &password,
1101  const std::string &language,
1102  bool testnet,
1103  uint64_t restoreHeight,
1104  const std::string &addressString,
1105  const std::string &viewKeyString,
1106  const std::string &spendKeyString = "") // deprecated
1107  {
1108  return createWalletFromKeys(path, password, language, testnet ? TESTNET : MAINNET, restoreHeight, addressString, viewKeyString, spendKeyString);
1109  }
1110 
1123  virtual Wallet * createWalletFromKeys(const std::string &path,
1124  const std::string &language,
1125  NetworkType nettype,
1126  uint64_t restoreHeight,
1127  const std::string &addressString,
1128  const std::string &viewKeyString,
1129  const std::string &spendKeyString = "") = 0;
1130  Wallet * createWalletFromKeys(const std::string &path,
1131  const std::string &language,
1132  bool testnet,
1133  uint64_t restoreHeight,
1134  const std::string &addressString,
1135  const std::string &viewKeyString,
1136  const std::string &spendKeyString = "") // deprecated
1137  {
1138  return createWalletFromKeys(path, language, testnet ? TESTNET : MAINNET, restoreHeight, addressString, viewKeyString, spendKeyString);
1139  }
1140 
1153  virtual Wallet * createWalletFromDevice(const std::string &path,
1154  const std::string &password,
1155  NetworkType nettype,
1156  const std::string &deviceName,
1157  uint64_t restoreHeight = 0,
1158  const std::string &subaddressLookahead = "",
1159  uint64_t kdf_rounds = 1,
1160  WalletListener * listener = nullptr) = 0;
1161 
1167  virtual bool closeWallet(Wallet *wallet, bool store = true) = 0;
1168 
1169  /*
1170  * ! checks if wallet with the given name already exists
1171  */
1172 
1178  virtual bool walletExists(const std::string &path) = 0;
1179 
1192  virtual bool verifyWalletPassword(const std::string &keys_file_name, const std::string &password, bool no_spend_key, uint64_t kdf_rounds = 1) const = 0;
1193 
1204  virtual bool queryWalletDevice(Wallet::Device& device_type, const std::string &keys_file_name, const std::string &password, uint64_t kdf_rounds = 1) const = 0;
1205 
1211  virtual std::vector<std::string> findWallets(const std::string &path) = 0;
1212 
1214  virtual std::string errorString() const = 0;
1215 
1217  virtual void setDaemonAddress(const std::string &address) = 0;
1218 
1220  virtual bool connected(uint32_t *version = NULL) = 0;
1221 
1223  virtual uint64_t blockchainHeight() = 0;
1224 
1226  virtual uint64_t blockchainTargetHeight() = 0;
1227 
1229  virtual uint64_t networkDifficulty() = 0;
1230 
1232  virtual double miningHashRate() = 0;
1233 
1235  virtual uint64_t blockTarget() = 0;
1236 
1238  virtual bool isMining() = 0;
1239 
1241  virtual bool startMining(const std::string &address, uint32_t threads = 1, bool background_mining = false, bool ignore_battery = true) = 0;
1242 
1244  virtual bool stopMining() = 0;
1245 
1247  virtual std::string resolveOpenAlias(const std::string &address, bool &dnssec_valid) const = 0;
1248 
1250  static std::tuple<bool, std::string, std::string, std::string, std::string> checkUpdates(const std::string &software, std::string subdir);
1251 };
1252 
1253 
1255 {
1256  // logging levels for underlying library
1257  enum LogLevel {
1266  };
1267 
1268  static WalletManager * getWalletManager();
1269  static void setLogLevel(int level);
1270  static void setLogCategories(const std::string &categories);
1271 };
1272 
1273 
1274 }
1275 
1276 namespace Bitelectroneum = Electroneum;
1277 
uint64_t height
Definition: blockchain.cpp:91
uint8_t version
Definition: blockchain.cpp:90
uint8_t threshold
Definition: blockchain.cpp:92
Definition: wallet2_api.h:57
T & operator*()
Definition: wallet2_api.h:62
const T & operator*() const
Definition: wallet2_api.h:61
optional(const T &t)
Definition: wallet2_api.h:60
T t
Definition: wallet2_api.h:65
bool set
Definition: wallet2_api.h:66
optional()
Definition: wallet2_api.h:59
const uint32_t T[512]
Definition: groestl_tables.h:37
void onStartup()
Definition: utils.cpp:52
bool isAddressLocal(const std::string &address)
Definition: utils.cpp:42
Definition: address_book.cpp:41
NetworkType
Definition: wallet2_api.h:45
@ MAINNET
Definition: wallet2_api.h:46
@ STAGENET
Definition: wallet2_api.h:48
@ TESTNET
Definition: wallet2_api.h:47
POD_CLASS signature
Definition: crypto.h:108
POD_CLASS key_image
Definition: crypto.h:102
static void add(ge_p3 &p3, const ge_cached &other)
Definition: multiexp.cc:143
int bool
Definition: stdbool.h:36
#define true
Definition: stdbool.h:37
#define false
Definition: stdbool.h:38
AddressBookRow - provides functions to manage address book.
Definition: wallet2_api.h:216
std::size_t getRowId() const
Definition: wallet2_api.h:234
std::string m_paymentId
Definition: wallet2_api.h:227
std::string getPaymentId() const
Definition: wallet2_api.h:233
std::string m_description
Definition: wallet2_api.h:228
std::string extra
Definition: wallet2_api.h:230
std::string getAddress() const
Definition: wallet2_api.h:231
std::string m_address
Definition: wallet2_api.h:226
std::string getDescription() const
Definition: wallet2_api.h:232
AddressBookRow(std::size_t _rowId, const std::string &_address, const std::string &_paymentId, const std::string &_description)
Definition: wallet2_api.h:218
std::size_t m_rowId
Definition: wallet2_api.h:225
The AddressBook - interface for Book.
Definition: wallet2_api.h:242
ErrorCode
Definition: wallet2_api.h:243
@ General_Error
Definition: wallet2_api.h:245
@ Invalid_Payment_Id
Definition: wallet2_api.h:247
@ Invalid_Address
Definition: wallet2_api.h:246
@ Status_Ok
Definition: wallet2_api.h:244
virtual std::vector< AddressBookRow * > getAll() const =0
virtual void refresh()=0
virtual bool deleteRow(std::size_t rowId)=0
virtual std::string errorString() const =0
virtual bool addRow(const std::string &dst_addr, const std::string &payment_id, const std::string &description)=0
virtual ~AddressBook()=0
Definition: address_book.cpp:43
virtual int lookupPaymentID(const std::string &payment_id) const =0
virtual int errorCode() const =0
Definition: wallet2_api.h:329
double m_progress
Definition: wallet2_api.h:337
virtual bool indeterminate() const
Definition: wallet2_api.h:334
virtual double progress() const
Definition: wallet2_api.h:333
bool m_indeterminate
Definition: wallet2_api.h:338
DeviceProgress(double progress, bool indeterminate=false)
Definition: wallet2_api.h:331
DeviceProgress()
Definition: wallet2_api.h:330
Definition: wallet2_api.h:319
MultisigState()
Definition: wallet2_api.h:320
uint32_t threshold
Definition: wallet2_api.h:324
bool isMultisig
Definition: wallet2_api.h:322
bool isReady
Definition: wallet2_api.h:323
uint32_t total
Definition: wallet2_api.h:325
Transaction-like interface for sending money.
Definition: wallet2_api.h:73
virtual int status() const =0
virtual uint64_t fee() const =0
virtual uint64_t txCount() const =0
txCount - number of transactions current transaction will be splitted to
virtual uint64_t dust() const =0
virtual std::string errorString() const =0
Priority
Definition: wallet2_api.h:80
@ Priority_Last
Definition: wallet2_api.h:85
@ Priority_Medium
Definition: wallet2_api.h:83
@ Priority_High
Definition: wallet2_api.h:84
@ Priority_Low
Definition: wallet2_api.h:82
@ Priority_Default
Definition: wallet2_api.h:81
virtual std::string multisigSignData()=0
multisigSignData
virtual std::vector< uint32_t > subaddrAccount() const =0
virtual std::vector< std::string > txid() const =0
virtual std::vector< std::set< uint32_t > > subaddrIndices() const =0
virtual uint64_t amount() const =0
Status
Definition: wallet2_api.h:74
@ Status_Critical
Definition: wallet2_api.h:77
@ Status_Error
Definition: wallet2_api.h:76
@ Status_Ok
Definition: wallet2_api.h:75
virtual bool commit(const std::string &filename="", bool overwrite=false)=0
virtual ~PendingTransaction()=0
Definition: pending_transaction.cpp:49
virtual std::vector< std::string > signersKeys() const =0
signersKeys
Definition: wallet2_api.h:286
std::size_t m_rowId
Definition: wallet2_api.h:296
std::string getAddress() const
Definition: wallet2_api.h:303
std::string m_balance
Definition: wallet2_api.h:299
std::string extra
Definition: wallet2_api.h:302
SubaddressAccountRow(std::size_t _rowId, const std::string &_address, const std::string &_label, const std::string &_balance, const std::string &_unlockedBalance)
Definition: wallet2_api.h:288
std::string m_address
Definition: wallet2_api.h:297
std::string getBalance() const
Definition: wallet2_api.h:305
std::string m_label
Definition: wallet2_api.h:298
std::size_t getRowId() const
Definition: wallet2_api.h:307
std::string m_unlockedBalance
Definition: wallet2_api.h:300
std::string getUnlockedBalance() const
Definition: wallet2_api.h:306
std::string getLabel() const
Definition: wallet2_api.h:304
Definition: wallet2_api.h:311
virtual std::vector< SubaddressAccountRow * > getAll() const =0
virtual void addRow(const std::string &label)=0
virtual void setLabel(uint32_t accountIndex, const std::string &label)=0
virtual ~SubaddressAccount()=0
Definition: subaddress_account.cpp:39
Definition: wallet2_api.h:259
std::string getAddress() const
Definition: wallet2_api.h:272
std::string extra
Definition: wallet2_api.h:271
std::string m_address
Definition: wallet2_api.h:268
std::size_t getRowId() const
Definition: wallet2_api.h:274
SubaddressRow(std::size_t _rowId, const std::string &_address, const std::string &_label)
Definition: wallet2_api.h:261
std::string m_label
Definition: wallet2_api.h:269
std::size_t m_rowId
Definition: wallet2_api.h:267
std::string getLabel() const
Definition: wallet2_api.h:273
Definition: wallet2_api.h:278
virtual ~Subaddress()=0
Definition: subaddress.cpp:39
virtual std::vector< SubaddressRow * > getAll() const =0
virtual void refresh(uint32_t accountIndex)=0
virtual void addRow(uint32_t accountIndex, const std::string &label)=0
virtual void setLabel(uint32_t accountIndex, uint32_t addressIndex, const std::string &label)=0
The TransactionHistory - interface for displaying transaction history.
Definition: wallet2_api.h:204
virtual int count() const =0
virtual std::vector< TransactionInfo * > getAll() const =0
virtual TransactionInfo * transaction(const std::string &id) const =0
virtual ~TransactionHistory()=0
Definition: transaction_history.cpp:48
virtual TransactionInfo * transaction(int index) const =0
Definition: wallet2_api.h:175
Transfer(uint64_t _amount, const std::string &address)
Definition: transaction_info.cpp:41
const std::string address
Definition: wallet2_api.h:178
const uint64_t amount
Definition: wallet2_api.h:177
The TransactionInfo - interface for displaying transaction information.
Definition: wallet2_api.h:169
virtual uint64_t unlockTime() const =0
virtual bool isPending() const =0
virtual bool isFailed() const =0
virtual std::string paymentId() const =0
virtual uint32_t subaddrAccount() const =0
virtual uint64_t fee() const =0
virtual std::string hash() const =0
transaction_id
virtual uint64_t blockHeight() const =0
virtual const std::vector< Transfer > & transfers() const =0
only applicable for output transactions
virtual std::time_t timestamp() const =0
virtual std::string label() const =0
virtual uint64_t confirmations() const =0
virtual int direction() const =0
virtual std::set< uint32_t > subaddrIndex() const =0
Direction
Definition: wallet2_api.h:170
@ Direction_Out
Definition: wallet2_api.h:172
@ Direction_In
Definition: wallet2_api.h:171
virtual uint64_t amount() const =0
virtual ~TransactionInfo()=0
Definition: transaction_info.cpp:39
Transaction-like interface for sending money.
Definition: wallet2_api.h:134
virtual std::vector< std::string > recipientAddress() const =0
virtual std::string confirmationMessage() const =0
virtual std::vector< uint64_t > fee() const =0
virtual std::vector< uint64_t > mixin() const =0
virtual uint64_t minMixinCount() const =0
virtual ~UnsignedTransaction()=0
Definition: unsigned_transaction.cpp:48
virtual std::vector< uint64_t > amount() const =0
virtual std::string errorString() const =0
virtual std::vector< std::string > paymentId() const =0
virtual uint64_t txCount() const =0
txCount - number of transactions current transaction will be splitted to
virtual int status() const =0
Status
Definition: wallet2_api.h:135
@ Status_Ok
Definition: wallet2_api.h:136
@ Status_Critical
Definition: wallet2_api.h:138
@ Status_Error
Definition: wallet2_api.h:137
virtual bool sign(const std::string &signedFileName)=0
sign - Sign txs and saves to file
Definition: wallet2_api.h:343
virtual void refreshed()=0
refreshed - called when wallet refreshed by background thread or explicitly refreshed by calling "ref...
virtual void onSetWallet(Wallet *wallet)
If the listener is created before the wallet this enables to set created wallet object.
Definition: wallet2_api.h:416
virtual optional< std::string > onDevicePassphraseRequest(bool on_device)
called by device when passphrase entry is needed
Definition: wallet2_api.h:403
virtual void onDeviceButtonPressed()
called by device if the button was pressed
Definition: wallet2_api.h:391
virtual void updated()=0
updated - generic callback, called when any event (sent/received/block reveived/etc) happened with th...
virtual void newBlock(uint64_t height)=0
newBlock - called when new block received
virtual optional< std::string > onDevicePinRequest()
called by device when PIN is needed
Definition: wallet2_api.h:396
virtual void moneyReceived(const std::string &txId, uint64_t amount)=0
moneyReceived - called when money received
virtual void moneySpent(const std::string &txId, uint64_t amount)=0
moneySpent - called when money spent
virtual void onDeviceButtonRequest(uint64_t code)
called by device if the action is required
Definition: wallet2_api.h:386
virtual ~WalletListener()=0
Definition: wallet.cpp:295
virtual void unconfirmedMoneyReceived(const std::string &txId, uint64_t amount)=0
unconfirmedMoneyReceived - called when payment arrived in tx pool
virtual void onDeviceProgress(const DeviceProgress &event)
Signalizes device operation progress.
Definition: wallet2_api.h:411
Definition: wallet2_api.h:1255
static WalletManager * getWalletManager()
Definition: wallet_manager.cpp:375
static void setLogCategories(const std::string &categories)
Definition: wallet_manager.cpp:392
LogLevel
Definition: wallet2_api.h:1257
@ LogLevel_1
Definition: wallet2_api.h:1260
@ LogLevel_Silent
Definition: wallet2_api.h:1258
@ LogLevel_2
Definition: wallet2_api.h:1261
@ LogLevel_Min
Definition: wallet2_api.h:1264
@ LogLevel_0
Definition: wallet2_api.h:1259
@ LogLevel_3
Definition: wallet2_api.h:1262
@ LogLevel_4
Definition: wallet2_api.h:1263
@ LogLevel_Max
Definition: wallet2_api.h:1265
static void setLogLevel(int level)
Definition: wallet_manager.cpp:387
WalletManager - provides functions to manage wallets.
Definition: wallet2_api.h:1012
virtual uint64_t networkDifficulty()=0
returns current network difficulty
virtual std::vector< std::string > findWallets(const std::string &path)=0
findWallets - searches for the wallet files by given path name recursively
virtual double miningHashRate()=0
returns current mining hash rate (0 if not mining)
virtual uint64_t blockchainHeight()=0
returns current blockchain height
Wallet * createWalletFromKeys(const std::string &path, const std::string &language, bool testnet, uint64_t restoreHeight, const std::string &addressString, const std::string &viewKeyString, const std::string &spendKeyString="")
Definition: wallet2_api.h:1130
Wallet * createWalletFromKeys(const std::string &path, const std::string &password, const std::string &language, bool testnet, uint64_t restoreHeight, const std::string &addressString, const std::string &viewKeyString, const std::string &spendKeyString="")
Definition: wallet2_api.h:1099
virtual Wallet * recoveryWallet(const std::string &path, const std::string &mnemonic, NetworkType nettype, uint64_t restoreHeight=0)=0
recovers existing wallet using mnemonic (electrum seed)
Wallet * recoveryWallet(const std::string &path, const std::string &password, const std::string &mnemonic, bool testnet=false, uint64_t restoreHeight=0)
Definition: wallet2_api.h:1056
virtual bool verifyWalletPassword(const std::string &keys_file_name, const std::string &password, bool no_spend_key, uint64_t kdf_rounds=1) const =0
verifyWalletPassword - check if the given filename is the wallet
virtual Wallet * createWalletFromDevice(const std::string &path, const std::string &password, NetworkType nettype, const std::string &deviceName, uint64_t restoreHeight=0, const std::string &subaddressLookahead="", uint64_t kdf_rounds=1, WalletListener *listener=nullptr)=0
creates wallet using hardware device.
virtual std::string errorString() const =0
returns verbose error string regarding last error;
Wallet * openWallet(const std::string &path, const std::string &password, bool testnet=false)
Definition: wallet2_api.h:1039
virtual bool startMining(const std::string &address, uint32_t threads=1, bool background_mining=false, bool ignore_battery=true)=0
starts mining with the set number of threads
virtual bool isMining()=0
returns true iff mining
virtual void setDaemonAddress(const std::string &address)=0
set the daemon address (hostname and port)
virtual Wallet * openWallet(const std::string &path, const std::string &password, NetworkType nettype, uint64_t kdf_rounds=1, WalletListener *listener=nullptr)=0
Opens existing wallet.
Wallet * recoveryWallet(const std::string &path, const std::string &mnemonic, bool testnet=false, uint64_t restoreHeight=0)
Definition: wallet2_api.h:1072
virtual bool closeWallet(Wallet *wallet, bool store=true)=0
Closes wallet. In case operation succeeded, wallet object deleted. in case operation failed,...
static std::tuple< bool, std::string, std::string, std::string, std::string > checkUpdates(const std::string &software, std::string subdir)
checks for an update and returns version, hash and url
Definition: wallet_manager.cpp:348
virtual uint64_t blockTarget()=0
returns current block target
virtual uint64_t blockchainTargetHeight()=0
returns current blockchain target height
virtual bool connected(uint32_t *version=NULL)=0
returns whether the daemon can be reached, and its version number
virtual std::string resolveOpenAlias(const std::string &address, bool &dnssec_valid) const =0
resolves an OpenAlias address to a electroneum address
virtual Wallet * recoveryWallet(const std::string &path, const std::string &password, const std::string &mnemonic, NetworkType nettype=MAINNET, uint64_t restoreHeight=0, uint64_t kdf_rounds=1)=0
recovers existing wallet using mnemonic (electrum seed)
virtual Wallet * createWalletFromKeys(const std::string &path, const std::string &password, const std::string &language, NetworkType nettype, uint64_t restoreHeight, const std::string &addressString, const std::string &viewKeyString, const std::string &spendKeyString="", uint64_t kdf_rounds=1)=0
recovers existing wallet using keys. Creates a view only wallet if spend key is omitted
virtual Wallet * createWalletFromKeys(const std::string &path, const std::string &language, NetworkType nettype, uint64_t restoreHeight, const std::string &addressString, const std::string &viewKeyString, const std::string &spendKeyString="")=0
recovers existing wallet using keys. Creates a view only wallet if spend key is omitted
virtual bool walletExists(const std::string &path)=0
TODO: delme walletExists - check if the given filename is the wallet.
Wallet * createWallet(const std::string &path, const std::string &password, const std::string &language, bool testnet=false)
Definition: wallet2_api.h:1024
virtual bool stopMining()=0
stops mining
virtual Wallet * createWallet(const std::string &path, const std::string &password, const std::string &language, NetworkType nettype, uint64_t kdf_rounds=1)=0
Creates new wallet.
virtual bool queryWalletDevice(Wallet::Device &device_type, const std::string &keys_file_name, const std::string &password, uint64_t kdf_rounds=1) const =0
determine the key storage for the specified wallet file
Interface for wallet operations. TODO: check if /include/IWallet.h is still actual.
Definition: wallet2_api.h:425
virtual bool isKeysFileLocked()=0
returns true if the keys file is locked
virtual std::string errorString() const =0
in case error status, returns error string
virtual bool checkTxKey(const std::string &txid, std::string tx_key, const std::string &address, uint64_t &received, bool &in_pool, uint64_t &confirmations)=0
virtual bool unlockKeysFile()=0
static void debug(const std::string &category, const std::string &str)
Definition: wallet.cpp:402
virtual void setRecoveringFromSeed(bool recoveringFromSeed)=0
setRecoveringFromSeed - set state recover form seed
virtual bool submitTransaction(const std::string &fileName)=0
submitTransaction - submits transaction in signed tx file
virtual void rescanBlockchainAsync()=0
rescanBlockchainAsync - rescans wallet asynchronously, starting from genesys
virtual bool connectToDaemon()=0
connectToDaemon - connects to the daemon. TODO: check if it can be removed
virtual void keyReuseMitigation2(bool mitigation)=0
secondary key reuse mitigation
static uint64_t amountFromDouble(double amount)
Definition: wallet.cpp:310
virtual std::string getSeedLanguage() const =0
virtual void setDefaultMixin(uint32_t arg)=0
setDefaultMixin - setum number of mixins to be used for new transactions
virtual std::string publicViewKey() const =0
publicViewKey - returns public view key
virtual std::string secretViewKey() const =0
secretViewKey - returns secret view key
virtual std::string getUserNote(const std::string &txid) const =0
getUserNote - return an arbitrary string note attached to a txid
virtual std::string makeMultisig(const std::vector< std::string > &info, uint32_t threshold)=0
makeMultisig - switches wallet in multisig state. The one and only creation phase for N / N wallets
virtual bool lockKeysFile()=0
locks/unlocks the keys file; returns true on success
virtual size_t importMultisigImages(const std::vector< std::string > &images)=0
importMultisigImages - imports other participants' multisig images
virtual std::string getMultisigInfo() const =0
getMultisigInfo
ConnectionStatus
Definition: wallet2_api.h:438
@ ConnectionStatus_Connected
Definition: wallet2_api.h:440
@ ConnectionStatus_WrongVersion
Definition: wallet2_api.h:441
@ ConnectionStatus_Disconnected
Definition: wallet2_api.h:439
virtual void setSubaddressLabel(uint32_t accountIndex, uint32_t addressIndex, const std::string &label)=0
setSubaddressLabel - sets the label of the specified subaddress
std::string mainAddress() const
Definition: wallet2_api.h:458
virtual bool setUserNote(const std::string &txid, const std::string &note)=0
setUserNote - attach an arbitrary string note to a txid
virtual bool importKeyImages(const std::string &filename)=0
importKeyImages - imports key images from file
static bool addressValid(const std::string &str, bool testnet)
Definition: wallet2_api.h:662
virtual std::string address(uint32_t accountIndex=0, uint32_t addressIndex=0) const =0
virtual bool useForkRules(uint8_t version, int64_t early_blocks) const =0
check if hard fork rules should be used
virtual UnsignedTransaction * loadUnsignedTx(const std::string &unsigned_filename)=0
loadUnsignedTx - creates transaction from unsigned tx file
virtual bool setDevicePin(const std::string &pin)
Definition: wallet2_api.h:455
virtual size_t numSubaddressAccounts() const =0
numSubaddressAccounts - returns the number of existing subaddress accounts
virtual bool checkSpendProof(const std::string &txid, const std::string &message, const std::string &signature, bool &good) const =0
virtual void addSubaddressAccount(const std::string &label)=0
addSubaddressAccount - appends a new subaddress account at the end of the last major index of existin...
virtual bool verifyMessageWithPublicKey(const std::string &message, const std::string &publicKey, const std::string &signature) const =0
verifyMessageWithPublicKey verifies that message was signed with the given public key
virtual uint32_t defaultMixin() const =0
defaultMixin - returns number of mixins used in transactions
virtual uint64_t unlockedBalance(uint32_t accountIndex=0) const =0
virtual SubaddressAccount * subaddressAccount()=0
virtual std::string getReserveProof(bool all, uint32_t account_index, uint64_t amount, const std::string &message) const =0
getReserveProof - Generates a proof that proves the reserve of unspent funds Parameters account_index...
virtual PendingTransaction * restoreMultisigTransaction(const std::string &signData)=0
restoreMultisigTransaction creates PendingTransaction from signData
virtual TransactionHistory * history()=0
virtual std::string getSpendProof(const std::string &txid, const std::string &message) const =0
virtual Subaddress * subaddress()=0
virtual void setRefreshFromBlockHeight(uint64_t refresh_from_block_height)=0
setRefreshFromBlockHeight - start refresh from block height on recover
static void error(const std::string &category, const std::string &str)
Definition: wallet.cpp:414
static void init(const char *argv0, const char *default_log_base_name)
Definition: wallet2_api.h:678
virtual void pauseRefresh()=0
pauseRefresh - pause refresh thread
virtual bool createWatchOnly(const std::string &path, const std::string &password, const std::string &language) const =0
createWatchOnly - Creates a watch only wallet
virtual uint64_t getRefreshFromBlockHeight() const =0
getRestoreHeight - get wallet creation height
static void info(const std::string &category, const std::string &str)
Definition: wallet.cpp:406
virtual bool unblackballOutput(const std::string &amount, const std::string &offset)=0
unblackballs an output
virtual void setAutoRefreshInterval(int millis)=0
setAutoRefreshInterval - setup interval for automatic refresh.
static std::string displayAmount(uint64_t amount)
Definition: wallet.cpp:298
virtual bool init(const std::string &daemon_address, uint64_t upper_transaction_size_limit=0, const std::string &daemon_username="", const std::string &daemon_password="", bool use_ssl=false, bool lightWallet=false)=0
init - initializes wallet with daemon connection params. if daemon_address is local address,...
bool mainnet() const
Definition: wallet2_api.h:461
virtual bool checkTxProof(const std::string &txid, const std::string &address, const std::string &message, const std::string &signature, bool &good, uint64_t &received, bool &in_pool, uint64_t &confirmations)=0
virtual bool setPassword(const std::string &password)=0
virtual void setRecoveringFromDevice(bool recoveringFromDevice)=0
setRecoveringFromDevice - set state to recovering from device
static std::string paymentIdFromAddress(const std::string &str, bool testnet)
Definition: wallet2_api.h:672
virtual uint64_t approximateBlockChainHeight() const =0
approximateBlockChainHeight - returns approximate blockchain height calculated from date/time
static bool keyValid(const std::string &secret_key_string, const std::string &address_string, bool isViewKey, NetworkType nettype, std::string &error)
Definition: wallet.cpp:341
virtual std::string signMultisigParticipant(const std::string &message) const =0
signMultisigParticipant signs given message with the multisig public signer key
virtual int status() const =0
returns wallet status (Status_Ok | Status_Error)
virtual std::string keysFilename() const =0
keysFilename - returns keys filename. usually this formed as "wallet_filename".keys
virtual void setSeedLanguage(const std::string &arg)=0
virtual std::string secretSpendKey() const =0
secretSpendKey - returns secret spend key
virtual bool setRing(const std::string &key_image, const std::vector< uint64_t > &ring, bool relative)=0
sets the ring used for a key image
virtual std::string getTxProof(const std::string &txid, const std::string &address, const std::string &message) const =0
virtual PendingTransaction * createSweepUnmixableTransaction()=0
createSweepUnmixableTransaction creates transaction with unmixable outputs.
virtual void setListener(WalletListener *)=0
virtual bool verifySignedMessage(const std::string &message, const std::string &addres, const std::string &signature) const =0
verifySignedMessage - verify a signature matches a given message
virtual ConnectionStatus connected() const =0
connected - checks if the wallet connected to the daemon
virtual MultisigState multisig() const =0
multisig - returns current state of multisig wallet creation process
Status
Definition: wallet2_api.h:432
@ Status_Critical
Definition: wallet2_api.h:435
@ Status_Error
Definition: wallet2_api.h:434
@ Status_Ok
Definition: wallet2_api.h:433
virtual void setSubaddressLookahead(uint32_t major, uint32_t minor)=0
setSubaddressLookahead - set size of subaddress lookahead
virtual bool refresh()=0
refresh - refreshes the wallet, updating transactions from daemon
virtual std::string seed() const =0
virtual void segregatePreForkOutputs(bool segregate)=0
sets whether pre-fork outs are to be segregated
virtual bool trustedDaemon() const =0
static uint64_t maximumAllowedAmount()
Definition: wallet.cpp:387
static uint64_t amountFromString(const std::string &amount)
Definition: wallet.cpp:303
uint64_t balanceAll() const
Definition: wallet2_api.h:598
uint64_t unlockedBalanceAll() const
Definition: wallet2_api.h:605
virtual int autoRefreshInterval() const =0
autoRefreshInterval - returns automatic refresh interval in millis
virtual bool blackballOutput(const std::string &amount, const std::string &offset)=0
blackballs an output
static void warning(const std::string &category, const std::string &str)
Definition: wallet.cpp:410
static bool keyValid(const std::string &secret_key_string, const std::string &address_string, bool isViewKey, bool testnet, std::string &error)
Definition: wallet2_api.h:667
static std::string genPaymentId()
Definition: wallet.cpp:317
virtual bool checkReserveProof(const std::string &address, const std::string &message, const std::string &signature, bool &good, uint64_t &total, uint64_t &spent) const =0
virtual bool finalizeMultisig(const std::vector< std::string > &extraMultisigInfo)=0
finalizeMultisig - finalizes N - 1 / N multisig wallets creation
virtual std::string path() const =0
virtual void hardForkInfo(uint8_t &version, uint64_t &earliest_height) const =0
returns current hard fork info
virtual void segregationHeight(uint64_t height)=0
sets the height where segregation should occur
virtual bool getRing(const std::string &key_image, std::vector< uint64_t > &ring) const =0
gets the ring used for a key image, if any
virtual bool setDevicePassphrase(const std::string &passphrase)
Definition: wallet2_api.h:456
virtual bool rescanSpent()=0
virtual uint64_t estimateBlockChainHeight() const =0
estimateBlockChainHeight - returns estimate blockchain height. More accurate than approximateBlockCha...
virtual void setTrustedDaemon(bool arg)=0
virtual std::string exchangeMultisigKeys(const std::vector< std::string > &info)=0
exchange_multisig_keys - provides additional key exchange round for arbitrary multisig schemes (like ...
virtual bool watchOnly() const =0
watchOnly - checks if wallet is watch only
virtual std::string integratedAddress(const std::string &payment_id) const =0
integratedAddress - returns integrated address for current wallet address and given payment_id....
virtual ~Wallet()=0
Definition: wallet.cpp:293
virtual bool getRings(const std::string &txid, std::vector< std::pair< std::string, std::vector< uint64_t >>> &rings) const =0
gets the rings used for a txid, if any
static bool paymentIdValid(const std::string &paiment_id)
Definition: wallet.cpp:324
virtual std::string signMessage(const std::string &message)=0
Device
Definition: wallet2_api.h:426
@ Device_Trezor
Definition: wallet2_api.h:429
@ Device_Software
Definition: wallet2_api.h:427
@ Device_Ledger
Definition: wallet2_api.h:428
virtual bool store(const std::string &path)=0
store - stores wallet to file.
virtual void disposeTransaction(PendingTransaction *t)=0
disposeTransaction - destroys transaction object
virtual void statusWithErrorString(int &status, std::string &errorString) const =0
returns both error and error string atomically. suggested to use in instead of status() and errorStri...
virtual std::string getSubaddressLabel(uint32_t accountIndex, uint32_t addressIndex) const =0
getSubaddressLabel - gets the label of the specified subaddress
virtual uint64_t daemonBlockChainTargetHeight() const =0
daemonBlockChainTargetHeight - returns daemon blockchain target height
virtual bool exportKeyImages(const std::string &filename)=0
exportKeyImages - exports key images to file
virtual void addSubaddress(uint32_t accountIndex, const std::string &label)=0
addSubaddress - appends a new subaddress at the end of the last minor index of the specified subaddre...
bool testnet() const
Definition: wallet2_api.h:462
static std::string paymentIdFromAddress(const std::string &str, NetworkType nettype)
Definition: wallet.cpp:377
virtual PendingTransaction * createTransaction(const std::string &dst_addr, const std::string &payment_id, optional< uint64_t > amount, uint32_t mixin_count, PendingTransaction::Priority=PendingTransaction::Priority_Low, uint32_t subaddr_account=0, std::set< uint32_t > subaddr_indices={})=0
createTransaction creates transaction. if dst_addr is an integrated address, payment_id is ignored
virtual uint64_t coldKeyImageSync(uint64_t &spent, uint64_t &unspent)=0
cold-device protocol key image sync
static bool addressValid(const std::string &str, NetworkType nettype)
Definition: wallet.cpp:335
virtual void refreshAsync()=0
refreshAsync - refreshes wallet asynchronously.
virtual void startRefresh()=0
StartRefresh - Start/resume refresh thread (refresh every 10 seconds)
virtual size_t numSubaddresses(uint32_t accountIndex) const =0
numSubaddresses - returns the number of existing subaddresses associated with the specified subaddres...
virtual std::string publicMultisigSignerKey() const =0
publicMultisigSignerKey - returns public signer key
virtual std::string getDefaultDataDir() const =0
bool stagenet() const
Definition: wallet2_api.h:463
virtual bool parse_uri(const std::string &uri, std::string &address, std::string &payment_id, uint64_t &amount, std::string &tx_description, std::string &recipient_name, std::vector< std::string > &unknown_parameters, std::string &error)=0
virtual std::string getTxKey(const std::string &txid) const =0
virtual bool hasMultisigPartialKeyImages() const =0
hasMultisigPartialKeyImages - checks if wallet needs to import multisig key images from other partici...
virtual std::string filename() const =0
filename - returns wallet filename
virtual uint64_t balance(uint32_t accountIndex=0) const =0
virtual NetworkType nettype() const =0
virtual bool lightWalletImportWalletRequest(std::string &payment_id, uint64_t &fee, bool &new_request, bool &request_fulfilled, std::string &payment_address, std::string &status)=0
Initiates a light wallet import wallet request.
virtual uint64_t daemonBlockChainHeight() const =0
daemonBlockChainHeight - returns daemon blockchain height
virtual bool exportMultisigImages(std::string &images)=0
exportMultisigImages - exports transfers' key images
virtual AddressBook * addressBook()=0
virtual bool blackballOutputs(const std::vector< std::string > &outputs, bool add)=0
blackballs a set of outputs
virtual std::string publicSpendKey() const =0
publicSpendKey - returns public spend key
virtual bool rescanBlockchain()=0
rescanBlockchain - rescans the wallet, updating transactions from daemon
virtual uint64_t blockChainHeight() const =0
blockChainHeight - returns current blockchain height
virtual bool lightWalletLogin(bool &isNewWallet) const =0
Light wallet authenticate and login.
virtual Device getDeviceType() const =0
Queries backing device for wallet keys.