wallet: add input weights to CCoinControl

In order to allow coin selection to take weights from the user,
CCoinControl needs to be able to set and get them.
This commit is contained in:
Andrew Chow 2021-10-05 15:49:06 -04:00
parent e3de7cb903
commit 4060c50d7e

View file

@ -115,9 +115,28 @@ public:
vOutpoints.assign(setSelected.begin(), setSelected.end()); vOutpoints.assign(setSelected.begin(), setSelected.end());
} }
void SetInputWeight(const COutPoint& outpoint, int64_t weight)
{
m_input_weights[outpoint] = weight;
}
bool HasInputWeight(const COutPoint& outpoint) const
{
return m_input_weights.count(outpoint) > 0;
}
int64_t GetInputWeight(const COutPoint& outpoint) const
{
auto it = m_input_weights.find(outpoint);
assert(it != m_input_weights.end());
return it->second;
}
private: private:
std::set<COutPoint> setSelected; std::set<COutPoint> setSelected;
std::map<COutPoint, CTxOut> m_external_txouts; std::map<COutPoint, CTxOut> m_external_txouts;
//! Map of COutPoints to the maximum weight for that input
std::map<COutPoint, int64_t> m_input_weights;
}; };
} // namespace wallet } // namespace wallet