Skip to content

Commit 85f1c3f

Browse files
LeoPatOZ0xNeshi
andauthored
New Block Scanner (#28)
Co-authored-by: 0xNeshi <[email protected]>
1 parent 5c4be1b commit 85f1c3f

File tree

10 files changed

+757
-996
lines changed

10 files changed

+757
-996
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
/target
22
/examples/**/target
33
.DS_Store
4+
.vscode

Cargo.toml

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
[workspace]
2-
members = [
3-
".",
4-
"examples/historical_scanning",
5-
"examples/simple_counter",
6-
]
2+
members = [".", "examples/historical_scanning", "examples/simple_counter"]
73
resolver = "2"
84

95
[lints.clippy]

examples/historical_scanning/main.rs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
use std::{sync::Arc, time::Duration};
22

3-
use alloy::{providers::ProviderBuilder, rpc::types::Log, sol, sol_types::SolEvent};
3+
use alloy::{
4+
eips::BlockNumberOrTag, network::Ethereum, providers::ProviderBuilder, rpc::types::Log, sol,
5+
sol_types::SolEvent,
6+
};
47
use alloy_node_bindings::Anvil;
58
use async_trait::async_trait;
6-
use event_scanner::{EventCallback, EventFilter, FixedRetryConfig, ScannerBuilder};
9+
use event_scanner::{EventCallback, EventFilter, event_scanner::EventScannerBuilder};
710

811
use tokio::time::sleep;
912
use tracing::info;
@@ -64,15 +67,14 @@ async fn main() -> anyhow::Result<()> {
6467

6568
let _ = counter_contract.increase().send().await?.get_receipt().await?;
6669

67-
let mut scanner = ScannerBuilder::new(anvil.ws_endpoint_url())
68-
.add_event_filter(increase_filter)
69-
.callback_config(FixedRetryConfig { max_attempts: 3, delay_ms: 200 })
70-
.start_block(0)
71-
.build()
72-
.await?;
70+
let mut builder = EventScannerBuilder::new();
71+
72+
builder.with_event_filter(increase_filter);
73+
74+
let mut scanner = builder.connect_ws::<Ethereum>(anvil.ws_endpoint_url()).await?;
7375

7476
sleep(Duration::from_secs(10)).await;
75-
scanner.start().await.expect("failed to start scanner");
77+
scanner.start(BlockNumberOrTag::Number(0), None).await.expect("failed to start scanner");
7678

7779
Ok(())
7880
}

examples/simple_counter/main.rs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
use std::{sync::Arc, time::Duration};
22

3-
use alloy::{providers::ProviderBuilder, rpc::types::Log, sol, sol_types::SolEvent};
3+
use alloy::{
4+
eips::BlockNumberOrTag, network::Ethereum, providers::ProviderBuilder, rpc::types::Log, sol,
5+
sol_types::SolEvent,
6+
};
47
use alloy_node_bindings::Anvil;
58
use async_trait::async_trait;
6-
use event_scanner::{EventCallback, EventFilter, FixedRetryConfig, ScannerBuilder};
9+
use event_scanner::{EventCallback, EventFilter, event_scanner::EventScannerBuilder};
710

811
use tokio::time::sleep;
912
use tracing::info;
@@ -62,14 +65,15 @@ async fn main() -> anyhow::Result<()> {
6265
callback: Arc::new(CounterCallback),
6366
};
6467

65-
let mut scanner = ScannerBuilder::new(anvil.ws_endpoint_url())
66-
.add_event_filter(increase_filter)
67-
.callback_config(FixedRetryConfig { max_attempts: 3, delay_ms: 200 })
68-
.build()
69-
.await?;
68+
let mut builder = EventScannerBuilder::new();
69+
70+
builder.with_event_filter(increase_filter);
71+
72+
let scanner = builder.connect_ws::<Ethereum>(anvil.ws_endpoint_url()).await?;
7073

7174
let task_1 = tokio::spawn(async move {
72-
scanner.start().await.expect("failed to start scanner");
75+
let mut scanner = scanner;
76+
scanner.start(BlockNumberOrTag::Latest, None).await.expect("failed to start scanner");
7377
});
7478

7579
let task_2 = tokio::spawn(async move {

0 commit comments

Comments
 (0)