diff --git a/z2/src/docgen.rs b/z2/src/docgen.rs index cf03cf687..bbae6af6a 100644 --- a/z2/src/docgen.rs +++ b/z2/src/docgen.rs @@ -382,7 +382,6 @@ pub fn get_implemented_jsonrpc_methods() -> Result empty_block_timeout_ms - || has_txns_for_next_block - || (time_since_last_view_change + minimum_time_left_for_empty_block - >= exponential_backoff_timeout) - { + // Check if enough time elapsed to propse block + if time_since_last_view_change > empty_block_timeout { if let Ok(Some((block, transactions))) = self.propose_new_block() { self.create_next_block_on_timeout = false; return Ok(Some(( @@ -457,7 +444,7 @@ impl Consensus { }; } else { self.reset_timeout.send(Duration::from_millis( - empty_block_timeout_ms - time_since_last_view_change + 1, + empty_block_timeout - time_since_last_view_change + 1, ))?; return Ok(None); } @@ -465,7 +452,6 @@ impl Consensus { // Now consider whether we want to timeout - the timeout duration doubles every time, so it // Should eventually have all nodes on the same view - if time_since_last_view_change < exponential_backoff_timeout { trace!( "Not proceeding with view change. Current view: {} - time since last: {}, timeout requires: {}", @@ -532,23 +518,18 @@ impl Consensus { // i.e. to get `consensus_timeout_ms * 2^0` we have to subtract 2 from `view_difference` let exponential_backoff_timeout = consensus_timeout_ms * 2u64.pow((view_difference as u32).saturating_sub(2)); - - let minimum_time_left_for_empty_block = self - .config - .consensus - .minimum_time_left_for_empty_block - .as_millis() as u64; + let empty_block_timeout = self.config.consensus.empty_block_timeout.as_millis() as u64; trace!( time_since_last_view_change, exponential_backoff_timeout, - minimum_time_left_for_empty_block, + empty_block_timeout ); ( time_since_last_view_change, exponential_backoff_timeout, - minimum_time_left_for_empty_block, + empty_block_timeout, ) } @@ -1265,15 +1246,10 @@ impl Consensus { // Assemble new block with whatever is in the mempool while let Some(tx) = self.transaction_pool.best_transaction() { // First - check if we have time left to process txns and give enough time for block propagation - let ( - time_since_last_view_change, - exponential_backoff_timeout, - minimum_time_left_for_empty_block, - ) = self.get_consensus_timeout_params(); + let (time_since_last_view_change, _, empty_block_timeout) = + self.get_consensus_timeout_params(); - if time_since_last_view_change + minimum_time_left_for_empty_block - >= exponential_backoff_timeout - { + if time_since_last_view_change > empty_block_timeout { // don't have time, reinsert txn. self.transaction_pool.insert_ready_transaction(tx); break; @@ -1367,15 +1343,10 @@ impl Consensus { /// Either propose now or set timeout to allow for txs to come in. fn ready_for_block_proposal(&mut self) -> Result)>> { // Check if there's enough time to wait on a timeout and then propagate an empty block in the network before other participants trigger NewView - let ( - time_since_last_view_change, - exponential_backoff_timeout, - minimum_time_left_for_empty_block, - ) = self.get_consensus_timeout_params(); + let (time_since_last_view_change, _, empty_block_timeout) = + self.get_consensus_timeout_params(); - if time_since_last_view_change + minimum_time_left_for_empty_block - >= exponential_backoff_timeout - { + if time_since_last_view_change > empty_block_timeout { return self.propose_new_block(); } @@ -1445,16 +1416,11 @@ impl Consensus { let pending = self.transaction_pool.pending_hashes(); for hash in pending.into_iter() { - // First - check for time - let ( - time_since_last_view_change, - exponential_backoff_timeout, - minimum_time_left_for_empty_block, - ) = self.get_consensus_timeout_params(); + // First - check if there is time + let (time_since_last_view_change, _, empty_block_timeout) = + self.get_consensus_timeout_params(); - if time_since_last_view_change + minimum_time_left_for_empty_block - >= exponential_backoff_timeout - { + if time_since_last_view_change > empty_block_timeout { break; } diff --git a/zilliqa/src/pool.rs b/zilliqa/src/pool.rs index 305d4b033..bbe445250 100644 --- a/zilliqa/src/pool.rs +++ b/zilliqa/src/pool.rs @@ -340,21 +340,6 @@ impl TransactionPool { self.hash_to_index.clear(); std::mem::take(&mut self.transactions).into_values() } - - /// Check the ready transactions in arbitrary order, for one that is Ready - pub fn has_txn_ready(&self) -> bool { - for ReadyItem { tx_index, .. } in self.ready.iter() { - // A transaction might have been ready, but it might have gotten popped - // or the sender's nonce might have increased, making it invalid. In this case, - // we will have a stale reference would still exist in the heap. - let Some(_) = self.transactions.get(tx_index) else { - continue; - }; - - return true; - } - false - } } #[cfg(test)] diff --git a/zilliqa/tests/it/main.rs b/zilliqa/tests/it/main.rs index 2191ac199..ebdf27ea0 100644 --- a/zilliqa/tests/it/main.rs +++ b/zilliqa/tests/it/main.rs @@ -67,10 +67,9 @@ use zilliqa::{ allowed_timestamp_skew_default, block_request_batch_size_default, block_request_limit_default, disable_rpc_default, eth_chain_id_default, failed_request_sleep_duration_default, json_rpc_port_default, local_address_default, - max_blocks_in_flight_default, minimum_time_left_for_empty_block_default, - scilla_address_default, scilla_ext_libs_path_default, scilla_stdlib_dir_default, - state_rpc_limit_default, total_native_token_supply_default, Amount, Checkpoint, - ConsensusConfig, NodeConfig, + max_blocks_in_flight_default, scilla_address_default, scilla_ext_libs_path_default, + scilla_stdlib_dir_default, state_rpc_limit_default, total_native_token_supply_default, + Amount, Checkpoint, ConsensusConfig, NodeConfig, }, crypto::{NodePublicKey, SecretKey, TransactionPublicKey}, db, @@ -314,7 +313,6 @@ impl Network { genesis_deposits: genesis_deposits.clone(), is_main: send_to_parent.is_none(), consensus_timeout: Duration::from_secs(5), - minimum_time_left_for_empty_block: minimum_time_left_for_empty_block_default(), // Give a genesis account 1 billion ZIL. genesis_accounts: Self::genesis_accounts(&genesis_key), empty_block_timeout: Duration::from_millis(25), @@ -445,7 +443,6 @@ impl Network { eth_block_gas_limit: EvmGas(84000000), gas_price: 4_761_904_800_000u128.into(), main_shard_id: None, - minimum_time_left_for_empty_block: minimum_time_left_for_empty_block_default(), scilla_address: scilla_address_default(), blocks_per_epoch: 10, epochs_per_checkpoint: 1, @@ -551,8 +548,6 @@ impl Network { gas_price: 4_761_904_800_000u128.into(), local_address: local_address_default(), main_shard_id: None, - minimum_time_left_for_empty_block: - minimum_time_left_for_empty_block_default(), scilla_address: scilla_address_default(), blocks_per_epoch: 10, epochs_per_checkpoint: 1, diff --git a/zilliqa/tests/it/persistence.rs b/zilliqa/tests/it/persistence.rs index 8788cec6c..ffd49ad70 100644 --- a/zilliqa/tests/it/persistence.rs +++ b/zilliqa/tests/it/persistence.rs @@ -12,9 +12,8 @@ use zilliqa::{ allowed_timestamp_skew_default, block_request_batch_size_default, block_request_limit_default, consensus_timeout_default, eth_chain_id_default, failed_request_sleep_duration_default, json_rpc_port_default, max_blocks_in_flight_default, - minimum_time_left_for_empty_block_default, scilla_address_default, - scilla_ext_libs_path_default, scilla_stdlib_dir_default, state_rpc_limit_default, - total_native_token_supply_default, Checkpoint, + scilla_address_default, scilla_ext_libs_path_default, scilla_stdlib_dir_default, + state_rpc_limit_default, total_native_token_supply_default, Checkpoint, }, crypto::{Hash, SecretKey}, transaction::EvmGas, @@ -104,7 +103,6 @@ async fn block_and_tx_data_persistence(mut network: Network) { consensus_timeout: consensus_timeout_default(), genesis_deposits: Vec::new(), main_shard_id: None, - minimum_time_left_for_empty_block: minimum_time_left_for_empty_block_default(), scilla_address: scilla_address_default(), blocks_per_epoch: 10, epochs_per_checkpoint: 1,