miden_node_proto/domain/
transaction.rs

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