MCPcopy Create free account
hub / github.com/base/base / prefetch_block_inner

Method prefetch_block_inner

crates/proof/host/src/handler.rs:297–407  ·  view source on GitHub ↗
(&self, kv: SharedKeyValueStore, block_number: u64)

Source from the content-addressed store, hash-verified

295 }
296
297 async fn prefetch_block_inner(&self, kv: SharedKeyValueStore, block_number: u64) -> bool {
298 // Scheduled tasks wait here, so the semaphore bounds concurrent prefetch RPC work rather
299 // than the number of detached tasks created by a lookahead.
300 let _permit = match self.inner.semaphore.acquire().await {
301 Ok(permit) => permit,
302 Err(_) => return false,
303 };
304
305 let block = match self
306 .inner
307 .providers
308 .l2
309 .get_block_by_number(BlockNumberOrTag::Number(block_number))
310 .full()
311 .await
312 {
313 Ok(Some(block)) => block,
314 Ok(None) => {
315 debug!(
316 target: HOST_SERVER_TARGET,
317 block_number,
318 "payload witness prefetch skipped: block not found"
319 );
320 return false;
321 }
322 Err(err) => {
323 debug!(
324 target: HOST_SERVER_TARGET,
325 block_number,
326 error = %err,
327 "payload witness prefetch skipped: failed to fetch block"
328 );
329 return false;
330 }
331 };
332
333 let parent_block_hash = block.header.inner.parent_hash;
334 let payload_attributes = match payload_attributes_from_l2_block(&self.inner.cfg, block) {
335 Ok(payload_attributes) => payload_attributes,
336 Err(err) => {
337 debug!(
338 target: HOST_SERVER_TARGET,
339 block_number,
340 error = %err,
341 "payload witness prefetch skipped: failed to reconstruct payload attributes"
342 );
343 return false;
344 }
345 };
346 // This is a best-effort duplicate-RPC guard; another task may still mark the same parent
347 // ready before this task finishes.
348 if self.lock_state().ready.contains_key(&parent_block_hash) {
349 return false;
350 }
351
352 let payload_attributes_digest = match payload_attributes_digest(&payload_attributes) {
353 Ok(digest) => digest,
354 Err(err) => {

Callers 1

prefetch_blockMethod · 0.80

Calls 14

acquireMethod · 0.80
lock_stateMethod · 0.80
mark_readyMethod · 0.80
hash_slowMethod · 0.80
get_block_by_numberMethod · 0.45
contains_keyMethod · 0.45
clientMethod · 0.45
requestMethod · 0.45

Tested by

no test coverage detected