Skip to content

Commit d260ae3

Browse files
committed
Implement MiningRule trait in a submodule
1 parent 21db264 commit d260ae3

File tree

4 files changed

+24
-1
lines changed

4 files changed

+24
-1
lines changed

protocol/mining/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
pub mod rule_engine;
2+
pub mod rules;

protocol/mining/src/rule_engine.rs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ use kaspa_core::{
2424
};
2525
use kaspa_p2p_lib::Hub;
2626

27+
use crate::rules::mining_rule::MiningRule;
28+
2729
const RULE_ENGINE: &str = "mining-rule-engine";
2830
const SYNC_RATE_THRESHOLD: f64 = 0.10;
2931

@@ -37,6 +39,7 @@ pub struct MiningRuleEngine {
3739
consensus_manager: Arc<ConsensusManager>,
3840
hub: Hub,
3941
mining_rules: Arc<MiningRules>,
42+
rules: Vec<Arc<dyn MiningRule>>,
4043
}
4144

4245
impl MiningRuleEngine {
@@ -80,11 +83,12 @@ impl MiningRuleEngine {
8083
.saturating_sub(self.config.finality_duration_in_milliseconds().get(sink_daa_timestamp.daa_score) * 3);
8184

8285
trace!(
83-
"Sync rate: {:.2} | Finality point recent: {} | Elapsed time: {}s | Found/Expected blocks: {}/{}",
86+
"Sync rate: {:.2} | Finality point recent: {} | Elapsed time: {}s | Connected: {} | Found/Expected blocks: {}/{}",
8487
rate,
8588
is_finality_recent,
8689
elapsed_time.as_secs(),
8790
delta.body_counts,
91+
self.has_sufficient_peer_connectivity(),
8892
expected_blocks,
8993
);
9094

@@ -110,6 +114,15 @@ impl MiningRuleEngine {
110114

111115
// START - Rule Engine
112116
trace!("Current Mining Rule: {:?}", self.mining_rules);
117+
118+
// Blue Parents Only Check:
119+
for rule in &self.rules {
120+
rule.check_rule(&snapshot);
121+
}
122+
123+
// No Transactions Check:
124+
// TODO: implement this part
125+
113126
// End - Rule Engine
114127
}
115128

@@ -126,6 +139,8 @@ impl MiningRuleEngine {
126139
hub: Hub,
127140
mining_rules: Arc<MiningRules>,
128141
) -> Self {
142+
let rules: Vec<Arc<(dyn MiningRule + 'static)>> = vec![];
143+
129144
Self {
130145
consensus_manager,
131146
config,
@@ -134,6 +149,7 @@ impl MiningRuleEngine {
134149
hub,
135150
use_sync_rate_rule: Arc::new(AtomicBool::new(false)),
136151
mining_rules,
152+
rules,
137153
}
138154
}
139155

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
use kaspa_consensus_core::api::counters::ProcessingCountersSnapshot;
2+
3+
pub trait MiningRule: Send + Sync + 'static {
4+
fn check_rule(&self, delta: &ProcessingCountersSnapshot);
5+
}

protocol/mining/src/rules/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
pub mod mining_rule;

0 commit comments

Comments
 (0)