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

Method commit_built_payload

actions/harness/src/engine.rs:424–520  ·  view source on GitHub ↗

Commit a built payload to the database and register its header/state root.

(
        inner: &mut ActionEngineClientInner,
        registry: &SharedBlockHashRegistry,
        rollup_config: &RollupConfig,
        built: BaseBuiltPayload<BasePrimitives>,
    )

Source from the content-addressed store, hash-verified

422
423 /// Commit a built payload to the database and register its header/state root.
424 fn commit_built_payload(
425 inner: &mut ActionEngineClientInner,
426 registry: &SharedBlockHashRegistry,
427 rollup_config: &RollupConfig,
428 built: BaseBuiltPayload<BasePrimitives>,
429 ) -> TransportResult<(B256, L2BlockInfo)> {
430 let block: BaseBlock = built.block().clone_block();
431 let hdr = block.header.clone();
432 let block_number = hdr.number();
433 let block_hash = block.hash_slow();
434 let state_root = hdr.state_root();
435
436 if let Some(existing) = inner.executed_infos.get(&block_number)
437 && existing.block_info.hash == block_hash
438 {
439 return Ok((block_hash, *existing));
440 }
441
442 // Commit the block state to the database so subsequent blocks can build on it.
443 if let Some(executed) = built.executed_block() {
444 let execution_output = executed.execution_output;
445 let receipts = execution_output.result.receipts.clone();
446 let execution_outcome = ExecutionOutcome {
447 bundle: execution_output.state.clone(),
448 receipts: vec![receipts.clone()],
449 first_block: block_number,
450 requests: vec![execution_output.result.requests.clone()],
451 };
452
453 let state_provider = inner.provider_factory.provider().map_err(|e| {
454 TransportError::from(TransportErrorKind::custom_str(&format!(
455 "failed to get provider: {e}"
456 )))
457 })?;
458 let hashed_state = HashedPostStateProvider::hashed_post_state(
459 &LatestStateProviderRef::new(&state_provider),
460 &execution_output.state,
461 )
462 .map_err(|e| {
463 TransportError::from(TransportErrorKind::custom_str(&format!(
464 "failed to calculate hashed_post_state: {e}"
465 )))
466 })?;
467 drop(state_provider);
468
469 let provider_rw = inner.provider_factory.provider_rw().map_err(|e| {
470 TransportError::from(TransportErrorKind::custom_str(&format!(
471 "failed to get provider_rw: {e}"
472 )))
473 })?;
474 provider_rw
475 .append_blocks_with_state(
476 vec![executed.recovered_block.as_ref().clone()],
477 &execution_outcome,
478 hashed_state.into_sorted(),
479 )
480 .map_err(|e| {
481 TransportError::from(TransportErrorKind::custom_str(&format!(

Callers

nothing calls this directly

Calls 11

hash_slowMethod · 0.80
get_state_rootMethod · 0.80
blockMethod · 0.45
cloneMethod · 0.45
numberMethod · 0.45
state_rootMethod · 0.45
getMethod · 0.45
executed_blockMethod · 0.45
providerMethod · 0.45
commitMethod · 0.45
insertMethod · 0.45

Tested by

no test coverage detected