@@ -24,6 +24,8 @@ use kaspa_core::{
24
24
} ;
25
25
use kaspa_p2p_lib:: Hub ;
26
26
27
+ use crate :: rules:: mining_rule:: MiningRule ;
28
+
27
29
const RULE_ENGINE : & str = "mining-rule-engine" ;
28
30
const SYNC_RATE_THRESHOLD : f64 = 0.10 ;
29
31
@@ -37,6 +39,7 @@ pub struct MiningRuleEngine {
37
39
consensus_manager : Arc < ConsensusManager > ,
38
40
hub : Hub ,
39
41
mining_rules : Arc < MiningRules > ,
42
+ rules : Vec < Arc < dyn MiningRule > > ,
40
43
}
41
44
42
45
impl MiningRuleEngine {
@@ -80,11 +83,12 @@ impl MiningRuleEngine {
80
83
. saturating_sub ( self . config . finality_duration_in_milliseconds ( ) . get ( sink_daa_timestamp. daa_score ) * 3 ) ;
81
84
82
85
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: {}/{}" ,
84
87
rate,
85
88
is_finality_recent,
86
89
elapsed_time. as_secs( ) ,
87
90
delta. body_counts,
91
+ self . has_sufficient_peer_connectivity( ) ,
88
92
expected_blocks,
89
93
) ;
90
94
@@ -110,6 +114,15 @@ impl MiningRuleEngine {
110
114
111
115
// START - Rule Engine
112
116
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
+
113
126
// End - Rule Engine
114
127
}
115
128
@@ -126,6 +139,8 @@ impl MiningRuleEngine {
126
139
hub : Hub ,
127
140
mining_rules : Arc < MiningRules > ,
128
141
) -> Self {
142
+ let rules: Vec < Arc < ( dyn MiningRule + ' static ) > > = vec ! [ ] ;
143
+
129
144
Self {
130
145
consensus_manager,
131
146
config,
@@ -134,6 +149,7 @@ impl MiningRuleEngine {
134
149
hub,
135
150
use_sync_rate_rule : Arc :: new ( AtomicBool :: new ( false ) ) ,
136
151
mining_rules,
152
+ rules,
137
153
}
138
154
}
139
155
0 commit comments