wallet2: enable the mitigation only after the fork height

release-v0.2.1.0
stoffu 6 years ago committed by wowario
parent c455bbf413
commit 3f5e731d31
No known key found for this signature in database
GPG Key ID: 24DCBE762DE9C111

@ -5796,6 +5796,7 @@ void wallet2::get_outs(std::vector<std::vector<tools::wallet2::get_outs_entry>>
boost::optional<std::string> result = m_node_rpc_proxy.get_height(height); boost::optional<std::string> result = m_node_rpc_proxy.get_height(height);
throw_on_rpc_response_error(result, "get_info"); throw_on_rpc_response_error(result, "get_info");
bool is_shortly_after_segregation_fork = height >= segregation_fork_height && height < segregation_fork_height + SEGREGATION_FORK_VICINITY; bool is_shortly_after_segregation_fork = height >= segregation_fork_height && height < segregation_fork_height + SEGREGATION_FORK_VICINITY;
bool is_after_segregation_fork = height >= segregation_fork_height;
// get histogram for the amounts we need // get histogram for the amounts we need
cryptonote::COMMAND_RPC_GET_OUTPUT_HISTOGRAM::request req_t = AUTO_VAL_INIT(req_t); cryptonote::COMMAND_RPC_GET_OUTPUT_HISTOGRAM::request req_t = AUTO_VAL_INIT(req_t);
@ -5816,7 +5817,7 @@ void wallet2::get_outs(std::vector<std::vector<tools::wallet2::get_outs_entry>>
// if we want to segregate fake outs pre or post fork, get distribution // if we want to segregate fake outs pre or post fork, get distribution
std::unordered_map<uint64_t, std::pair<uint64_t, uint64_t>> segregation_limit; std::unordered_map<uint64_t, std::pair<uint64_t, uint64_t>> segregation_limit;
if (m_segregate_pre_fork_outputs || m_key_reuse_mitigation2) if (is_after_segregation_fork && (m_segregate_pre_fork_outputs || m_key_reuse_mitigation2))
{ {
cryptonote::COMMAND_RPC_GET_OUTPUT_DISTRIBUTION::request req_t = AUTO_VAL_INIT(req_t); cryptonote::COMMAND_RPC_GET_OUTPUT_DISTRIBUTION::request req_t = AUTO_VAL_INIT(req_t);
cryptonote::COMMAND_RPC_GET_OUTPUT_DISTRIBUTION::response resp_t = AUTO_VAL_INIT(resp_t); cryptonote::COMMAND_RPC_GET_OUTPUT_DISTRIBUTION::response resp_t = AUTO_VAL_INIT(resp_t);
@ -5883,7 +5884,7 @@ void wallet2::get_outs(std::vector<std::vector<tools::wallet2::get_outs_entry>>
float pre_fork_num_out_ratio = 0.0f; float pre_fork_num_out_ratio = 0.0f;
float post_fork_num_out_ratio = 0.0f; float post_fork_num_out_ratio = 0.0f;
if (m_segregate_pre_fork_outputs && output_is_pre_fork) if (is_after_segregation_fork && m_segregate_pre_fork_outputs && output_is_pre_fork)
{ {
num_outs = segregation_limit[amount].first; num_outs = segregation_limit[amount].first;
num_recent_outs = segregation_limit[amount].second; num_recent_outs = segregation_limit[amount].second;
@ -5903,7 +5904,7 @@ void wallet2::get_outs(std::vector<std::vector<tools::wallet2::get_outs_entry>>
break; break;
} }
} }
if (m_key_reuse_mitigation2) if (is_after_segregation_fork && m_key_reuse_mitigation2)
{ {
if (output_is_pre_fork) if (output_is_pre_fork)
{ {
@ -6118,7 +6119,7 @@ void wallet2::get_outs(std::vector<std::vector<tools::wallet2::get_outs_entry>>
uint64_t num_outs = 0; uint64_t num_outs = 0;
const uint64_t amount = td.is_rct() ? 0 : td.amount(); const uint64_t amount = td.is_rct() ? 0 : td.amount();
const bool output_is_pre_fork = td.m_block_height < segregation_fork_height; const bool output_is_pre_fork = td.m_block_height < segregation_fork_height;
if (m_segregate_pre_fork_outputs && output_is_pre_fork) if (is_after_segregation_fork && m_segregate_pre_fork_outputs && output_is_pre_fork)
num_outs = segregation_limit[amount].first; num_outs = segregation_limit[amount].first;
else for (const auto &he: resp_t.histogram) else for (const auto &he: resp_t.histogram)
{ {

Loading…
Cancel
Save