Skip to content

Commit d579d07

Browse files
committed
Snapshot term_metadata on every term close for the era > 0
1 parent 8fadac6 commit d579d07

File tree

3 files changed

+13
-1
lines changed

3 files changed

+13
-1
lines changed

core/src/consensus/tendermint/engine.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ use std::sync::{Arc, Weak};
2424
use ckey::{public_to_address, Address};
2525
use cnetwork::NetworkService;
2626
use crossbeam_channel as crossbeam;
27-
use cstate::{ActionHandler, TopStateView};
27+
use cstate::{ActionHandler, TopState, TopStateView};
2828
use ctypes::{BlockHash, CommonParams, Header};
2929
use num_rational::Ratio;
3030

@@ -238,6 +238,11 @@ impl ConsensusEngine for Tendermint {
238238

239239
stake::on_term_close(block.state_mut(), block_number, &inactive_validators)?;
240240

241+
match term_common_params.expect("TermCommonParams should exist").era() {
242+
0 => {}
243+
1 => block.state_mut().snapshot_term_params()?,
244+
_ => unimplemented!("It is not decided how we handle this"),
245+
}
241246
Ok(())
242247
}
243248

state/src/impls/top_level.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -999,6 +999,12 @@ impl TopState for TopLevelState {
999999
metadata.increase_seq();
10001000
Ok(())
10011001
}
1002+
1003+
fn snapshot_term_params(&mut self) -> StateResult<()> {
1004+
let mut metadata = self.get_metadata_mut()?;
1005+
metadata.snapshot_term_params();
1006+
Ok(())
1007+
}
10021008
}
10031009

10041010
fn is_active_account(state: &dyn TopStateView, address: &Address) -> TrieResult<bool> {

state/src/traits.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,7 @@ pub trait TopState {
183183
fn remove_action_data(&mut self, key: &H256);
184184

185185
fn update_params(&mut self, metadata_seq: u64, params: CommonParams) -> StateResult<()>;
186+
fn snapshot_term_params(&mut self) -> StateResult<()>;
186187
}
187188

188189
pub trait StateWithCache {

0 commit comments

Comments
 (0)