Skip to main content

miden_objects/decoded/
protocol_config.rs

1//! Domain construction for decoded protocol_config messages.
2pub use proto::protocol_config::DecodedKernelConfig as KernelConfig;
3
4use crate::decoded::VerificationError;
5use crate::{Verify, proto};
6
7#[cfg(test)]
8mod tests;
9
10#[cfg(test)]
11pub(crate) mod test_utils;
12
13impl Verify for KernelConfig {
14    type Verified = miden_protocol::protocol_config::KernelConfig;
15    type Error = miden_protocol::errors::ProtocolConfigError;
16    fn verify(self) -> Result<Self::Verified, Self::Error> {
17        Self::Verified::new(self.main_proc, self.kernel_procs.into_inner())
18    }
19}
20
21pub use proto::protocol_config::DecodedProofSecurityPolicy as ProofSecurityPolicy;
22
23impl Verify for ProofSecurityPolicy {
24    type Verified = miden_protocol::protocol_config::ProofSecurityPolicy;
25    type Error = VerificationError;
26    fn verify(self) -> Result<Self::Verified, Self::Error> {
27        Ok(Self::Verified::new(
28            self.security_estimator_root,
29            self.minimum_bits.try_into()?,
30        )?)
31    }
32}
33
34pub use proto::protocol_config::DecodedProofVerificationConfig as ProofVerificationConfig;
35
36impl Verify for ProofVerificationConfig {
37    type Verified = miden_protocol::protocol_config::ProofVerificationConfig;
38    type Error = VerificationError;
39    fn verify(self) -> Result<Self::Verified, Self::Error> {
40        Ok(Self::Verified::new(
41            self.vm_verifier_root,
42            self.precompile_verifier_root,
43            self.security_policy.verify()?,
44        ))
45    }
46}
47
48pub use proto::protocol_config::DecodedProtocolConfig as ProtocolConfig;
49
50impl Verify for ProtocolConfig {
51    type Verified = miden_protocol::protocol_config::ProtocolConfig;
52    type Error = VerificationError;
53    fn verify(self) -> Result<Self::Verified, Self::Error> {
54        Ok(Self::Verified::new(
55            miden_protocol::asset::AssetId::try_from(self.fee_asset_id)?,
56            self.tx_kernel.verify()?,
57            self.batch_kernel.verify()?,
58            self.block_kernel.verify()?,
59            self.proof_verification.verify()?,
60        )?)
61    }
62}