From 97d437f5ad6bdd450cba45fa378833ff73c4d828 Mon Sep 17 00:00:00 2001 From: Alfredo Garcia Date: Wed, 11 Sep 2024 17:09:08 -0300 Subject: [PATCH] make sure fields are not present when tip is 0 --- .../src/methods/get_block_template_rpcs.rs | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/zebra-rpc/src/methods/get_block_template_rpcs.rs b/zebra-rpc/src/methods/get_block_template_rpcs.rs index 13190d9fc4e..2d50552cfec 100644 --- a/zebra-rpc/src/methods/get_block_template_rpcs.rs +++ b/zebra-rpc/src/methods/get_block_template_rpcs.rs @@ -1017,22 +1017,29 @@ where let chain_tip = self.latest_chain_tip.clone(); let tip_height = chain_tip.best_tip_height().unwrap_or(Height(0)).0; - let mined_tx_ids = chain_tip.best_tip_mined_transaction_ids(); - let current_block_tx = (!mined_tx_ids.is_empty()).then(|| mined_tx_ids.len()); + let mut current_block_tx = None; + if tip_height > 0 { + let mined_tx_ids = chain_tip.best_tip_mined_transaction_ids(); + current_block_tx = + (!mined_tx_ids.is_empty()).then(|| mined_tx_ids.len().saturating_sub(1)); + } let solution_rate_fut = self.get_network_sol_ps(None, None); async move { // Get the current block size. - let request = zebra_state::ReadRequest::TipBlockSize; - let response: zebra_state::ReadResponse = state - .ready() - .and_then(|service| service.call(request)) - .await - .map_server_error()?; - let current_block_size = match response { - zebra_state::ReadResponse::TipBlockSize(Some(block_size)) => Some(block_size), - _ => None, - }; + let mut current_block_size = None; + if tip_height > 0 { + let request = zebra_state::ReadRequest::TipBlockSize; + let response: zebra_state::ReadResponse = state + .ready() + .and_then(|service| service.call(request)) + .await + .map_server_error()?; + current_block_size = match response { + zebra_state::ReadResponse::TipBlockSize(Some(block_size)) => Some(block_size), + _ => None, + }; + } Ok(get_mining_info::Response::new( tip_height,