miden_node_proto/domain/
nullifier.rs1use miden_objects::Word;
2use miden_objects::crypto::merkle::SmtProof;
3use miden_objects::note::Nullifier;
4
5use crate::errors::{ConversionError, MissingFieldHelper};
6use crate::generated as proto;
7
8impl From<&Nullifier> for proto::primitives::Digest {
12 fn from(value: &Nullifier) -> Self {
13 value.as_word().into()
14 }
15}
16
17impl From<Nullifier> for proto::primitives::Digest {
18 fn from(value: Nullifier) -> Self {
19 value.as_word().into()
20 }
21}
22
23impl TryFrom<proto::primitives::Digest> for Nullifier {
27 type Error = ConversionError;
28
29 fn try_from(value: proto::primitives::Digest) -> Result<Self, Self::Error> {
30 let digest: Word = value.try_into()?;
31 Ok(digest.into())
32 }
33}
34
35#[derive(Clone, Debug)]
39pub struct NullifierWitnessRecord {
40 pub nullifier: Nullifier,
41 pub proof: SmtProof,
42}
43
44impl TryFrom<proto::block_producer_store::block_inputs::NullifierWitness>
45 for NullifierWitnessRecord
46{
47 type Error = ConversionError;
48
49 fn try_from(
50 nullifier_witness_record: proto::block_producer_store::block_inputs::NullifierWitness,
51 ) -> Result<Self, Self::Error> {
52 Ok(Self {
53 nullifier: nullifier_witness_record
54 .nullifier
55 .ok_or(proto::block_producer_store::block_inputs::NullifierWitness::missing_field(
56 stringify!(nullifier),
57 ))?
58 .try_into()?,
59 proof: nullifier_witness_record
60 .opening
61 .ok_or(proto::block_producer_store::block_inputs::NullifierWitness::missing_field(
62 stringify!(opening),
63 ))?
64 .try_into()?,
65 })
66 }
67}
68
69impl From<NullifierWitnessRecord> for proto::block_producer_store::block_inputs::NullifierWitness {
70 fn from(value: NullifierWitnessRecord) -> Self {
71 Self {
72 nullifier: Some(value.nullifier.into()),
73 opening: Some(value.proof.into()),
74 }
75 }
76}