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-js
iirc.
поэтому вам придется вернуть менее 150 результатов.
это число будет меньше, если каждая возвращаемая вами запись, конечно, больше
речь идет об объеме данных, которые вы читаете из хранилища, и о том, что вы с ними делаете.
Вы можете прочитать больше о газе здесь:https://docs.near.org/docs/concepts/gas