diff --git a/patches/salvium/0005-UR-functions.patch b/patches/salvium/0005-UR-functions.patch index fd8f86d..656cf87 100644 --- a/patches/salvium/0005-UR-functions.patch +++ b/patches/salvium/0005-UR-functions.patch @@ -99,8 +99,8 @@ index 6095f99d5..b163212b7 100644 rpc_base + bc-ur multisig + carrot_impl common - cryptonote_core diff --git a/src/wallet/api/pending_transaction.cpp b/src/wallet/api/pending_transaction.cpp index 70a702796..9c3c26ee5 100644 --- a/src/wallet/api/pending_transaction.cpp @@ -815,7 +815,7 @@ index b827b826f..765cefb32 100644 if (unused_dust_indices_per_subaddr.empty()) unused_dust_indices_per_subaddr.push_back({}); @@ -13742,33 +13775,40 @@ crypto::public_key wallet2::get_tx_pub_key_from_received_outs(const tools::walle - + //---------------------------------------------------------------------------------------------------- bool wallet2::export_key_images(const std::string &filename, bool all) const { - PERF_TIMER(export_key_images); diff --git a/patches/salvium/0007-polyseed.patch b/patches/salvium/0007-polyseed.patch index 45c5ee7..2ac605e 100644 --- a/patches/salvium/0007-polyseed.patch +++ b/patches/salvium/0007-polyseed.patch @@ -59,10 +59,10 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt index 5c0f31cb8..f0630ef9b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -371,6 +371,8 @@ if(NOT MANUAL_SUBMODULES) - check_submodule(external/trezor-common) +@@ -372,6 +372,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() @@ -72,8 +72,8 @@ index 5c0f31cb8..f0630ef9b 100644 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) @@ -157,8 +157,8 @@ index 3335d3c21..06b708cf0 100644 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 --- a/src/cryptonote_basic/CMakeLists.txt @@ -1018,9 +1018,9 @@ index 765cefb32..806de969a 100644 #include "device_trezor/device_trezor.hpp" #include "net/socks_connect.h" +#include "polyseed/include/polyseed.h" + #include "carrot_impl/format_utils.h" + #include "tx_builder.h" - extern "C" - { @@ -1273,7 +1274,8 @@ wallet2::wallet2(network_type nettype, uint64_t kdf_rounds, bool unattended, std m_send_change_back_to_subaddress(false), m_pool_info_query_time(0), @@ -1051,7 +1051,7 @@ index 765cefb32..806de969a 100644 +//---------------------------------------------------------------------------------------------------- bool wallet2::get_multisig_seed(epee::wipeable_string& seed, const epee::wipeable_string &passphrase) const { - bool ready; + const multisig::multisig_account_status ms_status{get_multisig_status()}; @@ -5313,6 +5329,9 @@ boost::optional wallet2::get_keys_file_data(const crypt value2.SetInt(m_enable_multisig ? 1 : 0); json.AddMember("enable_multisig", value2, json.GetAllocator()); diff --git a/patches/salvium/0008-coin-control.patch b/patches/salvium/0008-coin-control.patch index a0fd8e1..abd8597 100644 --- a/patches/salvium/0008-coin-control.patch +++ b/patches/salvium/0008-coin-control.patch @@ -974,22 +974,14 @@ index 806de969a..8720e18b1 100644 size_t wallet2::get_transfer_details(const crypto::key_image &ki) const { for (size_t idx = 0; idx < m_transfers.size(); ++idx) -@@ -2879,6 +2900,7 @@ void wallet2::process_new_transaction(const crypto::hash &txid, const cryptonote - uint64_t amount = tx.vout[o].amount ? tx.vout[o].amount : tx_scan_info[o].amount; - if (!pool) - { -+ boost::unique_lock lock(m_transfers_mutex); - std::string asset_type = ""; - THROW_WALLET_EXCEPTION_IF(!cryptonote::get_output_asset_type(tx.vout[o], asset_type), error::wallet_internal_error, "failed to get output_asset_type"); - m_transfers.push_back(transfer_details{}); -@@ -3037,6 +3059,7 @@ void wallet2::process_new_transaction(const crypto::hash &txid, const cryptonote - uint64_t extra_amount = amount - burnt; - if (!pool) - { -+ boost::unique_lock lock(m_transfers_mutex); - transfer_details &td = m_transfers[kit->second]; - td.m_block_height = height; - td.m_internal_output_index = o; +@@ -3037,6 +3059,7 @@ void wallet2::process_new_scanned_transaction(const crypto::hash &txid, const cryp + expand_subaddresses(subaddr_index_cn); + + // update m_transfers view-incoming scan info, and default values ++ boost::unique_lock lock(m_transfers_mutex); + transfer_details& td = tools::add_element(m_transfers); + td.m_block_height = height; + td.m_internal_output_index = local_output_index; @@ -11031,7 +11054,7 @@ void wallet2::transfer_selected_rct(std::vector wallet2::create_transactions_all(uint64_t below, cryptonote::transaction_type tx_type, const std::string &asset_type, const cryptonote::account_public_address &address, bool is_subaddress, const size_t outputs, const size_t fake_outs_count, const uint64_t unlock_time, uint32_t priority, const std::vector& extra, uint32_t subaddr_account, std::set subaddr_indices) +std::vector wallet2::create_transactions_all(uint64_t below, cryptonote::transaction_type tx_type, const std::string &asset_type, const cryptonote::account_public_address &address, bool is_subaddress, const size_t outputs, const size_t fake_outs_count, const uint64_t unlock_time, uint32_t priority, const std::vector& extra, uint32_t subaddr_account, std::set subaddr_indices, const std::vector& preferred_input_list) { - std::vector unused_transfers_indices; - std::vector unused_dust_indices; + const bool do_carrot_tx_construction = use_fork_rules(HF_VERSION_CARROT); + if (do_carrot_tx_construction) @@ -12056,7 +12091,10 @@ std::vector wallet2::create_transactions_all(uint64_t below for (const auto& i: m_transfers_indices[asset_type]) { @@ -1126,8 +1118,8 @@ index a619bdd15..4f324c238 100644 - std::vector pick_preferred_rct_inputs(uint64_t needed_money, uint32_t subaddr_account, const std::set &subaddr_indices, const std::string& asset_type); + std::vector pick_preferred_rct_inputs(uint64_t needed_money, uint32_t subaddr_account, const std::set &subaddr_indices, const std::string& asset_type, const std::vector& preferred_input_list); void set_spent(size_t idx, uint64_t height); + void set_spent(const crypto::key_image &ki, const uint64_t height); void set_unspent(size_t idx); - bool is_spent(const transfer_details &td, bool strict = true) const; -- 2.48.1 diff --git a/salvium b/salvium index 1f49c17..98e2de2 160000 --- a/salvium +++ b/salvium @@ -1 +1 @@ -Subproject commit 1f49c178ee19f55088c85be40215a12183b4ef02 +Subproject commit 98e2de2176d50dd85e733e3acfbf73129b31b92d