Skip to content

Commit f3b9eaf

Browse files
0xdappergrandizzyDaniPopes
authored
fix(anvil): trace_filter same to and from block range is valid (#10400)
* fix(anvil): trace_filter same to and from block range is valid * Update crates/anvil/src/eth/backend/mem/mod.rs --------- Co-authored-by: grandizzy <38490174+grandizzy@users.noreply.github.com> Co-authored-by: DaniPopes <57450786+DaniPopes@users.noreply.github.com>
1 parent 47cd856 commit f3b9eaf

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

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

+4-3
Original file line numberDiff line numberDiff line change
@@ -2519,14 +2519,15 @@ impl Backend {
25192519
) -> Result<Vec<LocalizedTransactionTrace>, BlockchainError> {
25202520
let matcher = filter.matcher();
25212521
let start = filter.from_block.unwrap_or(0);
2522-
let end = filter.to_block.unwrap_or(self.best_number());
2522+
let end = filter.to_block.unwrap_or_else(|| 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

+15
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)