fn verify_v5_transaction(
        request: &Request,
        network: Network,
        script_verifier: script::Verifier<ZS>,
        cached_ffi_transaction: Arc<CachedFfiTransaction>,
        utxo_sender: mpsc::UnboundedSender<script::Response>,
        sapling_shielded_data: &Option<sapling::ShieldedData<sapling::SharedAnchor>>,
        orchard_shielded_data: &Option<orchard::ShieldedData>,
    ) -> Result<AsyncChecks, TransactionError> {
        let transaction = request.transaction();
        let upgrade = request.upgrade(network);

        Self::verify_v5_transaction_network_upgrade(&transaction, upgrade)?;

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

        Ok(Self::verify_transparent_inputs_and_outputs(
            request,
            network,
            script_verifier,
            cached_ffi_transaction,
            utxo_sender,
        )?
        .and(Self::verify_sapling_shielded_data(
            sapling_shielded_data,
            &shielded_sighash,
        )?)
        .and(Self::verify_orchard_shielded_data(
            orchard_shielded_data,
            &shielded_sighash,
        )?))

        // TODO:
        // - verify orchard shielded pool (ZIP-224) (#2105)
        // - shielded input and output limits? (#2379)
    }
/// Verify a V5 transaction.
///
/// Returns a set of asynchronous checks that must all succeed for the transaction to be
/// considered valid. These checks include:
///
/// - transaction support by the considered network upgrade (see [`Request::upgrade`])
/// - transparent transfers
/// - sapling shielded data (TODO)
/// - orchard shielded data (TODO)
///
/// 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 sapling shielded data of the transaction, if any
/// - the orchard shielded data of the transaction, if any
Verify a V5 transaction.
Returns a set of asynchronous checks that must all succeed for the transaction to be
considered valid. These checks include.

transaction support by the considered network upgrade
transparent transfers
sapling shielded data (TODO)
orchard shielded data (TODO)

The parameters of this method are.


Verify a V5 transaction . Returns a set of asynchronous checks that must all succeed for the transaction to be considered valid . These checks include . transaction support by the considered network upgrade transparent transfers sapling shielded data ( TODO ) orchard shielded data ( TODO ) The parameters of this method are .
fn verify_v5_transaction(
        request: &Request,
        network: Network,
        script_verifier: script::Verifier<ZS>,
        cached_ffi_transaction: Arc<CachedFfiTransaction>,
        utxo_sender: mpsc::UnboundedSender<script::Response>,
        sapling_shielded_data: &Option<sapling::ShieldedData<sapling::SharedAnchor>>,
        orchard_shielded_data: &Option<orchard::ShieldedData>,
    ) -> Result<AsyncChecks, TransactionError> {
        let transaction = request.transaction();
        let upgrade = request.upgrade(network);
        Self::verify_v5_transaction_network_upgrade(&transaction, upgrade)?;
        let shielded_sighash = transaction.sighash(upgrade, HashType::ALL, None);
        Ok(Self::verify_transparent_inputs_and_outputs(
            request,
            network,
            script_verifier,
            cached_ffi_transaction,
            utxo_sender,
        )?
        .and(Self::verify_sapling_shielded_data(
            sapling_shielded_data,
            &shielded_sighash,
        )?)
        .and(Self::verify_orchard_shielded_data(
            orchard_shielded_data,
            &shielded_sighash,
        )?))
        // TODO:
        // - verify orchard shielded pool (ZIP-224) (#2105)
        // - shielded input and output limits? (#2379)
    }
fn verify_v5_transaction ( request : & Request , network : Network , script_verifier : script :: Verifier < ZS > , cached_ffi_transaction : Arc < CachedFfiTransaction > , utxo_sender : mpsc :: UnboundedSender < script :: Response > , sapling_shielded_data : & Option < sapling :: ShieldedData < sapling :: SharedAnchor > > , orchard_shielded_data : & Option < orchard :: ShieldedData > , ) -> Result < AsyncChecks , TransactionError > { let transaction = request . transaction ( ) ; let upgrade = request . upgrade ( network ) ; Self :: verify_v5_transaction_network_upgrade ( & transaction , upgrade ) ? ; let shielded_sighash = transaction . sighash ( upgrade , HashType :: ALL , None ) ; Ok ( Self :: verify_transparent_inputs_and_outputs ( request , network , script_verifier , cached_ffi_transaction , utxo_sender , ) ? . and ( Self :: verify_sapling_shielded_data ( sapling_shielded_data , & shielded_sighash , ) ? ) . and ( Self :: verify_orchard_shielded_data ( orchard_shielded_data , & shielded_sighash , ) ? ) ) // TODO: // - verify orchard shielded pool (ZIP-224) (#2105) // - shielded input and output limits? (#2379) }
Verify a V5 transaction.
Verify a V5 transaction .
request
&Request
network
Network
script_verifier
script::Verifier<ZS>
cached_ffi_transaction
Arc<CachedFfiTransaction>
utxo_sender
mpsc::UnboundedSender<script::Response>
sapling_shielded_data
&Option<sapling::ShieldedData<sapling::SharedAnchor>>
orchard_shielded_data
&Option<orchard::ShieldedData>