diff options
author | Riccardo Spagni <ric@spagni.net> | 2015-10-27 09:03:05 +0200 |
---|---|---|
committer | Riccardo Spagni <ric@spagni.net> | 2015-10-27 09:03:07 +0200 |
commit | 9292c1e7cddbc65789d1a78a7db99111ce1980f2 (patch) | |
tree | 4206eac96b7430bd4d712cf6cf796ebaae5bbc83 | |
parent | Merge pull request #451 (diff) | |
parent | Build fixes for the old blockchain_storage version (diff) | |
download | monero-9292c1e7cddbc65789d1a78a7db99111ce1980f2.tar.xz |
Merge pull request #453
3e89df4 Build fixes for the old blockchain_storage version (moneromooo-monero)
-rw-r--r-- | src/blockchain_utilities/blockchain_dump.cpp | 7 | ||||
-rw-r--r-- | src/cryptonote_core/blockchain_storage.cpp | 10 | ||||
-rw-r--r-- | src/cryptonote_core/blockchain_storage.h | 4 | ||||
-rw-r--r-- | tests/unit_tests/hardfork.cpp | 5 |
4 files changed, 18 insertions, 8 deletions
diff --git a/src/blockchain_utilities/blockchain_dump.cpp b/src/blockchain_utilities/blockchain_dump.cpp index 4c3c09c43..ce028f663 100644 --- a/src/blockchain_utilities/blockchain_dump.cpp +++ b/src/blockchain_utilities/blockchain_dump.cpp @@ -162,7 +162,9 @@ int main(int argc, char* argv[]) LOG_PRINT_L0("Setting log level = " << log_level); bool opt_testnet = command_line::get_arg(vm, arg_testnet_on); +#if SOURCE_DB != DB_MEMORY bool opt_include_db_only_data = command_line::get_arg(vm, arg_include_db_only_data); +#endif std::string m_config_folder; @@ -271,7 +273,6 @@ int main(int argc, char* argv[]) start_struct(d,"blockchain"); uint64_t height = core_storage->get_current_blockchain_height(); write_pod(d, "height", height); -goto start; start_array(d,"blockids", true); for (uint64_t h = 0; h < height; ++h) write_pod(d,core_storage->get_block_id_by_height(h)); @@ -310,6 +311,7 @@ goto start; end_compound(d); } } + end_compound(d); start_struct(d,"blocks", true); { std::vector<crypto::hash> blockids; @@ -333,6 +335,7 @@ goto start; write_pod(d,key_images[n]); } end_compound(d); +#if SOURCE_DB != DB_MEMORY if (opt_include_db_only_data) { start_struct(d, "block_timestamps", true); @@ -386,7 +389,6 @@ goto start; catch (const OUTPUT_DNE &) { break; } } end_compound(d); -start: start_struct(d, "outputs_amounts", true); for (uint64_t base = 1; base <= (uint64_t)10000000000000000000ul; base *= 10) for (uint64_t digit = 1; digit <= 9; ++digit) { uint64_t amount = digit * base; @@ -417,6 +419,7 @@ start: write_pod(d, boost::lexical_cast<std::string>(v), db->get_hard_fork_starting_height(v)); end_compound(d); } +#endif end_compound(d); CHECK_AND_ASSERT_MES(r, false, "Failed to dump blockchain"); diff --git a/src/cryptonote_core/blockchain_storage.cpp b/src/cryptonote_core/blockchain_storage.cpp index 6d2b33bda..fa63efe0b 100644 --- a/src/cryptonote_core/blockchain_storage.cpp +++ b/src/cryptonote_core/blockchain_storage.cpp @@ -1900,19 +1900,21 @@ bool blockchain_storage::for_all_key_images(std::function<bool(const crypto::key return true; } //------------------------------------------------------------------ -bool blockchain_storage::for_all_blocks(std::function<bool(uint64_t, const block&)> f) const +bool blockchain_storage::for_all_blocks(std::function<bool(uint64_t, const crypto::hash&, const block&)> f) const { for (blocks_container::const_iterator i = m_blocks.begin(); i != m_blocks.end(); ++i) { - if (!f(i->height, i->bl)) + crypto::hash hash; + get_block_hash (i->bl, hash); + if (!f(i->height, hash, i->bl)) return false; } return true; } //------------------------------------------------------------------ -bool blockchain_storage::for_all_transactions(std::function<bool(const transaction&)> f) const +bool blockchain_storage::for_all_transactions(std::function<bool(const crypto::hash&, const transaction&)> f) const { for (transactions_container::const_iterator i = m_transactions.begin(); i != m_transactions.end(); ++i) { - if (!f(i->second.tx)) + if (!f(i->first, i->second.tx)) return false; } return true; diff --git a/src/cryptonote_core/blockchain_storage.h b/src/cryptonote_core/blockchain_storage.h index 4a4fc14c2..671cdadc4 100644 --- a/src/cryptonote_core/blockchain_storage.h +++ b/src/cryptonote_core/blockchain_storage.h @@ -186,8 +186,8 @@ namespace cryptonote uint64_t get_block_coins_generated(uint64_t height) const { return m_blocks[height].already_generated_coins; } bool for_all_key_images(std::function<bool(const crypto::key_image&)>) const; - bool for_all_blocks(std::function<bool(uint64_t height, const block&)>) const; - bool for_all_transactions(std::function<bool(const transaction&)>) const; + bool for_all_blocks(std::function<bool(uint64_t height, const crypto::hash&, const block&)>) const; + bool for_all_transactions(std::function<bool(const crypto::hash&, const transaction&)>) const; bool for_all_outputs(std::function<bool(uint64_t amount, const crypto::hash &tx_hash, size_t tx_idx)>) const; // use for testing only diff --git a/tests/unit_tests/hardfork.cpp b/tests/unit_tests/hardfork.cpp index 210c1959b..5c58b3f4b 100644 --- a/tests/unit_tests/hardfork.cpp +++ b/tests/unit_tests/hardfork.cpp @@ -98,6 +98,11 @@ public: virtual void add_spent_key(const crypto::key_image& k_image) {} virtual void remove_spent_key(const crypto::key_image& k_image) {} + virtual bool for_all_key_images(std::function<bool(const crypto::key_image&)>) const { return true; } + virtual bool for_all_blocks(std::function<bool(uint64_t, const crypto::hash&, const cryptonote::block&)>) const { return true; } + virtual bool for_all_transactions(std::function<bool(const crypto::hash&, const cryptonote::transaction&)>) const { return true; } + virtual bool for_all_outputs(std::function<bool(uint64_t amount, const crypto::hash &tx_hash, size_t tx_idx)> f) const { return true; } + virtual void add_block( const block& blk , const size_t& block_size , const difficulty_type& cumulative_difficulty |