diff --git a/lib/ain-ocean/src/indexer/loan_token.rs b/lib/ain-ocean/src/indexer/loan_token.rs index 68ae5197045..2a90c33ee44 100644 --- a/lib/ain-ocean/src/indexer/loan_token.rs +++ b/lib/ain-ocean/src/indexer/loan_token.rs @@ -206,4 +206,21 @@ fn is_live(active: Option, next: Option, block: Block) {} +pub fn invalidate_block_end(services: &Arc, block: Block) -> Result<()> { + let pt = services + .price_ticker + .by_id + .list(None, SortOrder::Ascending)? + .map(|item| { + let (_, priceticker) = item?; + Ok(priceticker) + }) + .collect::>>()?; + + for ticker in pt { + let id_with_height = (ticker.id.0.clone(), ticker.id.1.clone(), block.height); + services.oracle_price_active.by_id.delete(&id_with_height)?; + } + + Ok(()) +} diff --git a/lib/ain-ocean/src/indexer/mod.rs b/lib/ain-ocean/src/indexer/mod.rs index b0d72048f16..5215fa193f7 100644 --- a/lib/ain-ocean/src/indexer/mod.rs +++ b/lib/ain-ocean/src/indexer/mod.rs @@ -12,6 +12,8 @@ pub mod helper; use std::{collections::HashMap, sync::Arc, time::Instant}; +use std::{sync::Arc, time::Instant}; +use crate::indexer::loan_token::invalidate_block_end; use ain_dftx::{deserialize, is_skipped_tx, DfTx, Stack}; use defichain_rpc::json::blockchain::{Block, Transaction, Vin, VinStandard}; use helper::check_if_evm_tx; @@ -571,6 +573,8 @@ pub fn index_block(services: &Arc, block: Block) -> Resul Ok(()) } -pub fn invalidate_block(_block: Block) -> Result<()> { +pub fn invalidate_block(services: &Arc,_block: Block) -> Result<()> { + invalidate_block_end(services,_block)?; + invalidate_(services,_block)?; Ok(()) }