diff options
| author | Czarek Nakamoto <cyjan@mrcyjanek.net> | 2024-03-27 16:34:28 +0100 |
|---|---|---|
| committer | Czarek Nakamoto <cyjan@mrcyjanek.net> | 2024-03-27 16:34:28 +0100 |
| commit | 0f206f4bc1ace14289d24df49a54f25c927e2d06 (patch) | |
| tree | 8877b426f20ae314195d7125a2722dc04b1a3888 /patches/wownero/0004-coin-control.patch | |
| parent | 04d02626863144a69caf5c821502c91093b7de58 (diff) | |
fixed coin control patch for wownero
Diffstat (limited to 'patches/wownero/0004-coin-control.patch')
| -rw-r--r-- | patches/wownero/0004-coin-control.patch | 257 |
1 files changed, 132 insertions, 125 deletions
diff --git a/patches/wownero/0004-coin-control.patch b/patches/wownero/0004-coin-control.patch index 1a7d08c..45ed9d8 100644 --- a/patches/wownero/0004-coin-control.patch +++ b/patches/wownero/0004-coin-control.patch @@ -1,25 +1,128 @@ -From bb9282a07934c0d4c389e6e10971f5e6f9f563b7 Mon Sep 17 00:00:00 2001 +From 1d12f355eeeba80930f38d398c758154d2d4c340 Mon Sep 17 00:00:00 2001 From: Czarek Nakamoto <cyjan@mrcyjanek.net> -Date: Wed, 27 Mar 2024 14:33:07 +0100 -Subject: [PATCH] coin control +Date: Wed, 27 Mar 2024 16:31:36 +0100 +Subject: [PATCH 4/4] coin control --- - src/wallet/api/wallet.cpp | 5 +++-- - src/wallet/api/wallet2_api.h | 3 +++ - src/wallet/wallet2.cpp | 21 +++++++++++++++++++++ - src/wallet/wallet2.h | 3 +++ - src/wallet/api/coins.cpp | - 4 files changed, 29 insertions(+), 2 deletions(-) + src/wallet/api/coins.cpp | 62 ++++++++++++++++++++++++++++++++++++ + src/wallet/api/coins.h | 4 +++ + src/wallet/api/wallet.cpp | 4 +-- + src/wallet/api/wallet2_api.h | 3 ++ + src/wallet/wallet2.cpp | 22 +++++++++++++ + src/wallet/wallet2.h | 4 +++ + 6 files changed, 97 insertions(+), 2 deletions(-) +diff --git a/src/wallet/api/coins.cpp b/src/wallet/api/coins.cpp +index fe54b82cf..5ce69b5b9 100644 +--- a/src/wallet/api/coins.cpp ++++ b/src/wallet/api/coins.cpp +@@ -90,6 +90,26 @@ namespace Monero { + } + } + ++ void CoinsImpl::setFrozen(std::string public_key) ++ { ++ crypto::public_key pk; ++ if (!epee::string_tools::hex_to_pod(public_key, pk)) ++ { ++ LOG_ERROR("Invalid public key: " << public_key); ++ return; ++ } ++ ++ try ++ { ++ m_wallet->m_wallet->freeze(pk); ++ refresh(); ++ } ++ catch (const std::exception& e) ++ { ++ LOG_ERROR("setFrozen: " << e.what()); ++ } ++ } ++ + void CoinsImpl::setFrozen(int index) + { + try +@@ -103,6 +123,26 @@ namespace Monero { + } + } + ++ void CoinsImpl::thaw(std::string public_key) ++ { ++ crypto::public_key pk; ++ if (!epee::string_tools::hex_to_pod(public_key, pk)) ++ { ++ LOG_ERROR("Invalid public key: " << public_key); ++ return; ++ } ++ ++ try ++ { ++ m_wallet->m_wallet->thaw(pk); ++ refresh(); ++ } ++ catch (const std::exception& e) ++ { ++ LOG_ERROR("thaw: " << e.what()); ++ } ++ } ++ + void CoinsImpl::thaw(int index) + { + try +@@ -120,4 +160,26 @@ namespace Monero { + return m_wallet->m_wallet->is_transfer_unlocked(unlockTime, blockHeight); + } + ++ void CoinsImpl::setDescription(const std::string &public_key, const std::string &description) ++ { ++ crypto::public_key pk; ++ if (!epee::string_tools::hex_to_pod(public_key, pk)) ++ { ++ LOG_ERROR("Invalid public key: " << public_key); ++ return; ++ } ++ ++ try ++ { ++ const size_t index = m_wallet->m_wallet->get_transfer_details(pk); ++ const tools::wallet2::transfer_details &td = m_wallet->m_wallet->get_transfer_details(index); ++ m_wallet->m_wallet->set_tx_note(td.m_txid, description); ++ refresh(); ++ } ++ catch (const std::exception& e) ++ { ++ LOG_ERROR("setDescription: " << e.what()); ++ } ++ } ++ + } // namespace +diff --git a/src/wallet/api/coins.h b/src/wallet/api/coins.h +index 3293d8ae9..bcd8b517f 100644 +--- a/src/wallet/api/coins.h ++++ b/src/wallet/api/coins.h +@@ -18,11 +18,15 @@ namespace Monero { + std::vector<CoinsInfo*> getAll() const override; + void refresh() override; + ++ void setFrozen(std::string public_key) override; + void setFrozen(int index) override; ++ void thaw(std::string public_key) override; + void thaw(int index) override; + + bool isTransferUnlocked(uint64_t unlockTime, uint64_t blockHeight) override; + ++ void setDescription(const std::string &public_key, const std::string &description) override; ++ + private: + WalletImpl *m_wallet; + std::vector<CoinsInfo*> m_rows; diff --git a/src/wallet/api/wallet.cpp b/src/wallet/api/wallet.cpp -index 63ed26a11..ca83812f3 100644 +index 63ed26a11..3bbc60d74 100644 --- a/src/wallet/api/wallet.cpp +++ b/src/wallet/api/wallet.cpp -@@ -2016,13 +2016,14 @@ PendingTransaction *WalletImpl::createTransactionMultDest(const std::vector<stri - fake_outs_count = m_wallet->adjust_mixin(mixin_count); - +@@ -2018,11 +2018,11 @@ PendingTransaction *WalletImpl::createTransactionMultDest(const std::vector<stri if (amount) { -+ // (std::vector<cryptonote::tx_destination_entry> dsts, const size_t fake_outs_count, const uint64_t unlock_time, uint32_t priority, const std::vector<uint8_t>& extra, uint32_t subaddr_account, std::set<uint32_t> subaddr_indices, const unique_index_container& subtract_fee_from_outputs, const std::vector<crypto::key_image>& preferred_input_list) transaction->m_pending_tx = m_wallet->create_transactions_2(dsts, fake_outs_count, 0 /* unlock_time */, adjusted_priority, - extra, subaddr_account, subaddr_indices); @@ -33,35 +136,35 @@ index 63ed26a11..ca83812f3 100644 pendingTxPostProcess(transaction); diff --git a/src/wallet/api/wallet2_api.h b/src/wallet/api/wallet2_api.h -index c2fa3d95b..ece303c37 100644 +index c2fa3d95b..99616b025 100644 --- a/src/wallet/api/wallet2_api.h +++ b/src/wallet/api/wallet2_api.h -@@ -352,7 +352,9 @@ struct Coins +@@ -352,9 +352,12 @@ struct Coins virtual CoinsInfo * coin(int index) const = 0; virtual std::vector<CoinsInfo*> getAll() const = 0; virtual void refresh() = 0; + virtual void setFrozen(std::string public_key) = 0; virtual void setFrozen(int index) = 0; -+ virtual void thaw(std::string public_key) = 0; virtual void thaw(int index) = 0; ++ virtual void thaw(std::string public_key) = 0; virtual bool isTransferUnlocked(uint64_t unlockTime, uint64_t blockHeight) = 0; + virtual void setDescription(const std::string &public_key, const std::string &description) = 0; }; struct SubaddressRow { diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp -index 00d9c133e..674126b87 100644 +index 00d9c133e..ae0305d28 100644 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp -@@ -2091,12 +2091,21 @@ bool wallet2::frozen(const multisig_tx_set& txs) const - +@@ -2092,11 +2092,21 @@ bool wallet2::frozen(const multisig_tx_set& txs) const return false; } + //---------------------------------------------------------------------------------------------------- +void wallet2::freeze(const crypto::public_key &pk) +{ + freeze(get_transfer_details(pk)); +} - //---------------------------------------------------------------------------------------------------- ++//---------------------------------------------------------------------------------------------------- void wallet2::freeze(const crypto::key_image &ki) { freeze(get_transfer_details(ki)); @@ -75,7 +178,7 @@ index 00d9c133e..674126b87 100644 void wallet2::thaw(const crypto::key_image &ki) { thaw(get_transfer_details(ki)); -@@ -2107,6 +2116,18 @@ bool wallet2::frozen(const crypto::key_image &ki) const +@@ -2107,6 +2117,18 @@ bool wallet2::frozen(const crypto::key_image &ki) const return frozen(get_transfer_details(ki)); } //---------------------------------------------------------------------------------------------------- @@ -95,18 +198,19 @@ index 00d9c133e..674126b87 100644 { for (size_t idx = 0; idx < m_transfers.size(); ++idx) diff --git a/src/wallet/wallet2.h b/src/wallet/wallet2.h -index 40997cdbb..fd6dd09e3 100644 +index 40997cdbb..6fa955681 100644 --- a/src/wallet/wallet2.h +++ b/src/wallet/wallet2.h -@@ -1562,6 +1562,7 @@ private: +@@ -1562,6 +1562,8 @@ private: uint64_t get_num_rct_outputs(); size_t get_num_transfer_details() const { return m_transfers.size(); } const transfer_details &get_transfer_details(size_t idx) const; + size_t get_transfer_details(const crypto::public_key &pk) const; ++ uint8_t get_current_hard_fork(); void get_hard_fork_info(uint8_t version, uint64_t &earliest_height); -@@ -1792,7 +1793,9 @@ private: +@@ -1792,7 +1794,9 @@ private: void freeze(size_t idx); void thaw(size_t idx); bool frozen(size_t idx) const; @@ -116,103 +220,6 @@ index 40997cdbb..fd6dd09e3 100644 void thaw(const crypto::key_image &ki); bool frozen(const crypto::key_image &ki) const; bool frozen(const transfer_details &td) const; -diff --git a/src/wallet/api/coins.cpp b/src/wallet/api/coins.cpp -index fe54b82cf..fdd1c3c7a 100644 ---- a/src/wallet/api/coins.cpp -+++ b/src/wallet/api/coins.cpp -@@ -90,6 +90,26 @@ namespace Monero { - } - } - -+ void CoinsImpl::setFrozen(std::string public_key) -+ { -+ crypto::public_key pk; -+ if (!epee::string_tools::hex_to_pod(public_key, pk)) -+ { -+ LOG_ERROR("Invalid public key: " << public_key); -+ return; -+ } -+ -+ try -+ { -+ m_wallet->m_wallet->freeze(pk); -+ refresh(); -+ } -+ catch (const std::exception& e) -+ { -+ LOG_ERROR("setFrozen: " << e.what()); -+ } -+ } -+ - void CoinsImpl::setFrozen(int index) - { - try -@@ -103,6 +123,27 @@ namespace Monero { - } - } - -+ void CoinsImpl::thaw(std::string public_key) -+ { -+ crypto::public_key pk; -+ if (!epee::string_tools::hex_to_pod(public_key, pk)) -+ { -+ LOG_ERROR("Invalid public key: " << public_key); -+ return; -+ } -+ -+ try -+ { -+ m_wallet->m_wallet->thaw(pk); -+ refresh(); -+ } -+ catch (const std::exception& e) -+ { -+ LOG_ERROR("thaw: " << e.what()); -+ } -+ } -+ -+ -+void CoinsImpl::setDescription(const std::string &public_key, const std::string &description) -+{ -+ crypto::public_key pk; -+ if (!epee::string_tools::hex_to_pod(public_key, pk)) -+ { -+ LOG_ERROR("Invalid public key: " << public_key); -+ return; -+ } -+ -+ try -+ { -+ const size_t index = m_wallet->m_wallet->get_transfer_details(pk); -+ const tools::wallet2::transfer_details &td = m_wallet->m_wallet->get_transfer_details(index); -+ m_wallet->m_wallet->set_tx_note(td.m_txid, description); -+ refresh(); -+ } -+ catch (const std::exception& e) -+ { -+ LOG_ERROR("setDescription: " << e.what()); -+ } -+} -+ - void CoinsImpl::thaw(int index) - { - try -diff --git a/src/wallet/api/coins.h b/src/wallet/api/coins.h -index 3293d8ae9..eb8d54fa6 100644 ---- a/src/wallet/api/coins.h -+++ b/src/wallet/api/coins.h -@@ -19,10 +19,14 @@ namespace Monero { - void refresh() override; - - void setFrozen(int index) override; -+ void setFrozen(std::string public_key) override; - void thaw(int index) override; -+ void thaw(std::string public_key) override; - - bool isTransferUnlocked(uint64_t unlockTime, uint64_t blockHeight) override; - -+ void setDescription(const std::string &public_key, const std::string &description) override; -+ - private: - WalletImpl *m_wallet; - std::vector<CoinsInfo*> m_rows; +-- +2.39.2 + |
