diff options
author | Riccardo Spagni <ric@spagni.net> | 2017-08-17 21:35:02 +0200 |
---|---|---|
committer | Riccardo Spagni <ric@spagni.net> | 2017-08-17 21:35:02 +0200 |
commit | 4b2cc123ff48fdd2c62dbffc24c604c45c6fbf1d (patch) | |
tree | bfe654f3fb0b4b5ae5ffdb96919080c716449069 | |
parent | Merge pull request #2297 (diff) | |
parent | protocol: pass blockchain cumulative difficulty when syncing (diff) | |
download | monero-4b2cc123ff48fdd2c62dbffc24c604c45c6fbf1d.tar.xz |
Merge pull request #2287
827afcb7 protocol: pass blockchain cumulative difficulty when syncing (moneromooo-monero)
-rw-r--r-- | src/cryptonote_core/blockchain.cpp | 1 | ||||
-rw-r--r-- | src/cryptonote_core/blockchain.h | 10 | ||||
-rw-r--r-- | src/cryptonote_core/cryptonote_core.cpp | 5 | ||||
-rw-r--r-- | src/cryptonote_core/cryptonote_core.h | 7 | ||||
-rw-r--r-- | src/cryptonote_protocol/cryptonote_protocol_defs.h | 4 | ||||
-rw-r--r-- | src/cryptonote_protocol/cryptonote_protocol_handler.inl | 1 | ||||
-rw-r--r-- | tests/core_proxy/core_proxy.h | 1 | ||||
-rw-r--r-- | tests/unit_tests/ban.cpp | 1 |
8 files changed, 30 insertions, 0 deletions
diff --git a/src/cryptonote_core/blockchain.cpp b/src/cryptonote_core/blockchain.cpp index 61ddff3d0..14a990131 100644 --- a/src/cryptonote_core/blockchain.cpp +++ b/src/cryptonote_core/blockchain.cpp @@ -2038,6 +2038,7 @@ bool Blockchain::find_blockchain_supplement(const std::list<crypto::hash>& qbloc { resp.m_block_ids.push_back(m_db->get_block_hash_from_height(i)); } + resp.cumulative_difficulty = m_db->get_block_cumulative_difficulty(m_db->height() - 1); m_db->block_txn_stop(); return true; } diff --git a/src/cryptonote_core/blockchain.h b/src/cryptonote_core/blockchain.h index 7137f50a7..7fa78584b 100644 --- a/src/cryptonote_core/blockchain.h +++ b/src/cryptonote_core/blockchain.h @@ -831,6 +831,16 @@ namespace cryptonote * * @return a reference to the BlockchainDB instance */ + const BlockchainDB& get_db() const + { + return *m_db; + } + + /** + * @brief get a reference to the BlockchainDB in use by Blockchain + * + * @return a reference to the BlockchainDB instance + */ BlockchainDB& get_db() { return *m_db; diff --git a/src/cryptonote_core/cryptonote_core.cpp b/src/cryptonote_core/cryptonote_core.cpp index ac2d3023a..430d66e21 100644 --- a/src/cryptonote_core/cryptonote_core.cpp +++ b/src/cryptonote_core/cryptonote_core.cpp @@ -1110,6 +1110,11 @@ namespace cryptonote return m_blockchain_storage.get_tail_id(); } //----------------------------------------------------------------------------------------------- + difficulty_type core::get_block_cumulative_difficulty(uint64_t height) const + { + return m_blockchain_storage.get_db().get_block_cumulative_difficulty(height); + } + //----------------------------------------------------------------------------------------------- size_t core::get_pool_transactions_count() const { return m_mempool.get_transactions_count(); diff --git a/src/cryptonote_core/cryptonote_core.h b/src/cryptonote_core/cryptonote_core.h index 63d3cd16d..3c66d772d 100644 --- a/src/cryptonote_core/cryptonote_core.h +++ b/src/cryptonote_core/cryptonote_core.h @@ -521,6 +521,13 @@ namespace cryptonote crypto::hash get_tail_id() const; /** + * @copydoc Blockchain::get_block_cumulative_difficulty + * + * @note see Blockchain::get_block_cumulative_difficulty + */ + difficulty_type get_block_cumulative_difficulty(uint64_t height) const; + + /** * @copydoc Blockchain::get_random_outs_for_amounts * * @note see Blockchain::get_random_outs_for_amounts diff --git a/src/cryptonote_protocol/cryptonote_protocol_defs.h b/src/cryptonote_protocol/cryptonote_protocol_defs.h index 6e6c83f04..71e205c23 100644 --- a/src/cryptonote_protocol/cryptonote_protocol_defs.h +++ b/src/cryptonote_protocol/cryptonote_protocol_defs.h @@ -197,11 +197,13 @@ namespace cryptonote struct CORE_SYNC_DATA { uint64_t current_height; + uint64_t cumulative_difficulty; crypto::hash top_id; uint8_t top_version; BEGIN_KV_SERIALIZE_MAP() KV_SERIALIZE(current_height) + KV_SERIALIZE(cumulative_difficulty) KV_SERIALIZE_VAL_POD_AS_BLOB(top_id) KV_SERIALIZE_OPT(top_version, (uint8_t)0) END_KV_SERIALIZE_MAP() @@ -229,11 +231,13 @@ namespace cryptonote { uint64_t start_height; uint64_t total_height; + uint64_t cumulative_difficulty; std::list<crypto::hash> m_block_ids; BEGIN_KV_SERIALIZE_MAP() KV_SERIALIZE(start_height) KV_SERIALIZE(total_height) + KV_SERIALIZE(cumulative_difficulty) KV_SERIALIZE_CONTAINER_POD_AS_BLOB(m_block_ids) END_KV_SERIALIZE_MAP() }; diff --git a/src/cryptonote_protocol/cryptonote_protocol_handler.inl b/src/cryptonote_protocol/cryptonote_protocol_handler.inl index 5b3b059a4..265e60b3f 100644 --- a/src/cryptonote_protocol/cryptonote_protocol_handler.inl +++ b/src/cryptonote_protocol/cryptonote_protocol_handler.inl @@ -309,6 +309,7 @@ namespace cryptonote { m_core.get_blockchain_top(hshd.current_height, hshd.top_id); hshd.top_version = m_core.get_hard_fork_version(hshd.current_height); + hshd.cumulative_difficulty = m_core.get_block_cumulative_difficulty(hshd.current_height); hshd.current_height +=1; return true; } diff --git a/tests/core_proxy/core_proxy.h b/tests/core_proxy/core_proxy.h index b7d5725f0..bd4b9f995 100644 --- a/tests/core_proxy/core_proxy.h +++ b/tests/core_proxy/core_proxy.h @@ -98,5 +98,6 @@ namespace tests bool get_block_by_hash(const crypto::hash &h, cryptonote::block &blk, bool *orphan = NULL) const { return false; } uint8_t get_ideal_hard_fork_version(uint64_t height) const { return 0; } uint8_t get_hard_fork_version(uint64_t height) const { return 0; } + cryptonote::difficulty_type get_block_cumulative_difficulty(uint64_t height) const { return 0; } }; } diff --git a/tests/unit_tests/ban.cpp b/tests/unit_tests/ban.cpp index 6fc8b83dd..3783beab5 100644 --- a/tests/unit_tests/ban.cpp +++ b/tests/unit_tests/ban.cpp @@ -75,6 +75,7 @@ public: bool get_block_by_hash(const crypto::hash &h, cryptonote::block &blk, bool *orphan = NULL) const { return false; } uint8_t get_ideal_hard_fork_version(uint64_t height) const { return 0; } uint8_t get_hard_fork_version(uint64_t height) const { return 0; } + cryptonote::difficulty_type get_block_cumulative_difficulty(uint64_t height) const { return 0; } }; typedef nodetool::node_server<cryptonote::t_cryptonote_protocol_handler<test_core>> Server; |