aboutsummaryrefslogtreecommitdiff
path: root/src/cryptonote_core/blockchain_storage.cpp
diff options
context:
space:
mode:
authorRiccardo Spagni <ric@spagni.net>2015-10-26 17:56:39 +0200
committerRiccardo Spagni <ric@spagni.net>2015-10-26 17:56:55 +0200
commitdb68eca0de0949abe2955a8e496431d9be6fea1a (patch)
tree2e2f0edbb088e9e39ddf16008c88f5ede757d397 /src/cryptonote_core/blockchain_storage.cpp
parent4fa8f7402408049c3dbfd9cea98bab8ce16fabaf (diff)
parent43bca0d2f71b8d9c0da19ba5fd00283ebf0b01e4 (diff)
downloadmonzero-core-db68eca0de0949abe2955a8e496431d9be6fea1a.tar.gz
monzero-core-db68eca0de0949abe2955a8e496431d9be6fea1a.tar.xz
monzero-core-db68eca0de0949abe2955a8e496431d9be6fea1a.zip
Merge pull request #442
43bca0d blockchain_utilities: new blockchain_dump diagnostic tool (moneromooo-monero) 5f397e4 Add functions to iterate through blocks, txes, outputs, key images (moneromooo-monero) 0a5a5e8 db_bdb: record numbers for recno databases start at 1 (moneromooo-monero) 50dfdc0 db_bdb: DB_KEYEMPTY is also not found for non-top recon fields (moneromooo-monero) 572780e blockchain_db: use the DNE exceptions where appropriate (moneromooo-monero)
Diffstat (limited to 'src/cryptonote_core/blockchain_storage.cpp')
-rw-r--r--src/cryptonote_core/blockchain_storage.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/cryptonote_core/blockchain_storage.cpp b/src/cryptonote_core/blockchain_storage.cpp
index 4a4d348ba..16aaf7079 100644
--- a/src/cryptonote_core/blockchain_storage.cpp
+++ b/src/cryptonote_core/blockchain_storage.cpp
@@ -1890,3 +1890,41 @@ void blockchain_storage::set_enforce_dns_checkpoints(bool enforce_checkpoints)
{
m_enforce_dns_checkpoints = enforce_checkpoints;
}
+//------------------------------------------------------------------
+bool blockchain_storage::for_all_key_images(std::function<bool(const crypto::key_image&)> f) const
+{
+ for (key_images_container::const_iterator i = m_spent_keys.begin(); i != m_spent_keys.end(); ++i) {
+ if (!f(*i))
+ return false;
+ }
+ return true;
+}
+//------------------------------------------------------------------
+bool blockchain_storage::for_all_blocks(std::function<bool(uint64_t, const block&)> f) const
+{
+ for (blocks_container::const_iterator i = m_blocks.begin(); i != m_blocks.end(); ++i) {
+ if (!f(i->height, i->bl))
+ return false;
+ }
+ return true;
+}
+//------------------------------------------------------------------
+bool blockchain_storage::for_all_transactions(std::function<bool(const transaction&)> f) const
+{
+ for (transactions_container::const_iterator i = m_transactions.begin(); i != m_transactions.end(); ++i) {
+ if (!f(i->second.tx))
+ return false;
+ }
+ return true;
+}
+//------------------------------------------------------------------
+bool blockchain_storage::for_all_outputs(std::function<bool(uint64_t, const crypto::hash&, size_t)> f) const
+{
+ for (outputs_container::const_iterator i = m_outputs.begin(); i != m_outputs.end(); ++i) {
+ for (size_t n = 0; n < i->second.size(); ++n) {
+ if (!f(i->first, i->second[n].first, i->second[n].second))
+ return false;
+ }
+ }
+ return true;
+}