main.rs (2274B)
1 #![allow(dead_code)] 2 #![allow(unused_variables)] 3 #![allow(unused_imports)] 4 5 use alloy::{ 6 eips::BlockId, 7 providers::{Provider, ProviderBuilder, WsConnect}, transports::http::reqwest::Url, 8 }; 9 use arrow::compute::filter; 10 use dotenv::dotenv; 11 use log::info; 12 use std::path::Path; 13 use anyhow::{anyhow, Result}; 14 use std::str::FromStr; 15 use std::sync::Arc; 16 17 use block_extractor_rs::{ 18 interfaces::*, 19 tokens::*, 20 pools::*, 21 prices::*, 22 }; 23 24 use std::fs::File; 25 use parquet::file::reader::{FileReader, SerializedFileReader}; 26 27 28 #[tokio::main] 29 async fn main() -> Result<()> { 30 31 dotenv().ok(); 32 env_logger::init(); 33 34 // let rpc_url = std::env::var("WSS_URL")?; 35 // let ws = WsConnect::new(rpc_url); 36 // let provider = ProviderBuilder::new().on_ws(ws).await?; 37 38 let https_url = std::env::var("HTTPS_URL").unwrap(); 39 let provider = ProviderBuilder::new().on_builtin( 40 https_url.as_str() 41 ).await?; 42 43 // let block_number = BlockId::from(provider.get_block_number().await.unwrap()); 44 // let from_block_number = 10000835; 45 // let chunks = 50000; 46 // let (pools, pool_id) = load_pools( 47 // provider.clone(), 48 // Path::new("../data/pools.csv"), 49 // from_block_number, 50 // chunks, 51 // ).await.unwrap(); 52 // 53 // let parallel_tokens = 1; 54 // let tokens = load_tokens( 55 // provider.clone(), 56 // Path::new("../data/tokens.csv"), 57 // &pools, 58 // parallel_tokens, 59 // pool_id, 60 // ).await.unwrap(); 61 // 62 let filtered_pools = load_pools_from_file( 63 Path::new("../data/pools/pools_deg_5_liq_100_block_18_grad.csv"), 64 ).unwrap(); 65 66 let tokens = load_tokens_from_file( 67 Path::new("../data/tokens/tokens.csv"), 68 ).unwrap(); 69 70 info!("#fltered_pools {:?}", filtered_pools.len()); 71 info!("#tokens {:?}", tokens.len()); 72 73 let p_to_block = provider.get_block_number().await?; 74 let p_from_block = 18000000; 75 let block_gap = 3600; // approx 12 hours 76 77 let prices = load_prices( 78 provider.clone(), 79 &filtered_pools, 80 p_from_block, 81 p_to_block, 82 block_gap, 83 Path::new("../data/prices/prices_deg_5_liq_100_block_18_grad.parquet") 84 ).await.unwrap(); 85 86 info!("Done len prices: {:?}", prices.len()); 87 88 Ok(()) 89 90 }