Ошибка при возврате идентификаторов экологической учетной записи
Если у меня есть следующий метод для тестирования 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)
- информация о газе
- все методы обещания, потому что они включают другие контракты