Skip to content

Commit b201dcd

Browse files
committed
refactor: clean up mock-mining changes for readability
1 parent 5bedd6e commit b201dcd

File tree

1 file changed

+73
-58
lines changed
  • testnet/stacks-node/src/nakamoto_node

1 file changed

+73
-58
lines changed

testnet/stacks-node/src/nakamoto_node/miner.rs

Lines changed: 73 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ use stacks::net::p2p::NetworkHandle;
4141
use stacks::net::stackerdb::StackerDBs;
4242
use stacks::net::{NakamotoBlocksData, StacksMessageType};
4343
use stacks::util::get_epoch_time_secs;
44+
use stacks::util::secp256k1::MessageSignature;
4445
use stacks_common::types::chainstate::{StacksAddress, StacksBlockId};
4546
use stacks_common::types::{PrivateKey, StacksEpochId};
4647
use stacks_common::util::vrf::VRFProof;
@@ -422,64 +423,48 @@ impl BlockMinerThread {
422423

423424
if let Some(mut new_block) = new_block {
424425
Self::fault_injection_block_broadcast_stall(&new_block);
425-
426-
let signer_signature = if self.config.get_node_config(false).mock_mining {
427-
// If we're mock mining, we don't actually propose the block.
428-
Vec::new()
429-
} else {
430-
let mut chain_state = neon_node::open_chainstate_with_faults(&self.config)
431-
.map_err(|e| {
432-
NakamotoNodeError::SigningCoordinatorFailure(format!(
433-
"Failed to open chainstate DB. Cannot mine! {e:?}"
434-
))
435-
})?;
436-
match coordinator.propose_block(
437-
&mut new_block,
438-
&self.burn_block,
439-
&self.burnchain,
440-
&sortdb,
441-
&mut chain_state,
442-
stackerdbs,
443-
&self.globals.counters,
444-
&self.burn_election_block.consensus_hash,
445-
) {
446-
Ok(x) => x,
447-
Err(e) => match e {
448-
NakamotoNodeError::StacksTipChanged => {
449-
info!("Stacks tip changed while waiting for signatures";
450-
"signer_sighash" => %new_block.header.signer_signature_hash(),
451-
"block_height" => new_block.header.chain_length,
452-
"consensus_hash" => %new_block.header.consensus_hash,
453-
);
454-
return Err(e);
455-
}
456-
NakamotoNodeError::BurnchainTipChanged => {
457-
info!("Burnchain tip changed while waiting for signatures";
458-
"signer_sighash" => %new_block.header.signer_signature_hash(),
459-
"block_height" => new_block.header.chain_length,
460-
"consensus_hash" => %new_block.header.consensus_hash,
461-
);
462-
return Err(e);
463-
}
464-
_ => {
465-
// Sleep for a bit to allow signers to catch up
466-
let pause_ms = if *last_block_rejected {
467-
self.config.miner.subsequent_rejection_pause_ms
468-
} else {
469-
self.config.miner.first_rejection_pause_ms
470-
};
471-
472-
error!("Error while gathering signatures: {e:?}. Will try mining again in {pause_ms}.";
473-
"signer_sighash" => %new_block.header.signer_signature_hash(),
474-
"block_height" => new_block.header.chain_length,
475-
"consensus_hash" => %new_block.header.consensus_hash,
476-
);
477-
thread::sleep(Duration::from_millis(pause_ms));
478-
*last_block_rejected = true;
479-
return Ok(());
480-
}
481-
},
482-
}
426+
let signer_signature = match self.propose_block(
427+
coordinator,
428+
&mut new_block,
429+
sortdb,
430+
stackerdbs,
431+
) {
432+
Ok(x) => x,
433+
Err(e) => match e {
434+
NakamotoNodeError::StacksTipChanged => {
435+
info!("Stacks tip changed while waiting for signatures";
436+
"signer_sighash" => %new_block.header.signer_signature_hash(),
437+
"block_height" => new_block.header.chain_length,
438+
"consensus_hash" => %new_block.header.consensus_hash,
439+
);
440+
return Err(e);
441+
}
442+
NakamotoNodeError::BurnchainTipChanged => {
443+
info!("Burnchain tip changed while waiting for signatures";
444+
"signer_sighash" => %new_block.header.signer_signature_hash(),
445+
"block_height" => new_block.header.chain_length,
446+
"consensus_hash" => %new_block.header.consensus_hash,
447+
);
448+
return Err(e);
449+
}
450+
_ => {
451+
// Sleep for a bit to allow signers to catch up
452+
let pause_ms = if *last_block_rejected {
453+
self.config.miner.subsequent_rejection_pause_ms
454+
} else {
455+
self.config.miner.first_rejection_pause_ms
456+
};
457+
458+
error!("Error while gathering signatures: {e:?}. Will try mining again in {pause_ms}.";
459+
"signer_sighash" => %new_block.header.signer_signature_hash(),
460+
"block_height" => new_block.header.chain_length,
461+
"consensus_hash" => %new_block.header.consensus_hash,
462+
);
463+
thread::sleep(Duration::from_millis(pause_ms));
464+
*last_block_rejected = true;
465+
return Ok(());
466+
}
467+
},
483468
};
484469
*last_block_rejected = false;
485470

@@ -533,6 +518,36 @@ impl BlockMinerThread {
533518
Ok(())
534519
}
535520

521+
fn propose_block(
522+
&self,
523+
coordinator: &mut SignerCoordinator,
524+
new_block: &mut NakamotoBlock,
525+
sortdb: &SortitionDB,
526+
stackerdbs: &mut StackerDBs,
527+
) -> Result<Vec<MessageSignature>, NakamotoNodeError> {
528+
if self.config.get_node_config(false).mock_mining {
529+
// If we're mock mining, we don't actually propose the block.
530+
return Ok(Vec::new());
531+
}
532+
533+
let mut chain_state =
534+
neon_node::open_chainstate_with_faults(&self.config).map_err(|e| {
535+
NakamotoNodeError::SigningCoordinatorFailure(format!(
536+
"Failed to open chainstate DB. Cannot mine! {e:?}"
537+
))
538+
})?;
539+
coordinator.propose_block(
540+
new_block,
541+
&self.burn_block,
542+
&self.burnchain,
543+
sortdb,
544+
&mut chain_state,
545+
stackerdbs,
546+
&self.globals.counters,
547+
&self.burn_election_block.consensus_hash,
548+
)
549+
}
550+
536551
/// Load the signer set active for this miner's blocks. This is the
537552
/// active reward set during `self.burn_election_block`. The miner
538553
/// thread caches this information, and this method will consult

0 commit comments

Comments
 (0)