Browse Source

fix(apps/hermes): filter coming soon feeds from v2/price_feeds (#1818)

* fix hermes latest price feeds

* revert filter null byte change
Daniel Chew 1 năm trước cách đây
mục cha
commit
43bf766258

+ 1 - 1
apps/hermes/server/Cargo.lock

@@ -1796,7 +1796,7 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
 
 [[package]]
 name = "hermes"
-version = "0.5.15"
+version = "0.5.16"
 dependencies = [
  "anyhow",
  "async-trait",

+ 1 - 1
apps/hermes/server/Cargo.toml

@@ -1,6 +1,6 @@
 [package]
 name        = "hermes"
-version     = "0.5.15"
+version     = "0.5.16"
 description = "Hermes is an agent that provides Verified Prices from the Pythnet Pyth Oracle."
 edition     = "2021"
 

+ 13 - 5
apps/hermes/server/src/network/pythnet.rs

@@ -33,6 +33,7 @@ use {
     },
     borsh::BorshDeserialize,
     futures::stream::StreamExt,
+    pyth_sdk::PriceIdentifier,
     pyth_sdk_solana::state::{
         load_mapping_account,
         load_product_account,
@@ -384,13 +385,20 @@ pub async fn fetch_and_store_price_feeds_metadata<S>(
     rpc_client: &RpcClient,
 ) -> Result<Vec<PriceFeedMetadata>>
 where
-    S: PriceFeedMeta,
+    S: PriceFeedMeta + Aggregates,
 {
     let price_feeds_metadata = fetch_price_feeds_metadata(mapping_address, rpc_client).await?;
-    state
-        .store_price_feeds_metadata(&price_feeds_metadata)
-        .await?;
-    Ok(price_feeds_metadata)
+    let all_ids = Aggregates::get_price_feed_ids(state).await;
+
+    // Filter price_feeds_metadata to only include entries with IDs in all_ids
+    let filtered_metadata: Vec<PriceFeedMetadata> = price_feeds_metadata
+        .into_iter()
+        .filter(|metadata| all_ids.contains(&PriceIdentifier::from(metadata.id)))
+        .collect();
+
+
+    state.store_price_feeds_metadata(&filtered_metadata).await?;
+    Ok(filtered_metadata)
 }
 
 async fn fetch_price_feeds_metadata(