Predicate input_owner doesn't works

Hi guys
I’m just remastered this tutorial to input_owner func test. The predicate looks like that

use std::inputs::input_owner;

fn main(address: Address) -> bool {
    input_owner(0).unwrap() == address || input_owner(1).unwrap() == address

and the test

use fuels::{
    prelude::{abigen, Account, TxParameters, ViewOnlyAccount},
    test_helpers::{launch_custom_provider_and_get_wallets, AssetConfig, WalletsConfig},
    types::{AssetId, Address},

async fn just_test() {
    let asset_id = AssetId::default();
    let wallets_config = WalletsConfig::new_multiple_assets(
        vec![AssetConfig {
            id: asset_id,
            num_coins: 1,
            coin_amount: 1_000,

    let wallets = &launch_custom_provider_and_get_wallets(wallets_config, None, None).await;

    let first_wallet = &wallets[0];
    // let second_wallet = &wallets[1];

        name = "MyPredicateEncoder",
        abi = "out/debug/predicates-test-abi.json"

    let predicate_data = MyPredicateEncoder::encode_data(Address::from(first_wallet.address()));
    let code_path = "out/debug/predicates-test.bin";

    let predicate: Predicate = Predicate::load_from(code_path)

    // First wallet transfers amount to predicate.
        .transfer(predicate.address(), 500, asset_id, TxParameters::default())

    // Check predicate balance.
    let balance = predicate

    assert_eq!(balance, 500);

    let amount_to_unlock = 500;


    // Predicate balance is zero.
    let balance = predicate

    assert_eq!(balance, 0);

    // first wallet balance is updated.
    let balance = first_wallet
    assert_eq!(balance, 1000);

and it gives an error like that

thread 'just_test' panicked at 'called `Result::unwrap()` on an `Err` value: IOError(Custom { kind: Other, error: "Response errors; Invalid transaction: The transaction contains a predicate which failed to validate: TransactionId(0x67e1a7730eb66855c14e1c9e3a19d937cbfdbc0a2052b2a0e2196156f60ab164)" })', tests/

And logs don’t work inside predicates and I have no idea how to debug it
Please help

There isn’t a great way to debug predicates yet, but if you change the program type to a script you should be able to debug more easily.

So, how to understand why input_owner doesn’t work?
Maybe I need somehow provide the address to the call? But I’m already use provider