Skip to content

Commit aeba127

Browse files
remagpiemergify[bot]
authored andcommitted
Change block_number_if_term_changed to is_term_changed
`block_number_if_term_changed` was returning the current block number if the term changed, which could be calculated in the outer scope.
1 parent dc480e9 commit aeba127

File tree

1 file changed

+13
-24
lines changed

1 file changed

+13
-24
lines changed

core/src/consensus/tendermint/engine.rs

Lines changed: 13 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ use ckey::{public_to_address, Address};
2525
use cnetwork::NetworkService;
2626
use crossbeam_channel as crossbeam;
2727
use cstate::{ActionHandler, TopStateView};
28-
use ctypes::{BlockHash, BlockNumber, CommonParams, Header};
28+
use ctypes::{BlockHash, CommonParams, Header};
2929
use num_rational::Ratio;
3030

3131
use super::super::stake;
@@ -141,10 +141,11 @@ impl ConsensusEngine for Tendermint {
141141
parent_common_params: &CommonParams,
142142
term_common_params: Option<&CommonParams>,
143143
) -> Result<(), Error> {
144+
let block_number = block.header().number();
144145
let author = *block.header().author();
145146
let (total_reward, total_min_fee) = {
146147
let transactions = block.transactions();
147-
let block_reward = self.block_reward(block.header().number());
148+
let block_reward = self.block_reward(block_number);
148149
let total_min_fee: u64 = transactions.iter().map(|tx| tx.fee).sum();
149150
let min_fee =
150151
transactions.iter().map(|tx| CodeChainMachine::min_cost(&parent_common_params, &tx.action)).sum();
@@ -164,9 +165,7 @@ impl ConsensusEngine for Tendermint {
164165
if metadata.current_term_id() == 0 {
165166
self.machine.add_balance(block, &author, block_author_reward)?;
166167

167-
if let Some(block_number) =
168-
block_number_if_term_changed(block.header(), parent_header, parent_common_params)
169-
{
168+
if is_term_changed(block.header(), parent_header, parent_common_params) {
170169
// First term change
171170
stake::on_term_close(block.state_mut(), block_number, &[])?;
172171
}
@@ -178,13 +177,9 @@ impl ConsensusEngine for Tendermint {
178177
stake::add_intermediate_rewards(block.state_mut(), author, block_author_reward)?;
179178

180179
let term_common_params = term_common_params.expect("TermCommonParams should exist");
181-
let last_term_finished_block_num = if let Some(block_number) =
182-
block_number_if_term_changed(block.header(), parent_header, term_common_params)
183-
{
184-
block_number
185-
} else {
180+
if !is_term_changed(block.header(), parent_header, term_common_params) {
186181
return Ok(())
187-
};
182+
}
188183
let rewards = stake::drain_previous_rewards(&mut block.state_mut())?;
189184

190185
let start_of_the_current_term = metadata.last_term_finished_block_num() + 1;
@@ -213,7 +208,7 @@ impl ConsensusEngine for Tendermint {
213208
};
214209

215210
let banned = stake::Banned::load_from_state(block.state())?;
216-
let start_of_the_current_term_header = if block.header().number() == start_of_the_current_term {
211+
let start_of_the_current_term_header = if block_number == start_of_the_current_term {
217212
encoded::Header::new(block.header().clone().rlp_bytes().to_vec())
218213
} else {
219214
client.block_header(&start_of_the_current_term.into()).unwrap()
@@ -241,7 +236,7 @@ impl ConsensusEngine for Tendermint {
241236
};
242237

243238
stake::move_current_to_previous_intermediate_rewards(&mut block.state_mut())?;
244-
stake::on_term_close(block.state_mut(), last_term_finished_block_num, &inactive_validators)?;
239+
stake::on_term_close(block.state_mut(), block_number, &inactive_validators)?;
245240

246241
Ok(())
247242
}
@@ -342,22 +337,16 @@ impl ConsensusEngine for Tendermint {
342337
}
343338
}
344339

345-
fn block_number_if_term_changed(
346-
header: &Header,
347-
parent_header: &Header,
348-
common_params: &CommonParams,
349-
) -> Option<BlockNumber> {
340+
fn is_term_changed(header: &Header, parent: &Header, common_params: &CommonParams) -> bool {
350341
let term_seconds = common_params.term_seconds();
351342
if term_seconds == 0 {
352-
return None
343+
return false
353344
}
354345

355346
let current_term_period = header.timestamp() / term_seconds;
356-
let parent_term_period = parent_header.timestamp() / term_seconds;
357-
if current_term_period == parent_term_period {
358-
return None
359-
}
360-
Some(header.number())
347+
let parent_term_period = parent.timestamp() / term_seconds;
348+
349+
current_term_period != parent_term_period
361350
}
362351

363352
fn inactive_validators(

0 commit comments

Comments
 (0)