Skip to content

Commit 565ad2a

Browse files
committed
fix: do not propose block if mock-mining
1 parent 98d35ba commit 565ad2a

File tree

1 file changed

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

1 file changed

+58
-52
lines changed

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

Lines changed: 58 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -422,58 +422,64 @@ impl BlockMinerThread {
422422

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

0 commit comments

Comments
 (0)