radix_transactions/model/v2/
subintent_v2.rs

1use super::*;
2use crate::internal_prelude::*;
3
4//=================================================================================
5// NOTE:
6// See versioned.rs for tests and a demonstration for the calculation of hashes etc
7//=================================================================================
8
9/// A Subintent is a distinct concept to a [`TransactionIntentV2`].
10///
11/// * A subintent has to have a parent in a transaction.
12/// * A subintent is only "committed" on failure.
13/// * A subintent can't pay fees.
14///
15/// If you are looking to construct a subintent, use a [`PartialTransactionV2Builder`],
16/// which builds a [`SignedPartialTransactionV2`].
17#[derive(Debug, Clone, Eq, PartialEq, ManifestSbor, ScryptoDescribe)]
18pub struct SubintentV2 {
19    pub intent_core: IntentCoreV2,
20}
21
22define_transaction_payload!(
23    SubintentV2,
24    RawSubintent,
25    PreparedSubintentV2 {
26        intent_core: PreparedIntentCoreV2,
27    },
28    TransactionDiscriminator::V2Subintent,
29);
30
31impl HasSubintentHash for PreparedSubintentV2 {
32    fn subintent_hash(&self) -> SubintentHash {
33        SubintentHash::from_hash(self.summary.hash)
34    }
35}