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};
5
6use crate::COMPONENT;
7use crate::errors::ApplyBlockWithProvingInputsError;
8use crate::state::BlockWriter;
9
10impl BlockWriter {
11 #[miden_instrument(
15 target = COMPONENT,
16 err,
17 )]
18 pub async fn apply_block_with_proving_inputs(
19 &mut self,
20 ordered_batches: OrderedBatches,
21 block_inputs: BlockInputs,
22 signed_block: SignedBlock,
23 ) -> Result<(), ApplyBlockWithProvingInputsError> {
24 let block_header = signed_block.header().clone();
25 let block_num = block_header.block_num();
26
27 let proving_inputs = BlockProofRequest {
28 tx_batches: ordered_batches,
29 block_header,
30 block_inputs,
31 };
32
33 self.save_proving_inputs(block_num, &proving_inputs)
34 .await
35 .map_err(ApplyBlockWithProvingInputsError::SaveProvingInputs)?;
36
37 self.apply_block(signed_block, None)
38 .await
39 .map_err(ApplyBlockWithProvingInputsError::ApplyBlock)
40 }
41
42 pub async fn save_proving_inputs(
44 &self,
45 block_num: BlockNumber,
46 proving_inputs: &BlockProofRequest,
47 ) -> std::io::Result<()> {
48 self.block_store
49 .save_proving_inputs(block_num, &miden_node_persistence::encode(proving_inputs))
50 .await
51 }
52}