anvil_zksync_api_server/impls/
anvil_zks.rs1use anvil_zksync_api_decl::AnvilZksNamespaceServer;
2use anvil_zksync_core::node::boojumos_get_batch_witness;
3use anvil_zksync_l1_sidecar::L1Sidecar;
4use jsonrpsee::core::{async_trait, RpcResult};
5use zksync_types::web3::Bytes;
6use zksync_types::{L1BatchNumber, H256};
7
8use crate::error::{rpc_invalid_params, RpcErrorAdapter};
9
10pub struct AnvilZksNamespace {
11 l1_sidecar: L1Sidecar,
12}
13
14impl AnvilZksNamespace {
15 pub fn new(l1_sidecar: L1Sidecar) -> Self {
16 Self { l1_sidecar }
17 }
18}
19
20#[async_trait]
21impl AnvilZksNamespaceServer for AnvilZksNamespace {
22 async fn commit_batch(&self, batch_number: L1BatchNumber) -> RpcResult<H256> {
23 self.l1_sidecar
24 .commit_batch(batch_number)
25 .await
26 .map_err(RpcErrorAdapter::into)
27 }
28
29 async fn prove_batch(&self, batch_number: L1BatchNumber) -> RpcResult<H256> {
30 self.l1_sidecar
31 .prove_batch(batch_number)
32 .await
33 .map_err(RpcErrorAdapter::into)
34 }
35
36 async fn execute_batch(&self, batch_number: L1BatchNumber) -> RpcResult<H256> {
37 self.l1_sidecar
38 .execute_batch(batch_number)
39 .await
40 .map_err(RpcErrorAdapter::into)
41 }
42
43 async fn get_boojum_witness(&self, batch_number: L1BatchNumber) -> RpcResult<Bytes> {
44 Ok(boojumos_get_batch_witness(&batch_number)
45 .ok_or(rpc_invalid_params(
46 "Batch with this number doesn't exist yet".to_string(),
47 ))?
48 .into())
49 }
50}