diff options
| author | Riccardo Spagni <ric@spagni.net> | 2019-01-16 21:40:06 +0200 |
|---|---|---|
| committer | Riccardo Spagni <ric@spagni.net> | 2019-01-16 21:40:06 +0200 |
| commit | dc726f4b3bbc12219ce17d4257870bd64fb8767b (patch) | |
| tree | 0ca39e168e4f087c43cb6ee573ab09c502a795a3 /src/cryptonote_basic/hardfork.cpp | |
| parent | e59813c3d7afd14689da5ef07359dfe5bad8670b (diff) | |
| parent | 5ee6f03742f7c14059da6139a9923c443668f4b0 (diff) | |
| download | monzero-core-dc726f4b3bbc12219ce17d4257870bd64fb8767b.tar.gz monzero-core-dc726f4b3bbc12219ce17d4257870bd64fb8767b.tar.xz monzero-core-dc726f4b3bbc12219ce17d4257870bd64fb8767b.zip | |
Merge pull request #5032
5ee6f037 blockchain: fix wrong hf version when popping multiple blocks (moneromooo-monero)
634d359a blockchain: use the version passed as parameter, not a new one (moneromooo-monero)
94a375d5 hardfork: remove batch transactions setup (moneromooo-monero)
Diffstat (limited to 'src/cryptonote_basic/hardfork.cpp')
| -rw-r--r-- | src/cryptonote_basic/hardfork.cpp | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/cryptonote_basic/hardfork.cpp b/src/cryptonote_basic/hardfork.cpp index 87a394918..447d79aee 100644 --- a/src/cryptonote_basic/hardfork.cpp +++ b/src/cryptonote_basic/hardfork.cpp @@ -222,7 +222,6 @@ bool HardFork::reorganize_from_block_height(uint64_t height) if (height >= db.height()) return false; - db.set_batch_transactions(true); bool stop_batch = db.batch_start(); versions.clear(); @@ -306,6 +305,29 @@ bool HardFork::rescan_from_chain_height(uint64_t height) return rescan_from_block_height(height - 1); } +void HardFork::on_block_popped(uint64_t nblocks) +{ + CHECK_AND_ASSERT_THROW_MES(nblocks > 0, "nblocks must be greater than 0"); + + CRITICAL_REGION_LOCAL(lock); + + const uint64_t new_chain_height = db.height(); + const uint64_t old_chain_height = new_chain_height + nblocks; + uint8_t version; + uint64_t height; + for (height = old_chain_height - 1; height >= new_chain_height; --height) + { + versions.pop_back(); + version = db.get_hard_fork_version(height); + versions.push_front(version); + } + + // does not take voting into account + for (current_fork_index = heights.size() - 1; current_fork_index > 0; --current_fork_index) + if (height >= heights[current_fork_index].height) + break; +} + int HardFork::get_voted_fork_index(uint64_t height) const { CRITICAL_REGION_LOCAL(lock); |
