Skip to main content

miden_objects/conversion/
protocol_config.rs

1use miden_protocol::Word;
2use miden_protocol::protocol_config::{
3    KernelConfig,
4    ProofSecurityPolicy,
5    ProofVerificationConfig,
6    ProtocolConfig,
7};
8
9use crate::proto;
10
11#[cfg(test)]
12mod tests;
13
14impl From<&KernelConfig> for proto::protocol_config::KernelConfig {
15    fn from(config: &KernelConfig) -> Self {
16        Self {
17            main_proc: Some(config.main_proc().into()),
18            kernel_procs: config.kernel_procs().iter().copied().map(Into::into).collect(),
19        }
20    }
21}
22
23impl From<KernelConfig> for proto::protocol_config::KernelConfig {
24    fn from(config: KernelConfig) -> Self {
25        (&config).into()
26    }
27}
28
29impl From<&ProofSecurityPolicy> for proto::protocol_config::ProofSecurityPolicy {
30    fn from(policy: &ProofSecurityPolicy) -> Self {
31        Self {
32            security_estimator_root: Some(policy.security_estimator_root().into()),
33            minimum_bits: u32::from(policy.minimum_bits()),
34        }
35    }
36}
37
38impl From<ProofSecurityPolicy> for proto::protocol_config::ProofSecurityPolicy {
39    fn from(policy: ProofSecurityPolicy) -> Self {
40        (&policy).into()
41    }
42}
43
44impl From<&ProofVerificationConfig> for proto::protocol_config::ProofVerificationConfig {
45    fn from(config: &ProofVerificationConfig) -> Self {
46        Self {
47            vm_verifier_root: Some(config.vm_verifier_root().into()),
48            precompile_verifier_root: Some(config.precompile_verifier_root().into()),
49            security_policy: Some(config.security_policy().into()),
50        }
51    }
52}
53
54impl From<ProofVerificationConfig> for proto::protocol_config::ProofVerificationConfig {
55    fn from(config: ProofVerificationConfig) -> Self {
56        (&config).into()
57    }
58}
59
60impl From<&ProtocolConfig> for proto::protocol_config::ProtocolConfig {
61    fn from(config: &ProtocolConfig) -> Self {
62        Self {
63            fee_asset_id: Some(Word::from(config.fee_asset_id()).into()),
64            tx_kernel: Some(config.tx_kernel().into()),
65            batch_kernel: Some(config.batch_kernel().into()),
66            block_kernel: Some(config.block_kernel().into()),
67            proof_verification: Some(config.proof_verification().into()),
68        }
69    }
70}
71
72impl From<ProtocolConfig> for proto::protocol_config::ProtocolConfig {
73    fn from(config: ProtocolConfig) -> Self {
74        (&config).into()
75    }
76}