Ошибка при возврате идентификаторов экологической учетной записи

Если у меня есть следующий метод для тестирования predecessor_account_id поведение

pub fn get_pred_acc(&self) -> (String {
    let prev_acc = env::predecessor_account_id().to_string();
    return prev_acc;
}

И попробуйте позвонить из внешнего интерфейса

const contract = await this.near.loadContract(window.nearConfig.contractName, {
  viewMethods: ["get_pred_acc", ],
  changeMethods: [],
  sender: this.accountId,
});

const acc = await contract.get_pred_acc();

Я получаю следующую ошибку:

Неперехваченная (в обещании) Ошибка: запрос call/flux-protocol/get_account_id завершился неудачно: выполнение wasm завершилось ошибкой: FunctionCallError(HostError(ProhibitedInView("predcessor_account_id"))).
{"error": "выполнение wasm завершилось с ошибкой: FunctionCallError(HostError(ProhibitedInView(\" предшественник_аккаунта \ ")))",
"logs": []
}

1 ответ

Решение

Это ожидаемое поведение для вызовов представления.

Вызовы просмотра не имеют определенной контекстной информации, такие вызовы не являются частью реальной транзакции.

В настоящее время лучший вариант узнать, какие методы запрещены в вызовах представления, - взглянуть на тест: https://github.com/nearprotocol/nearcore/blob/master/runtime/near-vm-logic/tests/test_view_method.rs

Обобщить:

  • информация о предыдущей учетной записи и ключи (подписывающий, предшественник и подписывающий_public_key)
  • информация о газе
  • все методы обещания, потому что они включают другие контракты
Другие вопросы по тегам