Merge pull request #4260
a54dbaeeblockchain_blackball: add --force-chain-reaction-pass flag (moneromooo-monero)44439c32record blackballs as amount/offset, and add export ability (moneromooo-monero)4bce935bblockchain_blackball: more optimizations (moneromooo-monero)b66ba783blockchain_blackball: do not process duplicate blockchains parts (moneromooo-monero)639a3c01blockchain_blackball: make it clear secondary passes are not incremental (moneromooo-monero)eb8a51beblockchain_blackball: detect spent outputs by partial ring reuse (moneromooo-monero)d6d276c6blockchain_blackball: fix chain reaction phase in incremental mode (moneromooo-monero)2b2a681bblockchain_blackball: avoid false positives for different amounts (moneromooo-monero)80e4fef3blockchain_blackball: set transaction looping txn to read only (moneromooo-monero)4801d6b5blockchain_blackball: add stats (moneromooo-monero)846190fdblockchain_blackball: support pre-v2 databases (moneromooo-monero)daa6cc7dblockchain_blackball: use LMDB for the cache (moneromooo-monero)50cb370dringdb: allow blackballing many outputs at once (moneromooo-monero)
This commit is contained in:
@@ -6341,7 +6341,7 @@ bool wallet2::find_and_save_rings(bool force)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool wallet2::blackball_output(const crypto::public_key &output)
|
||||
bool wallet2::blackball_output(const std::pair<uint64_t, uint64_t> &output)
|
||||
{
|
||||
if (!m_ringdb)
|
||||
return false;
|
||||
@@ -6349,7 +6349,7 @@ bool wallet2::blackball_output(const crypto::public_key &output)
|
||||
catch (const std::exception &e) { return false; }
|
||||
}
|
||||
|
||||
bool wallet2::set_blackballed_outputs(const std::vector<crypto::public_key> &outputs, bool add)
|
||||
bool wallet2::set_blackballed_outputs(const std::vector<std::pair<uint64_t, uint64_t>> &outputs, bool add)
|
||||
{
|
||||
if (!m_ringdb)
|
||||
return false;
|
||||
@@ -6358,14 +6358,13 @@ bool wallet2::set_blackballed_outputs(const std::vector<crypto::public_key> &out
|
||||
bool ret = true;
|
||||
if (!add)
|
||||
ret &= m_ringdb->clear_blackballs();
|
||||
for (const auto &output: outputs)
|
||||
ret &= m_ringdb->blackball(output);
|
||||
ret &= m_ringdb->blackball(outputs);
|
||||
return ret;
|
||||
}
|
||||
catch (const std::exception &e) { return false; }
|
||||
}
|
||||
|
||||
bool wallet2::unblackball_output(const crypto::public_key &output)
|
||||
bool wallet2::unblackball_output(const std::pair<uint64_t, uint64_t> &output)
|
||||
{
|
||||
if (!m_ringdb)
|
||||
return false;
|
||||
@@ -6373,7 +6372,7 @@ bool wallet2::unblackball_output(const crypto::public_key &output)
|
||||
catch (const std::exception &e) { return false; }
|
||||
}
|
||||
|
||||
bool wallet2::is_output_blackballed(const crypto::public_key &output) const
|
||||
bool wallet2::is_output_blackballed(const std::pair<uint64_t, uint64_t> &output) const
|
||||
{
|
||||
if (!m_ringdb)
|
||||
return false;
|
||||
@@ -6418,8 +6417,8 @@ bool wallet2::tx_add_fake_output(std::vector<std::vector<tools::wallet2::get_out
|
||||
CHECK_AND_ASSERT_MES(!outs.empty(), false, "internal error: outs is empty");
|
||||
if (std::find(outs.back().begin(), outs.back().end(), item) != outs.back().end()) // don't add duplicates
|
||||
return false;
|
||||
if (is_output_blackballed(output_public_key)) // don't add blackballed outputs
|
||||
return false;
|
||||
// if (is_output_blackballed(output_public_key)) // don't add blackballed outputs
|
||||
// return false;
|
||||
outs.back().push_back(item);
|
||||
return true;
|
||||
}
|
||||
@@ -6916,6 +6915,8 @@ void wallet2::get_outs(std::vector<std::vector<tools::wallet2::get_outs_entry>>
|
||||
|
||||
if (seen_indices.count(i))
|
||||
continue;
|
||||
if (is_output_blackballed(std::make_pair(amount, i))) // don't add blackballed outputs
|
||||
continue;
|
||||
seen_indices.emplace(i);
|
||||
|
||||
LOG_PRINT_L2("picking " << i << " as " << type);
|
||||
|
||||
Reference in New Issue
Block a user