Skip to content

Commit c4ae0fc

Browse files
committed
fix(anvil): trace_filter same to and from block range is valid
1 parent f9d8b9c commit c4ae0fc

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

crates/anvil/src/eth/backend/mem/mod.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2521,12 +2521,13 @@ impl Backend {
25212521
let start = filter.from_block.unwrap_or(0);
25222522
let end = filter.to_block.unwrap_or(self.best_number());
25232523

2524-
let dist = end.saturating_sub(start);
2525-
if dist == 0 {
2524+
if start > end {
25262525
return Err(BlockchainError::RpcError(RpcError::invalid_params(
25272526
"invalid block range, ensure that to block is greater than from block".to_string(),
25282527
)));
25292528
}
2529+
2530+
let dist = end - start;
25302531
if dist > 300 {
25312532
return Err(BlockchainError::RpcError(RpcError::invalid_params(
25322533
"block range too large, currently limited to 300".to_string(),

crates/anvil/tests/it/traces.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -873,6 +873,21 @@ async fn test_trace_filter() {
873873
let traces = api.trace_filter(tracer).await;
874874
assert!(traces.is_err());
875875

876+
// Test same from and to block is valid
877+
let latest = provider.get_block_number().await.unwrap();
878+
let tracer = TraceFilter {
879+
from_block: Some(latest),
880+
to_block: Some(latest),
881+
from_address: vec![],
882+
to_address: vec![],
883+
mode: TraceFilterMode::Union,
884+
after: None,
885+
count: None,
886+
};
887+
888+
let traces = api.trace_filter(tracer).await;
889+
assert!(traces.is_ok());
890+
876891
// Test invalid block range
877892
let latest = provider.get_block_number().await.unwrap();
878893
let tracer = TraceFilter {

0 commit comments

Comments
 (0)