miden_node_store/state/writer/
apply_block.rs1use miden_node_proto::domain::proof_request::BlockProofRequest;
2use miden_node_tracing::miden_instrument;
3use miden_protocol::batch::OrderedBatches;
4use miden_protocol::block::{BlockInputs, BlockNumber, SignedBlock};
5use miden_protocol::utils::serde::Serializable;
6
7use crate::COMPONENT;
8use crate::errors::ApplyBlockWithProvingInputsError;
9use crate::state::BlockWriter;
10
11impl BlockWriter {
12 #[miden_instrument(
16 target = COMPONENT,
17 err,
18 )]
19 pub async fn apply_block_with_proving_inputs(
20 &mut self,
21 ordered_batches: OrderedBatches,
22 block_inputs: BlockInputs,
23 signed_block: SignedBlock,
24 ) -> Result<(), ApplyBlockWithProvingInputsError> {
25 let block_header = signed_block.header().clone();
26 let block_num = block_header.block_num();
27
28 let proving_inputs = BlockProofRequest {
29 tx_batches: ordered_batches,
30 block_header,
31 block_inputs,
32 };
33
34 self.save_proving_inputs(block_num, &proving_inputs)
35 .await
36 .map_err(ApplyBlockWithProvingInputsError::SaveProvingInputs)?;
37
38 self.apply_block(signed_block, None)
39 .await
40 .map_err(ApplyBlockWithProvingInputsError::ApplyBlock)
41 }
42
43 pub async fn save_proving_inputs(
45 &self,
46 block_num: BlockNumber,
47 proving_inputs: &BlockProofRequest,
48 ) -> std::io::Result<()> {
49 self.block_store
50 .save_proving_inputs(block_num, &proving_inputs.to_bytes())
51 .await
52 }
53}