validate_transaction: RuntimeDescriptor<
    [
        source: TransactionValidityTransactionSource,
        tx: Binary,
        block_hash: FixedSizeBinary<32>,
    ],
    ResultPayload<
        {
            longevity: bigint;
            priority: bigint;
            propagate: boolean;
            provides: Binary[];
            requires: Binary[];
        },
        TransactionValidityError,
    >,
>

Validate the transaction.

This method is invoked by the transaction pool to learn details about given transaction. The implementation should make sure to verify the correctness of the transaction against current state. The given block_hash corresponds to the hash of the block that is used as current state.

Note that this call may be performed by the pool multiple times and transactions might be verified in any possible order.