diff options
| author | Czarek Nakamoto <cyjan@mrcyjanek.net> | 2026-04-17 08:47:13 +0200 |
|---|---|---|
| committer | Czarek Nakamoto <cyjan@mrcyjanek.net> | 2026-04-17 08:47:29 +0200 |
| commit | dc26758a923b98f2ceb0c2e2e14e9792fff8ca15 (patch) | |
| tree | 948b32530852e35a981128a9abe851624eae1871 /patches/monero/0007-polyseed.patch | |
| parent | ab6a4ebb8be0e5a71da5d3705f6eff782b651699 (diff) | |
wip: initial FCMP
Diffstat (limited to 'patches/monero/0007-polyseed.patch')
| -rw-r--r-- | patches/monero/0007-polyseed.patch | 182 |
1 files changed, 93 insertions, 89 deletions
diff --git a/patches/monero/0007-polyseed.patch b/patches/monero/0007-polyseed.patch index 5caf7c2..351b1ad 100644 --- a/patches/monero/0007-polyseed.patch +++ b/patches/monero/0007-polyseed.patch @@ -1,7 +1,7 @@ -From da0be39a81107060f032c8242c575f04ad61c59f Mon Sep 17 00:00:00 2001 +From 1b77ce8267c3d22a21e0ba0e6ada121aca3a2603 Mon Sep 17 00:00:00 2001 From: tobtoht <tob@featherwallet.org> Date: Tue, 12 Mar 2024 09:42:37 +0100 -Subject: [PATCH 07/20] polyseed +Subject: [PATCH 07/17] polyseed Co-authored-by: Czarek Nakamoto <cyjan@mrcyjanek.net> --- @@ -10,6 +10,7 @@ Co-authored-by: Czarek Nakamoto <cyjan@mrcyjanek.net> contrib/epee/include/wipeable_string.h | 7 + contrib/epee/src/wipeable_string.cpp | 10 ++ external/CMakeLists.txt | 2 + + external/bc-ur | 1 + external/polyseed | 1 + external/utf8proc | 1 + src/CMakeLists.txt | 1 + @@ -27,9 +28,10 @@ Co-authored-by: Czarek Nakamoto <cyjan@mrcyjanek.net> src/wallet/api/wallet2_api.h | 25 ++++ src/wallet/api/wallet_manager.cpp | 9 ++ src/wallet/api/wallet_manager.h | 10 ++ - src/wallet/wallet2.cpp | 100 ++++++++++++-- - src/wallet/wallet2.h | 30 +++- - 24 files changed, 805 insertions(+), 18 deletions(-) + src/wallet/wallet2.cpp | 97 +++++++++++-- + src/wallet/wallet2.h | 29 +++- + 25 files changed, 803 insertions(+), 17 deletions(-) + create mode 160000 external/bc-ur create mode 160000 external/polyseed create mode 160000 external/utf8proc create mode 100644 src/polyseed/CMakeLists.txt @@ -39,46 +41,44 @@ Co-authored-by: Czarek Nakamoto <cyjan@mrcyjanek.net> create mode 100644 src/polyseed/polyseed.hpp diff --git a/.gitmodules b/.gitmodules -index 72af74d55..b838e84e0 100644 +index 8abd99092..011c960f2 100644 --- a/.gitmodules +++ b/.gitmodules -@@ -11,6 +11,12 @@ - path = external/randomx - url = https://github.com/MrCyjaneK/RandomX - branch = cyjan-fix-ios +@@ -25,3 +25,9 @@ + path = external/bc-ur + url = https://github.com/MrCyjaneK/bc-ur + branch = misc +[submodule "external/utf8proc"] + path = external/utf8proc + url = https://github.com/JuliaStrings/utf8proc.git +[submodule "external/polyseed"] + path = external/polyseed + url = https://github.com/tevador/polyseed.git - [submodule "external/supercop"] - path = external/supercop - url = https://github.com/monero-project/supercop +\ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt -index eb0d12225..390339523 100644 +index dbd0b2d48..dfb7a0bd8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -371,6 +371,8 @@ if(NOT MANUAL_SUBMODULES) - check_submodule(external/trezor-common) +@@ -384,6 +384,8 @@ if(NOT MANUAL_SUBMODULES) check_submodule(external/randomx) check_submodule(external/supercop) + check_submodule(external/mx25519) + check_submodule(external/polyseed) + check_submodule(external/utf8proc) endif() endif() -@@ -460,7 +462,7 @@ endif() - # elseif(CMAKE_SYSTEM_NAME MATCHES ".*BSDI.*") - # set(BSDI TRUE) +@@ -456,7 +458,7 @@ elseif(CMAKE_SYSTEM_NAME MATCHES ".*BSDI.*") + set(BSDI TRUE) + endif() --include_directories(external/rapidjson/include external/easylogging++ src contrib/epee/include external external/supercop/include) -+include_directories(external/rapidjson/include external/easylogging++ src contrib/epee/include external external/supercop/include external/polyseed/include external/utf8proc) +-include_directories(external/rapidjson/include external/easylogging++ src contrib/epee/include external external/supercop/include external/mx25519/include) ++include_directories(external/rapidjson/include external/easylogging++ src contrib/epee/include external external/supercop/include external/mx25519/include external/polyseed/include external/utf8proc) - if(APPLE) - cmake_policy(SET CMP0042 NEW) + if(MINGW) + set(DEFAULT_STATIC true) diff --git a/contrib/epee/include/wipeable_string.h b/contrib/epee/include/wipeable_string.h -index 65977cd97..594e15de4 100644 +index 0a324c159..16c4a8539 100644 --- a/contrib/epee/include/wipeable_string.h +++ b/contrib/epee/include/wipeable_string.h @@ -34,6 +34,7 @@ @@ -103,7 +103,7 @@ index 65977cd97..594e15de4 100644 private: void grow(size_t sz, size_t reserved = 0); diff --git a/contrib/epee/src/wipeable_string.cpp b/contrib/epee/src/wipeable_string.cpp -index b016f2f48..f2f365b1b 100644 +index 5d4d87d8e..ce1a3baf0 100644 --- a/contrib/epee/src/wipeable_string.cpp +++ b/contrib/epee/src/wipeable_string.cpp @@ -261,4 +261,14 @@ wipeable_string &wipeable_string::operator=(const wipeable_string &other) @@ -122,10 +122,10 @@ index b016f2f48..f2f365b1b 100644 + } diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt -index 074e23f16..f7e35f98f 100644 +index 9d3bcd853..959648e38 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt -@@ -70,5 +70,7 @@ endif() +@@ -66,6 +66,8 @@ endif() add_subdirectory(db_drivers) add_subdirectory(easylogging++) add_subdirectory(qrcodegen) @@ -133,6 +133,14 @@ index 074e23f16..f7e35f98f 100644 +add_subdirectory(utf8proc EXCLUDE_FROM_ALL) add_subdirectory(bc-ur) add_subdirectory(randomx EXCLUDE_FROM_ALL) + add_subdirectory(mx25519) +diff --git a/external/bc-ur b/external/bc-ur +new file mode 160000 +index 000000000..d82e7c753 +--- /dev/null ++++ b/external/bc-ur +@@ -0,0 +1 @@ ++Subproject commit d82e7c753e710b8000706dc3383b498438795208 diff --git a/external/polyseed b/external/polyseed new file mode 160000 index 000000000..bd79f5014 @@ -148,19 +156,19 @@ index 000000000..3de4596fb @@ -0,0 +1 @@ +Subproject commit 3de4596fbe28956855df2ecb3c11c0bbc3535838 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt -index 3335d3c21..06b708cf0 100644 +index f43fec4de..a238faeb5 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt -@@ -95,6 +95,7 @@ add_subdirectory(net) +@@ -98,6 +98,7 @@ add_subdirectory(net) add_subdirectory(hardforks) add_subdirectory(blockchain_db) add_subdirectory(mnemonics) +add_subdirectory(polyseed) add_subdirectory(rpc) + add_subdirectory(seraphis_crypto) if(NOT IOS) - add_subdirectory(serialization) diff --git a/src/cryptonote_basic/CMakeLists.txt b/src/cryptonote_basic/CMakeLists.txt -index 1414be1b2..414936a05 100644 +index 5b4a84b67..ed48c15e3 100644 --- a/src/cryptonote_basic/CMakeLists.txt +++ b/src/cryptonote_basic/CMakeLists.txt @@ -71,6 +71,7 @@ target_link_libraries(cryptonote_basic @@ -168,11 +176,11 @@ index 1414be1b2..414936a05 100644 cryptonote_format_utils_basic device + polyseed_wrapper + ringct_basic ${Boost_DATE_TIME_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY} - ${Boost_SERIALIZATION_LIBRARY} diff --git a/src/cryptonote_basic/account.cpp b/src/cryptonote_basic/account.cpp -index 4e87d4477..2d556f285 100644 +index 3ba5638bf..aaacf08e4 100644 --- a/src/cryptonote_basic/account.cpp +++ b/src/cryptonote_basic/account.cpp @@ -87,12 +87,16 @@ DISABLE_VS_WARNINGS(4244 4345) @@ -225,7 +233,7 @@ index 4e87d4477..2d556f285 100644 { m_keys.m_account_address.m_spend_public_key = spend_public_key; diff --git a/src/cryptonote_basic/account.h b/src/cryptonote_basic/account.h -index 93d1d28f0..1f76febce 100644 +index de5912032..ce6707b12 100644 --- a/src/cryptonote_basic/account.h +++ b/src/cryptonote_basic/account.h @@ -33,6 +33,7 @@ @@ -263,10 +271,10 @@ index 93d1d28f0..1f76febce 100644 const account_keys& get_keys() const; std::string get_public_address_str(network_type nettype) const; diff --git a/src/cryptonote_config.h b/src/cryptonote_config.h -index 82891b9de..26200bf34 100644 +index fb3adbc6c..ab4efa147 100644 --- a/src/cryptonote_config.h +++ b/src/cryptonote_config.h -@@ -211,6 +211,8 @@ +@@ -243,6 +243,8 @@ #define DNS_BLOCKLIST_LIFETIME (86400 * 8) @@ -814,10 +822,10 @@ index 000000000..2c8c777a7 +#endif //POLYSEED_HPP \ No newline at end of file diff --git a/src/wallet/api/wallet.cpp b/src/wallet/api/wallet.cpp -index fb71a0521..17a98c066 100644 +index 819982528..277e5ff41 100644 --- a/src/wallet/api/wallet.cpp +++ b/src/wallet/api/wallet.cpp -@@ -728,6 +728,28 @@ bool WalletImpl::recoverFromDevice(const std::string &path, const std::string &p +@@ -705,6 +705,28 @@ bool WalletImpl::recoverFromDevice(const std::string &path, const std::string &p return true; } @@ -846,7 +854,7 @@ index fb71a0521..17a98c066 100644 Wallet::Device WalletImpl::getDeviceType() const { return static_cast<Wallet::Device>(m_wallet->get_device_type()); -@@ -845,6 +867,54 @@ std::string WalletImpl::seed(const std::string& seed_offset) const +@@ -822,6 +844,54 @@ std::string WalletImpl::seed(const std::string& seed_offset) const } } @@ -902,10 +910,10 @@ index fb71a0521..17a98c066 100644 { return m_wallet->get_seed_language(); diff --git a/src/wallet/api/wallet.h b/src/wallet/api/wallet.h -index 6bfb61cb8..e7873dd78 100644 +index 194f21ebe..179897da2 100644 --- a/src/wallet/api/wallet.h +++ b/src/wallet/api/wallet.h -@@ -79,9 +79,19 @@ public: +@@ -80,9 +80,19 @@ public: bool recoverFromDevice(const std::string &path, const std::string &password, const std::string &device_name); @@ -926,10 +934,10 @@ index 6bfb61cb8..e7873dd78 100644 void setSeedLanguage(const std::string &arg) override; // void setListener(Listener *) {} diff --git a/src/wallet/api/wallet2_api.h b/src/wallet/api/wallet2_api.h -index f433b064f..80bfdacb2 100644 +index 302f6b082..fabe77e04 100644 --- a/src/wallet/api/wallet2_api.h +++ b/src/wallet/api/wallet2_api.h -@@ -709,6 +709,10 @@ struct Wallet +@@ -702,6 +702,10 @@ struct Wallet static void warning(const std::string &category, const std::string &str); static void error(const std::string &category, const std::string &str); @@ -940,7 +948,7 @@ index f433b064f..80bfdacb2 100644 /** * @brief StartRefresh - Start/resume refresh thread (refresh every 10 seconds) */ -@@ -1321,6 +1325,27 @@ struct WalletManager +@@ -1317,6 +1321,27 @@ struct WalletManager uint64_t kdf_rounds = 1, WalletListener * listener = nullptr) = 0; @@ -969,10 +977,10 @@ index f433b064f..80bfdacb2 100644 * \brief Closes wallet. In case operation succeeded, wallet object deleted. in case operation failed, wallet object not deleted * \param wallet previously opened / created wallet instance diff --git a/src/wallet/api/wallet_manager.cpp b/src/wallet/api/wallet_manager.cpp -index 277be6ac9..da2056d8a 100644 +index bd92f7829..4a50ec8cc 100644 --- a/src/wallet/api/wallet_manager.cpp +++ b/src/wallet/api/wallet_manager.cpp -@@ -156,6 +156,15 @@ Wallet *WalletManagerImpl::createWalletFromDevice(const std::string &path, +@@ -152,6 +152,15 @@ Wallet *WalletManagerImpl::createWalletFromDevice(const std::string &path, return wallet; } @@ -989,7 +997,7 @@ index 277be6ac9..da2056d8a 100644 { WalletImpl * wallet_ = dynamic_cast<WalletImpl*>(wallet); diff --git a/src/wallet/api/wallet_manager.h b/src/wallet/api/wallet_manager.h -index a223e1df9..28fcd36c9 100644 +index 45a9f010f..793ac492c 100644 --- a/src/wallet/api/wallet_manager.h +++ b/src/wallet/api/wallet_manager.h @@ -75,6 +75,16 @@ public: @@ -1010,32 +1018,29 @@ index a223e1df9..28fcd36c9 100644 bool walletExists(const std::string &path) override; bool verifyWalletPassword(const std::string &keys_file_name, const std::string &password, bool no_spend_key, uint64_t kdf_rounds = 1) const override; diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp -index a8db99c3f..972310343 100644 +index 131c9cccf..837590c6c 100644 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp -@@ -92,6 +92,7 @@ using namespace epee; +@@ -96,6 +96,7 @@ using namespace epee; #include "device/device_cold.hpp" #include "device_trezor/device_trezor.hpp" #include "net/socks_connect.h" +#include "polyseed/include/polyseed.h" - - extern "C" - { -@@ -1281,7 +1282,8 @@ wallet2::wallet2(network_type nettype, uint64_t kdf_rounds, bool unattended, std - m_enable_multisig(false), - m_pool_info_query_time(0), + #include "carrot_impl/address_device_ram_borrowed.h" + #include "carrot_impl/address_utils.h" + #include "carrot_impl/format_utils.h" +@@ -1288,6 +1289,7 @@ wallet2::wallet2(network_type nettype, uint64_t kdf_rounds, bool unattended, std + m_secondary_pool_info_query_time(0), m_has_ever_refreshed_from_node(false), -- m_allow_mismatched_daemon_version(false) -+ m_allow_mismatched_daemon_version(false), -+ m_polyseed(false) + m_allow_mismatched_daemon_version(false), ++ m_polyseed(false), + m_curve_trees(fcmp_pp::curve_trees::curve_trees_v1()), + m_tree_cache(fcmp_pp::curve_trees::TreeCacheV1(m_curve_trees, m_max_reorg_depth)) { - set_rpc_client_secret_key(rct::rct2sk(rct::skGen())); - } -@@ -1486,6 +1488,20 @@ bool wallet2::get_seed(epee::wipeable_string& electrum_words, const epee::wipeab +@@ -1493,6 +1495,19 @@ bool wallet2::get_seed(epee::wipeable_string& electrum_words, const epee::wipeab return true; } //---------------------------------------------------------------------------------------------------- -+ +bool wallet2::get_polyseed(epee::wipeable_string& polyseed, epee::wipeable_string& passphrase) const +{ + if (!m_polyseed) { @@ -1051,8 +1056,8 @@ index a8db99c3f..972310343 100644 +//---------------------------------------------------------------------------------------------------- bool wallet2::get_multisig_seed(epee::wipeable_string& seed, const epee::wipeable_string &passphrase) const { - bool ready; -@@ -4877,6 +4893,9 @@ boost::optional<wallet2::keys_file_data> wallet2::get_keys_file_data(const crypt + const multisig::multisig_account_status ms_status{get_multisig_status()}; +@@ -5110,6 +5125,9 @@ boost::optional<wallet2::keys_file_data> wallet2::get_keys_file_data(const crypt value2.SetInt(m_enable_multisig ? 1 : 0); json.AddMember("enable_multisig", value2, json.GetAllocator()); @@ -1062,7 +1067,7 @@ index a8db99c3f..972310343 100644 if (m_background_sync_type == BackgroundSyncCustomPassword && !background_keys_file && m_custom_background_key) { value.SetString(reinterpret_cast<const char*>(m_custom_background_key.get().data()), m_custom_background_key.get().size()); -@@ -5116,6 +5135,7 @@ bool wallet2::load_keys_buf(const std::string& keys_buf, const epee::wipeable_st +@@ -5343,6 +5361,7 @@ bool wallet2::load_keys_buf(const std::string& keys_buf, const epee::wipeable_st m_enable_multisig = false; m_allow_mismatched_daemon_version = false; m_custom_background_key = boost::none; @@ -1070,7 +1075,7 @@ index a8db99c3f..972310343 100644 } else if(json.IsObject()) { -@@ -5356,6 +5376,9 @@ bool wallet2::load_keys_buf(const std::string& keys_buf, const epee::wipeable_st +@@ -5569,6 +5588,9 @@ bool wallet2::load_keys_buf(const std::string& keys_buf, const epee::wipeable_st GET_FIELD_FROM_JSON_RETURN_ON_ERROR(json, background_sync_type, BackgroundSyncType, Int, false, BackgroundSyncOff); m_background_sync_type = field_background_sync_type; @@ -1080,7 +1085,7 @@ index a8db99c3f..972310343 100644 // Load encryption key used to encrypt background cache crypto::chacha_key custom_background_key; m_custom_background_key = boost::none; -@@ -5675,6 +5698,48 @@ void wallet2::init_type(hw::device::device_type device_type) +@@ -5900,6 +5922,48 @@ void wallet2::init_type(hw::device::device_type device_type) m_key_device_type = device_type; } @@ -1129,7 +1134,7 @@ index a8db99c3f..972310343 100644 /*! * \brief Generates a wallet or restores one. Assumes the multisig setup * has already completed for the provided multisig info. -@@ -5802,7 +5867,7 @@ crypto::secret_key wallet2::generate(const std::string& wallet_, const epee::wip +@@ -6027,7 +6091,7 @@ crypto::secret_key wallet2::generate(const std::string& wallet_, const epee::wip return retval; } @@ -1138,7 +1143,7 @@ index a8db99c3f..972310343 100644 { // -1 month for fluctuations in block time and machine date/time setup. // avg seconds per block -@@ -5826,7 +5891,7 @@ crypto::secret_key wallet2::generate(const std::string& wallet_, const epee::wip +@@ -6051,7 +6115,7 @@ crypto::secret_key wallet2::generate(const std::string& wallet_, const epee::wip // the daemon is currently syncing. // If we use the approximate height we subtract one month as // a safety margin. @@ -1147,7 +1152,7 @@ index a8db99c3f..972310343 100644 uint64_t target_height = get_daemon_blockchain_target_height(err); if (err.empty()) { if (target_height < height) -@@ -13661,7 +13726,7 @@ uint64_t wallet2::get_daemon_blockchain_target_height(string &err) +@@ -13293,7 +13357,7 @@ uint64_t wallet2::get_daemon_blockchain_target_height(string &err) return target_height; } @@ -1156,7 +1161,7 @@ index a8db99c3f..972310343 100644 { // time of v2 fork const time_t fork_time = m_nettype == TESTNET ? 1448285909 : m_nettype == STAGENET ? 1520937818 : 1458748658; -@@ -13670,7 +13735,7 @@ uint64_t wallet2::get_approximate_blockchain_height() const +@@ -13302,7 +13366,7 @@ uint64_t wallet2::get_approximate_blockchain_height() const // avg seconds per block const int seconds_per_block = DIFFICULTY_TARGET_V2; // Calculated blockchain height @@ -1165,7 +1170,7 @@ index a8db99c3f..972310343 100644 // testnet and stagenet got some huge rollbacks, so the estimation is way off static const uint64_t approximate_rolled_back_blocks = m_nettype == TESTNET ? 342100 : m_nettype == STAGENET ? 60000 : 30000; if ((m_nettype == TESTNET || m_nettype == STAGENET) && approx_blockchain_height > approximate_rolled_back_blocks) -@@ -15796,15 +15861,6 @@ bool wallet2::parse_uri(const std::string &uri, std::string &address, std::strin +@@ -15363,15 +15427,6 @@ bool wallet2::parse_uri(const std::string &uri, std::string &address, std::strin //---------------------------------------------------------------------------------------------------- uint64_t wallet2::get_blockchain_height_by_date(uint16_t year, uint8_t month, uint8_t day) { @@ -1181,7 +1186,7 @@ index a8db99c3f..972310343 100644 std::tm date = { 0, 0, 0, 0, 0, 0, 0, 0 }; date.tm_year = year - 1900; date.tm_mon = month - 1; -@@ -15813,7 +15869,23 @@ uint64_t wallet2::get_blockchain_height_by_date(uint16_t year, uint8_t month, ui +@@ -15380,7 +15435,23 @@ uint64_t wallet2::get_blockchain_height_by_date(uint16_t year, uint8_t month, ui { throw std::runtime_error("month or day out of range"); } @@ -1206,18 +1211,18 @@ index a8db99c3f..972310343 100644 uint64_t height_min = 0; uint64_t height_max = get_daemon_blockchain_height(err) - 1; diff --git a/src/wallet/wallet2.h b/src/wallet/wallet2.h -index 18e60d89a..419272a54 100644 +index e7dfd0ddf..1cd72edfb 100644 --- a/src/wallet/wallet2.h +++ b/src/wallet/wallet2.h -@@ -72,6 +72,7 @@ +@@ -76,6 +76,7 @@ + #include "common/password.h" + #include "node_rpc_proxy.h" #include "message_store.h" - #include "wallet_light_rpc.h" - #include "wallet_rpc_helpers.h" +#include "polyseed/polyseed.hpp" + #include "fee_priority.h" + #include "fee_algorithm.h" - #undef MONERO_DEFAULT_LOG_CATEGORY - #define MONERO_DEFAULT_LOG_CATEGORY "wallet.wallet2" -@@ -921,6 +922,20 @@ private: +@@ -402,6 +403,20 @@ private: void generate(const std::string& wallet_, const epee::wipeable_string& password, const epee::wipeable_string& multisig_data, bool create_address_file = false); @@ -1238,10 +1243,10 @@ index 18e60d89a..419272a54 100644 /*! * \brief Generates a wallet or restores one. * \param wallet_ Name of wallet file -@@ -1095,6 +1110,15 @@ private: +@@ -598,6 +613,14 @@ private: + */ bool is_deterministic() const; bool get_seed(epee::wipeable_string& electrum_words, const epee::wipeable_string &passphrase = epee::wipeable_string()) const; - + /*! + * \brief get_polyseed Gets the polyseed (if available) and passphrase (if set) needed to recover the wallet. + * @param seed Polyseed mnemonic phrase @@ -1250,11 +1255,10 @@ index 18e60d89a..419272a54 100644 + * Note: both the mnemonic phrase and the passphrase are needed to recover the wallet + */ + bool get_polyseed(epee::wipeable_string& seed, epee::wipeable_string &passphrase) const; -+ + /*! - * \brief Checks if light wallet. A light wallet sends view key to a server where the blockchain is scanned. - */ -@@ -1570,8 +1594,8 @@ private: + * \brief Gets the seed language +@@ -1130,8 +1153,8 @@ private: /*! * \brief Calculates the approximate blockchain height from current date/time. */ @@ -1265,7 +1269,7 @@ index 18e60d89a..419272a54 100644 std::vector<size_t> select_available_outputs_from_histogram(uint64_t count, bool atleast, bool unlocked, bool allow_rct); std::vector<size_t> select_available_outputs(const std::function<bool(const transfer_details &td)> &f); std::vector<size_t> select_available_unmixable_outputs(); -@@ -1665,6 +1689,7 @@ private: +@@ -1225,6 +1248,7 @@ private: 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); uint64_t get_blockchain_height_by_date(uint16_t year, uint8_t month, uint8_t day); // 1<=month<=12, 1<=day<=31 @@ -1273,7 +1277,7 @@ index 18e60d89a..419272a54 100644 bool is_synced(); -@@ -2011,6 +2036,7 @@ private: +@@ -1606,6 +1630,7 @@ private: std::string seed_language; /*!< Language of the mnemonics (seed). */ bool is_old_file_format; /*!< Whether the wallet file is of an old file format */ bool m_watch_only; /*!< no spend key */ @@ -1282,5 +1286,5 @@ index 18e60d89a..419272a54 100644 uint32_t m_multisig_threshold; std::vector<crypto::public_key> m_multisig_signers; -- -2.50.1 (Apple Git-155) +2.51.0 |
