miden_node_proto/domain/
transaction.rs

1use miden_objects::{crypto::hash::rpo::RpoDigest, transaction::TransactionId};
2
3use crate::{errors::ConversionError, generated as proto};
4
5// FROM TRANSACTION ID
6// ================================================================================================
7
8impl From<&TransactionId> for proto::digest::Digest {
9    fn from(value: &TransactionId) -> Self {
10        (*value).inner().into()
11    }
12}
13
14impl From<TransactionId> for proto::digest::Digest {
15    fn from(value: TransactionId) -> Self {
16        value.inner().into()
17    }
18}
19
20impl From<&TransactionId> for proto::transaction::TransactionId {
21    fn from(value: &TransactionId) -> Self {
22        proto::transaction::TransactionId { id: Some(value.into()) }
23    }
24}
25
26impl From<TransactionId> for proto::transaction::TransactionId {
27    fn from(value: TransactionId) -> Self {
28        (&value).into()
29    }
30}
31
32// INTO TRANSACTION ID
33// ================================================================================================
34
35impl TryFrom<proto::digest::Digest> for TransactionId {
36    type Error = ConversionError;
37
38    fn try_from(value: proto::digest::Digest) -> Result<Self, Self::Error> {
39        let digest: RpoDigest = value.try_into()?;
40        Ok(digest.into())
41    }
42}
43
44impl TryFrom<proto::transaction::TransactionId> for TransactionId {
45    type Error = ConversionError;
46
47    fn try_from(value: proto::transaction::TransactionId) -> Result<Self, Self::Error> {
48        value
49            .id
50            .ok_or(ConversionError::MissingFieldInProtobufRepresentation {
51                entity: "TransactionId",
52                field_name: "id",
53            })?
54            .try_into()
55    }
56}