NEAR PROTOCOL FunctionCallError(HostError(GasLimitExceeded)) Ошибка при восстановлении более 150 токенов

Я разрабатываю метод разбиения на страницы, но когда количество токенов превысит 150, я верну эту ошибку: FunctionCallError(HostError(GasLimitExceeded))

Команда, которую я использовал: close view nativodeploy.testnet get_ids_onsale '{"tokens":30}' --accountId nativodeploy.testnet

Код: здесь я восстанавливаю только вектор с токенами Id, которые я использую для инициации «from_index» в другом методе.

      pub fn get_ids_onsale(&self,tokens:u64) ->  Vec<u64> {
        let mut vectIDs = vec![];
        let mut _tokfound =0;
        let total =  self.get_on_total_toks();
        vectIDs.push(0); 
        for x in 0..total { 
            if  x>= total.clone() {  
                break;
            }
                let mut token =self.get_token(x.to_string().clone());
                if token.on_sale{
                   _tokfound+=1;
                   if _tokfound== tokens {  
                    vectIDs.push( token.token_id.parse::<u64>().unwrap() );
                    _tokfound=0;  
                    }
               }
            if( _tokfound == tokens ){break; }           
        }
        vectIDs
    }

Если я использую вызов, я получаю это: {"ExecutionError":"Превышен предоплаченный газ."}

Даже если я использую --gas=300000000000000, я получаю следующее: {"ExecutionError":"Превышено максимальное количество газа, разрешенное для сжигания по контракту."}

1 ответ

вы ограничены 200 Tgas для каждого вызова функции и можете добавить всего 300 Tgas (дополнительный газ добавляется для межконтрактных вызовов) в зависимости от ограничения в near-api-jsiirc.

поэтому вам придется вернуть менее 150 результатов.

это число будет меньше, если каждая возвращаемая вами запись, конечно, больше

речь идет об объеме данных, которые вы читаете из хранилища, и о том, что вы с ними делаете.

Вы можете прочитать больше о газе здесь:https://docs.near.org/docs/concepts/gas

Другие вопросы по тегам