diff options
author | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2017-08-12 12:58:20 +0100 |
---|---|---|
committer | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2017-08-12 12:59:06 +0100 |
commit | 8655ba04bab0489092a7206524526da96c1a6af3 (patch) | |
tree | abf1aeb8e082cde5ae3f592d6300d6de6e88d378 | |
parent | Merge pull request #2271 (diff) | |
download | monero-8655ba04bab0489092a7206524526da96c1a6af3.tar.xz |
wallet_rpc_server: adjust small ring sizes to 5 for v6
-rw-r--r-- | src/wallet/wallet_rpc_server.cpp | 28 | ||||
-rw-r--r-- | src/wallet/wallet_rpc_server.h | 1 |
2 files changed, 18 insertions, 11 deletions
diff --git a/src/wallet/wallet_rpc_server.cpp b/src/wallet/wallet_rpc_server.cpp index f014c573a..2a2c10e8b 100644 --- a/src/wallet/wallet_rpc_server.cpp +++ b/src/wallet/wallet_rpc_server.cpp @@ -227,6 +227,19 @@ namespace tools return false; } //------------------------------------------------------------------------------------------------------------------------------ + uint64_t wallet_rpc_server::adjust_mixin(uint64_t mixin) + { + if (mixin < 4 && m_wallet->use_fork_rules(6, 10)) { + MWARNING("Requested ring size " << (mixin + 1) << " too low for hard fork 6, using 5"); + mixin = 4; + } + else if (mixin < 2 && m_wallet->use_fork_rules(2, 10)) { + MWARNING("Requested ring size " << (mixin + 1) << " too low for hard fork 2, using 3"); + mixin = 2; + } + return mixin; + } + //------------------------------------------------------------------------------------------------------------------------------ void wallet_rpc_server::fill_transfer_entry(tools::wallet_rpc::transfer_entry &entry, const crypto::hash &txid, const crypto::hash &payment_id, const tools::wallet2::payment_details &pd) { entry.txid = string_tools::pod_to_hex(pd.m_tx_hash); @@ -454,11 +467,7 @@ namespace tools try { - uint64_t mixin = req.mixin; - if (mixin < 2 && m_wallet->use_fork_rules(2, 10)) { - LOG_PRINT_L1("Requested ring size " << (req.mixin + 1) << " too low for hard fork 2, using 3"); - mixin = 2; - } + uint64_t mixin = adjust_mixin(req.mixin); std::vector<wallet2::pending_tx> ptx_vector = m_wallet->create_transactions_2(dsts, mixin, req.unlock_time, req.priority, extra, m_trusted_daemon); // reject proposed transactions if there are more than one. see on_transfer_split below. @@ -531,12 +540,8 @@ namespace tools try { - uint64_t mixin = req.mixin; + uint64_t mixin = adjust_mixin(req.mixin); uint64_t ptx_amount; - if (mixin < 2 && m_wallet->use_fork_rules(2, 10)) { - LOG_PRINT_L1("Requested ring size " << (req.mixin + 1) << " too low for hard fork 2, using 3"); - mixin = 2; - } std::vector<wallet2::pending_tx> ptx_vector; LOG_PRINT_L2("on_transfer_split calling create_transactions_2"); ptx_vector = m_wallet->create_transactions_2(dsts, mixin, req.unlock_time, req.priority, extra, m_trusted_daemon); @@ -678,7 +683,8 @@ namespace tools try { - std::vector<wallet2::pending_tx> ptx_vector = m_wallet->create_transactions_all(req.below_amount, dsts[0].addr, req.mixin, req.unlock_time, req.priority, extra, m_trusted_daemon); + uint64_t mixin = adjust_mixin(req.mixin); + std::vector<wallet2::pending_tx> ptx_vector = m_wallet->create_transactions_all(req.below_amount, dsts[0].addr, mixin, req.unlock_time, req.priority, extra, m_trusted_daemon); if (!req.do_not_relay) m_wallet->commit_tx(ptx_vector); diff --git a/src/wallet/wallet_rpc_server.h b/src/wallet/wallet_rpc_server.h index 68e4c049a..dd54222b0 100644 --- a/src/wallet/wallet_rpc_server.h +++ b/src/wallet/wallet_rpc_server.h @@ -150,6 +150,7 @@ namespace tools void fill_transfer_entry(tools::wallet_rpc::transfer_entry &entry, const crypto::hash &txid, const tools::wallet2::unconfirmed_transfer_details &pd); void fill_transfer_entry(tools::wallet_rpc::transfer_entry &entry, const crypto::hash &payment_id, const tools::wallet2::payment_details &pd); bool not_open(epee::json_rpc::error& er); + uint64_t adjust_mixin(uint64_t mixin); wallet2 *m_wallet; std::string m_wallet_dir; |