mirror of
https://github.com/jwinterm/wownero.git
synced 2026-11-11 08:33:57 +01:00
wallet: select part of the fake outs from recent outputs
25% of the outputs are selected from the last 5 days (if possible), in order to avoid the common case of sending recently received outputs again. 25% and 5 days are subject to review later, since it's just a wallet level change.
This commit is contained in:
@@ -1236,10 +1236,10 @@ namespace cryptonote
|
||||
return false;
|
||||
}
|
||||
|
||||
std::map<uint64_t, uint64_t> histogram;
|
||||
std::map<uint64_t, std::tuple<uint64_t, uint64_t, uint64_t>> histogram;
|
||||
try
|
||||
{
|
||||
histogram = m_core.get_blockchain_storage().get_output_histogram(req.amounts, req.unlocked);
|
||||
histogram = m_core.get_blockchain_storage().get_output_histogram(req.amounts, req.unlocked, req.recent_cutoff);
|
||||
}
|
||||
catch (const std::exception &e)
|
||||
{
|
||||
@@ -1251,8 +1251,8 @@ namespace cryptonote
|
||||
res.histogram.reserve(histogram.size());
|
||||
for (const auto &i: histogram)
|
||||
{
|
||||
if (i.second >= req.min_count && (i.second <= req.max_count || req.max_count == 0))
|
||||
res.histogram.push_back(COMMAND_RPC_GET_OUTPUT_HISTOGRAM::entry(i.first, i.second));
|
||||
if (std::get<0>(i.second) >= req.min_count && (std::get<0>(i.second) <= req.max_count || req.max_count == 0))
|
||||
res.histogram.push_back(COMMAND_RPC_GET_OUTPUT_HISTOGRAM::entry(i.first, std::get<0>(i.second), std::get<1>(i.second), std::get<2>(i.second)));
|
||||
}
|
||||
|
||||
res.status = CORE_RPC_STATUS_OK;
|
||||
|
||||
@@ -1172,26 +1172,33 @@ namespace cryptonote
|
||||
uint64_t min_count;
|
||||
uint64_t max_count;
|
||||
bool unlocked;
|
||||
uint64_t recent_cutoff;
|
||||
|
||||
BEGIN_KV_SERIALIZE_MAP()
|
||||
KV_SERIALIZE(amounts);
|
||||
KV_SERIALIZE(min_count);
|
||||
KV_SERIALIZE(max_count);
|
||||
KV_SERIALIZE(unlocked);
|
||||
KV_SERIALIZE(recent_cutoff);
|
||||
END_KV_SERIALIZE_MAP()
|
||||
};
|
||||
|
||||
struct entry
|
||||
{
|
||||
uint64_t amount;
|
||||
uint64_t instances;
|
||||
uint64_t total_instances;
|
||||
uint64_t unlocked_instances;
|
||||
uint64_t recent_instances;
|
||||
|
||||
BEGIN_KV_SERIALIZE_MAP()
|
||||
KV_SERIALIZE(amount);
|
||||
KV_SERIALIZE(instances);
|
||||
KV_SERIALIZE(total_instances);
|
||||
KV_SERIALIZE(unlocked_instances);
|
||||
KV_SERIALIZE(recent_instances);
|
||||
END_KV_SERIALIZE_MAP()
|
||||
|
||||
entry(uint64_t amount, uint64_t instances): amount(amount), instances(instances) {}
|
||||
entry(uint64_t amount, uint64_t total_instances, uint64_t unlocked_instances, uint64_t recent_instances):
|
||||
amount(amount), total_instances(total_instances), unlocked_instances(unlocked_instances), recent_instances(recent_instances) {}
|
||||
entry() {}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user