radix_transactions/model/v1/
validated_notarized_transaction.rs1use crate::internal_prelude::*;
2use radix_common::constants::AuthAddresses;
3
4#[derive(Debug, Clone, Eq, PartialEq)]
5pub struct ValidatedNotarizedTransactionV1 {
6 pub prepared: PreparedNotarizedTransactionV1,
7 pub encoded_instructions: Vec<u8>,
8 pub signer_keys: IndexSet<PublicKey>,
9 pub num_of_signature_validations: usize,
10}
11
12impl HasTransactionIntentHash for ValidatedNotarizedTransactionV1 {
13 fn transaction_intent_hash(&self) -> TransactionIntentHash {
14 self.prepared.transaction_intent_hash()
15 }
16}
17
18impl HasSignedTransactionIntentHash for ValidatedNotarizedTransactionV1 {
19 fn signed_transaction_intent_hash(&self) -> SignedTransactionIntentHash {
20 self.prepared.signed_transaction_intent_hash()
21 }
22}
23
24impl HasNotarizedTransactionHash for ValidatedNotarizedTransactionV1 {
25 fn notarized_transaction_hash(&self) -> NotarizedTransactionHash {
26 self.prepared.notarized_transaction_hash()
27 }
28}
29
30#[allow(deprecated)]
31impl ValidatedNotarizedTransactionV1 {
32 pub fn hashes(&self) -> UserTransactionHashes {
33 self.prepared.hashes()
34 }
35
36 pub fn create_executable(self) -> ExecutableTransaction {
37 let intent = self.prepared.signed_intent.intent;
38 let intent_hash = intent.transaction_intent_hash();
39 let header = intent.header.inner;
40 let summary = self.prepared.summary;
41
42 ExecutableTransaction::new_v1(
43 self.encoded_instructions,
44 AuthZoneInit::proofs(AuthAddresses::signer_set(&self.signer_keys)),
45 intent.instructions.references.clone(),
46 intent.blobs.blobs_by_hash,
47 ExecutionContext {
48 unique_hash: intent_hash.0,
49 intent_hash_nullifications: vec![IntentHashNullification::TransactionIntent {
50 intent_hash,
51 expiry_epoch: header.end_epoch_exclusive,
52 }],
53 epoch_range: Some(EpochRange {
54 start_epoch_inclusive: header.start_epoch_inclusive,
55 end_epoch_exclusive: header.end_epoch_exclusive,
56 }),
57 payload_size: summary.effective_length,
58 num_of_signature_validations: self.num_of_signature_validations,
59 costing_parameters: TransactionCostingParameters {
60 tip: TipSpecifier::Percentage(header.tip_percentage),
61 free_credit_in_xrd: Decimal::ZERO,
62 },
63 pre_allocated_addresses: vec![],
64 disable_limits_and_costing_modules: false,
65 proposer_timestamp_range: None,
66 },
67 )
68 }
69}