mirror of
https://github.com/monero-project/monero.git
synced 2024-12-25 13:09:24 +00: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
3 changed files with 40 additions and 0 deletions
|
@ -337,6 +337,17 @@ uint8_t HardFork::get_ideal_version() const
|
|||
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
|
||||
{
|
||||
CRITICAL_REGION_LOCAL(lock);
|
||||
|
|
|
@ -167,6 +167,13 @@ namespace cryptonote
|
|||
*/
|
||||
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
|
||||
*
|
||||
|
|
|
@ -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_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 a new issue