@@ -12,9 +12,12 @@ use crate::{
1212 keyless:: { KeylessPublicKey , KeylessSignature } ,
1313 ledger_info:: LedgerInfo ,
1414 proof:: { TransactionInfoListWithProof , TransactionInfoWithProof } ,
15- transaction:: authenticator:: {
16- AASigningData , AccountAuthenticator , AnyPublicKey , AnySignature , SingleKeyAuthenticator ,
17- TransactionAuthenticator ,
15+ transaction:: {
16+ authenticator:: {
17+ AASigningData , AccountAuthenticator , AnyPublicKey , AnySignature ,
18+ SingleKeyAuthenticator , TransactionAuthenticator ,
19+ } ,
20+ encrypted_payload:: EncryptedPayload ,
1821 } ,
1922 vm_status:: { DiscardedVMStatus , KeptVMStatus , StatusCode , StatusType , VMStatus } ,
2023 write_set:: { HotStateOp , WriteSet } ,
@@ -46,6 +49,7 @@ pub mod authenticator;
4649pub mod block_epilogue;
4750mod block_output;
4851mod change_set;
52+ pub mod encrypted_payload;
4953mod module;
5054mod multisig;
5155mod script;
@@ -546,6 +550,10 @@ impl RawTransaction {
546550 self . payload
547551 }
548552
553+ pub fn payload_ref ( & self ) -> & TransactionPayload {
554+ & self . payload
555+ }
556+
549557 pub fn executable_ref ( & self ) -> Result < TransactionExecutableRef < ' _ > > {
550558 self . payload . executable_ref ( )
551559 }
@@ -679,6 +687,8 @@ pub enum TransactionPayload {
679687 /// Contains an executable (script/entry function) along with extra configuration.
680688 /// Once this new format is fully rolled out, above payload variants will be deprecated.
681689 Payload ( TransactionPayloadInner ) ,
690+ /// Represents an encrypted transaction payload
691+ EncryptedPayload ( EncryptedPayload ) ,
682692}
683693
684694#[ derive( Clone , Debug , Hash , Eq , PartialEq , Serialize , Deserialize ) ]
@@ -761,6 +771,9 @@ impl TransactionPayload {
761771 TransactionPayload :: Payload ( TransactionPayloadInner :: V1 { extra_config, .. } ) => {
762772 extra_config. is_multisig ( )
763773 } ,
774+ TransactionPayload :: EncryptedPayload ( encrypted_payload) => {
775+ encrypted_payload. extra_config ( ) . is_multisig ( )
776+ } ,
764777 }
765778 }
766779
@@ -793,6 +806,9 @@ impl TransactionPayload {
793806 TransactionPayload :: ModuleBundle ( _) => {
794807 Err ( format_err ! ( "ModuleBundle variant is deprecated" ) )
795808 } ,
809+ TransactionPayload :: EncryptedPayload ( encrypted_payload) => {
810+ encrypted_payload. executable ( )
811+ } ,
796812 }
797813 }
798814
@@ -809,6 +825,9 @@ impl TransactionPayload {
809825 TransactionPayload :: ModuleBundle ( _) => {
810826 Err ( format_err ! ( "ModuleBundle variant is deprecated" ) )
811827 } ,
828+ TransactionPayload :: EncryptedPayload ( encrypted_payload) => {
829+ encrypted_payload. executable_ref ( )
830+ } ,
812831 }
813832 }
814833
@@ -827,6 +846,9 @@ impl TransactionPayload {
827846 TransactionPayload :: Payload ( TransactionPayloadInner :: V1 { extra_config, .. } ) => {
828847 extra_config. clone ( )
829848 } ,
849+ TransactionPayload :: EncryptedPayload ( encrypted_payload) => {
850+ encrypted_payload. extra_config ( ) . clone ( )
851+ } ,
830852 }
831853 }
832854
@@ -919,6 +941,10 @@ impl TransactionPayload {
919941 extra_config,
920942 } )
921943 }
944+
945+ pub fn is_encrypted_variant ( & self ) -> bool {
946+ matches ! ( self , Self :: EncryptedPayload ( _) )
947+ }
922948}
923949
924950impl TransactionExtraConfig {
0 commit comments