fn verify_v4_transaction(
        request: &Request,
        network: Network,
        script_verifier: script::Verifier<ZS>,
        cached_ffi_transaction: Arc<CachedFfiTransaction>,
        utxo_sender: mpsc::UnboundedSender<script::Response>,
        joinsplit_data: &Option<transaction::JoinSplitData<Groth16Proof>>,
        sapling_shielded_data: &Option<sapling::ShieldedData<sapling::PerSpendAnchor>>,
    ) -> Result<AsyncChecks, TransactionError> {
        let tx = request.transaction();
        let upgrade = request.upgrade(network);

        Self::verify_v4_transaction_network_upgrade(&tx, upgrade)?;

        let shielded_sighash = tx.sighash(upgrade, HashType::ALL, None);

        Ok(Self::verify_transparent_inputs_and_outputs(
            request,
            network,
            script_verifier,
            cached_ffi_transaction,
            utxo_sender,
        )?
        .and(Self::verify_sprout_shielded_data(
            joinsplit_data,
            &shielded_sighash,
        )?)
        .and(Self::verify_sapling_shielded_data(
            sapling_shielded_data,
            &shielded_sighash,
        )?))
    }
/// Verify a V4 transaction.
///
/// Returns a set of asynchronous checks that must all succeed for the transaction to be
/// considered valid. These checks include:
///
/// - transparent transfers
/// - sprout shielded data
/// - sapling shielded data
///
/// The parameters of this method are:
///
/// - the `request` to verify (that contains the transaction and other metadata, see [`Request`]
///   for more information)
/// - the `network` to consider when verifying
/// - the `script_verifier` to use for verifying the transparent transfers
/// - the prepared `cached_ffi_transaction` used by the script verifier
/// - the Sprout `joinsplit_data` shielded data in the transaction
/// - the `sapling_shielded_data` in the transaction
Verify a V4 transaction.
Returns a set of asynchronous checks that must all succeed for the transaction to be
considered valid. These checks include.

transparent transfers
sprout shielded data
sapling shielded data

The parameters of this method are.


Verify a V4 transaction . Returns a set of asynchronous checks that must all succeed for the transaction to be considered valid . These checks include . transparent transfers sprout shielded data sapling shielded data The parameters of this method are .
fn verify_v4_transaction(
        request: &Request,
        network: Network,
        script_verifier: script::Verifier<ZS>,
        cached_ffi_transaction: Arc<CachedFfiTransaction>,
        utxo_sender: mpsc::UnboundedSender<script::Response>,
        joinsplit_data: &Option<transaction::JoinSplitData<Groth16Proof>>,
        sapling_shielded_data: &Option<sapling::ShieldedData<sapling::PerSpendAnchor>>,
    ) -> Result<AsyncChecks, TransactionError> {
        let tx = request.transaction();
        let upgrade = request.upgrade(network);
        Self::verify_v4_transaction_network_upgrade(&tx, upgrade)?;
        let shielded_sighash = tx.sighash(upgrade, HashType::ALL, None);
        Ok(Self::verify_transparent_inputs_and_outputs(
            request,
            network,
            script_verifier,
            cached_ffi_transaction,
            utxo_sender,
        )?
        .and(Self::verify_sprout_shielded_data(
            joinsplit_data,
            &shielded_sighash,
        )?)
        .and(Self::verify_sapling_shielded_data(
            sapling_shielded_data,
            &shielded_sighash,
        )?))
    }
fn verify_v4_transaction ( request : & Request , network : Network , script_verifier : script :: Verifier < ZS > , cached_ffi_transaction : Arc < CachedFfiTransaction > , utxo_sender : mpsc :: UnboundedSender < script :: Response > , joinsplit_data : & Option < transaction :: JoinSplitData < Groth16Proof > > , sapling_shielded_data : & Option < sapling :: ShieldedData < sapling :: PerSpendAnchor > > , ) -> Result < AsyncChecks , TransactionError > { let tx = request . transaction ( ) ; let upgrade = request . upgrade ( network ) ; Self :: verify_v4_transaction_network_upgrade ( & tx , upgrade ) ? ; let shielded_sighash = tx . sighash ( upgrade , HashType :: ALL , None ) ; Ok ( Self :: verify_transparent_inputs_and_outputs ( request , network , script_verifier , cached_ffi_transaction , utxo_sender , ) ? . and ( Self :: verify_sprout_shielded_data ( joinsplit_data , & shielded_sighash , ) ? ) . and ( Self :: verify_sapling_shielded_data ( sapling_shielded_data , & shielded_sighash , ) ? ) ) }
Verify a V4 transaction.
Verify a V4 transaction .
request
&Request
network
Network
script_verifier
script::Verifier<ZS>
cached_ffi_transaction
Arc<CachedFfiTransaction>
utxo_sender
mpsc::UnboundedSender<script::Response>
joinsplit_data
&Option<transaction::JoinSplitData<Groth16Proof>>
sapling_shielded_data
&Option<sapling::ShieldedData<sapling::PerSpendAnchor>>