mirror of
https://github.com/monero-project/monero.git
synced 2024-10-01 11:49:47 -04:00
hardfork: add a get_ideal_version(uint64_t) function
It returns the ideal version for a given height, which is based on the minimum height for a fork, disregarding votes
This commit is contained in:
parent
4187e569d8
commit
2f254ff599
@ -337,6 +337,17 @@ uint8_t HardFork::get_ideal_version() const
|
|||||||
return heights.back().version;
|
return heights.back().version;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint8_t HardFork::get_ideal_version(uint64_t height) const
|
||||||
|
{
|
||||||
|
CRITICAL_REGION_LOCAL(lock);
|
||||||
|
for (unsigned int n = heights.size() - 1; n > 0; --n) {
|
||||||
|
if (height >= heights[n].height) {
|
||||||
|
return heights[n].version;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return original_version;
|
||||||
|
}
|
||||||
|
|
||||||
bool HardFork::get_voting_info(uint8_t version, uint32_t &window, uint32_t &votes, uint32_t &threshold, uint8_t &voting) const
|
bool HardFork::get_voting_info(uint8_t version, uint32_t &window, uint32_t &votes, uint32_t &threshold, uint8_t &voting) const
|
||||||
{
|
{
|
||||||
CRITICAL_REGION_LOCAL(lock);
|
CRITICAL_REGION_LOCAL(lock);
|
||||||
|
@ -167,6 +167,13 @@ namespace cryptonote
|
|||||||
*/
|
*/
|
||||||
uint8_t get_ideal_version() const;
|
uint8_t get_ideal_version() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief returns the "ideal" version for a given height
|
||||||
|
*
|
||||||
|
* @param height height of the block to check
|
||||||
|
*/
|
||||||
|
uint8_t get_ideal_version(uint64_t height) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief returns the current version
|
* @brief returns the current version
|
||||||
*
|
*
|
||||||
|
@ -480,3 +480,25 @@ TEST(reorganize, changed)
|
|||||||
ASSERT_EQ(hf.get_current_version(), 2); // we did not bump to 3 this time
|
ASSERT_EQ(hf.get_current_version(), 2); // we did not bump to 3 this time
|
||||||
ASSERT_EQ(hf.get_start_height(3), std::numeric_limits<uint64_t>::max()); // not yet
|
ASSERT_EQ(hf.get_start_height(3), std::numeric_limits<uint64_t>::max()); // not yet
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(get, higher)
|
||||||
|
{
|
||||||
|
TestDB db;
|
||||||
|
HardFork hf(db, 1, 0, 1, 1, 4, 50);
|
||||||
|
|
||||||
|
// v h t
|
||||||
|
ASSERT_TRUE(hf.add(1, 0, 0));
|
||||||
|
ASSERT_TRUE(hf.add(2, 2, 1));
|
||||||
|
ASSERT_TRUE(hf.add(3, 5, 2));
|
||||||
|
hf.init();
|
||||||
|
|
||||||
|
ASSERT_EQ(hf.get_ideal_version(0), 1);
|
||||||
|
ASSERT_EQ(hf.get_ideal_version(1), 1);
|
||||||
|
ASSERT_EQ(hf.get_ideal_version(2), 2);
|
||||||
|
ASSERT_EQ(hf.get_ideal_version(3), 2);
|
||||||
|
ASSERT_EQ(hf.get_ideal_version(4), 2);
|
||||||
|
ASSERT_EQ(hf.get_ideal_version(5), 3);
|
||||||
|
ASSERT_EQ(hf.get_ideal_version(6), 3);
|
||||||
|
ASSERT_EQ(hf.get_ideal_version(7), 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user