Skip to content

Commit 2ad2f30

Browse files
authored
fix: eth_getBlockByNumber should return Latest if Pending is None (#194)
* fix: eth_getBlockByNumber should return Latest if Pending is None * style: improve readibility of fn block_by_number * style: removing extra whitespaces in fn test_get_pending_block
1 parent f13a2cf commit 2ad2f30

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

crates/flashblocks-rpc/src/rpc.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,13 @@ where
175175
if number.is_pending() {
176176
self.metrics.get_block_by_number.increment(1);
177177
let pending_blocks = self.flashblocks_state.get_pending_blocks();
178-
Ok(pending_blocks.get_block(full))
178+
if pending_blocks.as_ref().is_some() {
179+
return Ok(pending_blocks.get_block(full));
180+
}
181+
// No pending state available — treat `pending` as `latest`
182+
EthBlocks::rpc_block(&self.eth_api, BlockNumberOrTag::Latest.into(), full)
183+
.await
184+
.map_err(Into::into)
179185
} else {
180186
EthBlocks::rpc_block(&self.eth_api, number.into(), full).await.map_err(Into::into)
181187
}

crates/flashblocks-rpc/src/tests/rpc.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -384,9 +384,13 @@ mod tests {
384384
assert_eq!(latest_block.number(), 0);
385385

386386
// Querying pending block when it does not exist yet
387-
let pending_block =
388-
provider.get_block_by_number(alloy_eips::BlockNumberOrTag::Pending).await?;
389-
assert_eq!(pending_block.is_none(), true);
387+
let pending_block = provider
388+
.get_block_by_number(alloy_eips::BlockNumberOrTag::Pending)
389+
.await?
390+
.expect("latest block expected");
391+
392+
assert_eq!(pending_block.number(), latest_block.number());
393+
assert_eq!(pending_block.hash(), latest_block.hash());
390394

391395
let base_payload = create_first_payload();
392396
node.send_payload(base_payload).await?;

0 commit comments

Comments
 (0)