Skip to content

Commit cf751cd

Browse files
authored
chore: remove unused filters field from ChainState (#293)
* removed chain storage an related code * chore: removed fork detector and fork structs (#290) * removed filters field from ChainState (ez)
1 parent 0cbb078 commit cf751cd

File tree

5 files changed

+1
-75
lines changed

5 files changed

+1
-75
lines changed

dash-spv-ffi/src/types.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,6 @@ impl From<DetailedSyncProgress> for FFIDetailedSyncProgress {
182182
#[repr(C)]
183183
pub struct FFIChainState {
184184
pub header_height: u32,
185-
pub filter_header_height: u32,
186185
pub masternode_height: u32,
187186
pub last_chainlock_height: u32,
188187
pub last_chainlock_hash: FFIString,
@@ -193,7 +192,6 @@ impl From<ChainState> for FFIChainState {
193192
fn from(state: ChainState) -> Self {
194193
FFIChainState {
195194
header_height: state.headers.len() as u32,
196-
filter_header_height: state.filter_headers.len() as u32,
197195
masternode_height: state.last_masternode_diff_height.unwrap_or(0),
198196
last_chainlock_height: state.last_chainlock_height.unwrap_or(0),
199197
last_chainlock_hash: FFIString::new(

dash-spv-ffi/tests/unit/test_type_conversions.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,6 @@ mod tests {
164164
fn test_chain_state_none_values() {
165165
let state = dash_spv::ChainState {
166166
headers: vec![],
167-
filter_headers: vec![],
168167
last_chainlock_height: None,
169168
last_chainlock_hash: None,
170169
current_filter_tip: None,
@@ -175,7 +174,6 @@ mod tests {
175174

176175
let ffi_state = FFIChainState::from(state);
177176
assert_eq!(ffi_state.header_height, 0);
178-
assert_eq!(ffi_state.filter_header_height, 0);
179177
assert_eq!(ffi_state.masternode_height, 0);
180178
assert_eq!(ffi_state.last_chainlock_height, 0);
181179
assert_eq!(ffi_state.current_filter_tip, 0);

dash-spv/src/client/core.rs

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -271,42 +271,6 @@ impl<
271271
Ok(())
272272
}
273273

274-
/// Clear all stored filter headers and compact filters while keeping other data intact.
275-
pub async fn clear_filters(&mut self) -> Result<()> {
276-
{
277-
let mut storage = self.storage.lock().await;
278-
storage.clear_filters().await.map_err(SpvError::Storage)?;
279-
}
280-
281-
// Reset in-memory chain state for filters
282-
{
283-
let mut state = self.state.write().await;
284-
state.filter_headers.clear();
285-
state.current_filter_tip = None;
286-
}
287-
288-
// Reset filter sync manager tracking
289-
self.sync_manager.filter_sync_mut().clear_filter_state().await;
290-
291-
// Reset filter-related statistics
292-
let received_heights = {
293-
let stats = self.stats.read().await;
294-
stats.received_filter_heights.clone()
295-
};
296-
297-
{
298-
let mut stats = self.stats.write().await;
299-
stats.filter_headers_downloaded = 0;
300-
stats.filter_height = 0;
301-
stats.filters_downloaded = 0;
302-
stats.filters_received = 0;
303-
}
304-
305-
received_heights.lock().await.clear();
306-
307-
Ok(())
308-
}
309-
310274
// ============ Configuration ============
311275

312276
/// Update the client configuration.

dash-spv/src/storage/state.rs

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,6 @@ impl DiskStorageManager {
2222
// For checkpoint sync, we need to store headers starting from the checkpoint height
2323
self.store_headers_at_height(&state.headers, state.sync_base_height).await?;
2424

25-
// Store filter headers
26-
self.filter_headers
27-
.write()
28-
.await
29-
.store_items(&state.filter_headers, state.sync_base_height, self)
30-
.await?;
31-
3225
// Store other state as JSON
3326
let state_data = serde_json::json!({
3427
"last_chainlock_height": state.last_chainlock_height,
@@ -87,10 +80,6 @@ impl DiskStorageManager {
8780
if let Some(tip_height) = self.get_tip_height().await? {
8881
state.headers = self.load_headers(range_start..tip_height + 1).await?;
8982
}
90-
if let Some(filter_tip_height) = self.get_filter_tip_height().await? {
91-
state.filter_headers =
92-
self.load_filter_headers(range_start..filter_tip_height + 1).await?;
93-
}
9483

9584
Ok(Some(state))
9685
}

dash-spv/src/types.rs

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -250,16 +250,12 @@ impl DetailedSyncProgress {
250250
///
251251
/// ## Memory Considerations
252252
/// - headers: ~80 bytes per header
253-
/// - filter_headers: 32 bytes per filter header
254-
/// - At 2M blocks: ~160MB for headers, ~64MB for filter headers
253+
/// - At 2M blocks: ~160MB for headers
255254
#[derive(Clone, Default)]
256255
pub struct ChainState {
257256
/// Block headers indexed by height.
258257
pub headers: Vec<BlockHeader>,
259258

260-
/// Filter headers indexed by height.
261-
pub filter_headers: Vec<FilterHeader>,
262-
263259
/// Last ChainLock height.
264260
pub last_chainlock_height: Option<u32>,
265261

@@ -355,28 +351,11 @@ impl ChainState {
355351
self.headers.get(index)
356352
}
357353

358-
/// Get filter header at the given height.
359-
pub fn filter_header_at_height(&self, height: u32) -> Option<&FilterHeader> {
360-
if height < self.sync_base_height {
361-
return None; // Height is before our sync base
362-
}
363-
let index = (height - self.sync_base_height) as usize;
364-
self.filter_headers.get(index)
365-
}
366-
367354
/// Add headers to the chain.
368355
pub fn add_headers(&mut self, headers: Vec<BlockHeader>) {
369356
self.headers.extend(headers);
370357
}
371358

372-
/// Add filter headers to the chain.
373-
pub fn add_filter_headers(&mut self, filter_headers: Vec<FilterHeader>) {
374-
if let Some(last) = filter_headers.last() {
375-
self.current_filter_tip = Some(*last);
376-
}
377-
self.filter_headers.extend(filter_headers);
378-
}
379-
380359
/// Get the tip header
381360
pub fn get_tip_header(&self) -> Option<BlockHeader> {
382361
self.headers.last().copied()
@@ -458,7 +437,6 @@ impl ChainState {
458437
) {
459438
// Clear any existing headers
460439
self.headers.clear();
461-
self.filter_headers.clear();
462440

463441
// Set sync base height to checkpoint
464442
self.sync_base_height = checkpoint_height;
@@ -498,7 +476,6 @@ impl std::fmt::Debug for ChainState {
498476
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
499477
f.debug_struct("ChainState")
500478
.field("headers", &format!("{} headers", self.headers.len()))
501-
.field("filter_headers", &format!("{} filter headers", self.filter_headers.len()))
502479
.field("last_chainlock_height", &self.last_chainlock_height)
503480
.field("last_chainlock_hash", &self.last_chainlock_hash)
504481
.field("current_filter_tip", &self.current_filter_tip)

0 commit comments

Comments
 (0)