wallet: more user friendly print_ring
It can now take a txid (to display rings for all its inputs), and will print rings in a format that set_ring understands
This commit is contained in:
@@ -1971,6 +1971,30 @@ bool WalletImpl::getRing(const std::string &key_image, std::vector<uint64_t> &ri
|
||||
return true;
|
||||
}
|
||||
|
||||
bool WalletImpl::getRings(const std::string &txid, std::vector<std::pair<std::string, std::vector<uint64_t>>> &rings) const
|
||||
{
|
||||
crypto::hash raw_txid;
|
||||
if (!epee::string_tools::hex_to_pod(txid, raw_txid))
|
||||
{
|
||||
m_status = Status_Error;
|
||||
m_errorString = tr("Failed to parse txid");
|
||||
return false;
|
||||
}
|
||||
std::vector<std::pair<crypto::key_image, std::vector<uint64_t>>> raw_rings;
|
||||
bool ret = m_wallet->get_rings(raw_txid, raw_rings);
|
||||
if (!ret)
|
||||
{
|
||||
m_status = Status_Error;
|
||||
m_errorString = tr("Failed to get rings");
|
||||
return false;
|
||||
}
|
||||
for (const auto &r: raw_rings)
|
||||
{
|
||||
rings.push_back(std::make_pair(epee::string_tools::pod_to_hex(r.first), r.second));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool WalletImpl::setRing(const std::string &key_image, const std::vector<uint64_t> &ring, bool relative)
|
||||
{
|
||||
crypto::key_image raw_key_image;
|
||||
|
||||
@@ -166,6 +166,7 @@ public:
|
||||
virtual bool blackballOutputs(const std::vector<std::string> &pubkeys, bool add);
|
||||
virtual bool unblackballOutput(const std::string &pubkey);
|
||||
virtual bool getRing(const std::string &key_image, std::vector<uint64_t> &ring) const;
|
||||
virtual bool getRings(const std::string &txid, std::vector<std::pair<std::string, std::vector<uint64_t>>> &rings) const;
|
||||
virtual bool setRing(const std::string &key_image, const std::vector<uint64_t> &ring, bool relative);
|
||||
virtual void segregatePreForkOutputs(bool segregate);
|
||||
virtual void segregationHeight(uint64_t height);
|
||||
|
||||
@@ -766,6 +766,9 @@ struct Wallet
|
||||
//! gets the ring used for a key image, if any
|
||||
virtual bool getRing(const std::string &key_image, std::vector<uint64_t> &ring) const = 0;
|
||||
|
||||
//! gets the rings used for a txid, if any
|
||||
virtual bool getRings(const std::string &txid, std::vector<std::pair<std::string, std::vector<uint64_t>>> &rings) const = 0;
|
||||
|
||||
//! sets the ring used for a key image
|
||||
virtual bool setRing(const std::string &key_image, const std::vector<uint64_t> &ring, bool relative) = 0;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user