(&mut self, block: &Block)
| 439 | let state = self.state.lock().unwrap(); |
| 440 | |
| 441 | Ok(state |
| 442 | .building_payloads |
| 443 | .get(&payload_id) |
| 444 | .cloned() |
| 445 | .expect("Payload ID not found")) |
| 446 | } |
| 447 | |
| 448 | async fn check_payload( |
| 449 | &mut self, |
| 450 | block: &Block, |
| 451 | ) -> Result<PayloadStatus, summit_types::EngineClientError> { |
| 452 | let mut state = self.state.lock().unwrap(); |
| 453 | |
| 454 | if let Some(override_status) = state.check_payload_overrides.pop_front() { |
| 455 | return Ok(override_status); |
| 456 | } |
| 457 | |
| 458 | if state.force_invalid { |
| 459 | return Ok(PayloadStatus::new( |
| 460 | PayloadStatusEnum::Invalid { |
| 461 | validation_error: "Mock: Forced invalid".to_string(), |
| 462 | }, |
| 463 | None, |
| 464 | )); |
| 465 | } |
| 466 | |
| 467 | let block_hash = block.payload.payload_inner.payload_inner.block_hash; |
| 468 | let parent_hash = block.payload.payload_inner.payload_inner.parent_hash; |
| 469 | |
| 470 | // Check if parent exists in our canonical chain |
| 471 | if !state.canonical_blocks.contains_key(&parent_hash) { |
| 472 | let status = PayloadStatus::new( |
| 473 | PayloadStatusEnum::Invalid { |
| 474 | validation_error: "Parent block not found".to_string(), |
| 475 | }, |
| 476 | None, |
| 477 | ); |
| 478 | state.known_blocks.insert(block_hash, status.clone()); |
| 479 | return Ok(status); |
| 480 | } |
| 481 | |
| 482 | // Block is valid - store both status and block data |
no outgoing calls