Ошибки
Всегда оборачивайте запросы к провайдеру в try / catch. Pali по возможности использует стандартные ошибки в стиле JSON-RPC и EIP-1193, а также собственные ошибки кошелька для неподдерживаемых сетей, ограничений аппаратных кошельков и состояний passkey.
try {
await window.ethereum.request({
method: 'eth_sendTransaction',
params: [tx],
});
} catch (error) {
switch (error.code) {
case 4001:
console.log('User rejected the request.');
break;
case 4100:
console.log('The dapp is not authorized.');
break;
case 4200:
console.log('The method is unsupported.');
break;
default:
console.error(error);
}
}
Распространённые категории
| Код | Значение |
|---|---|
4001 | Пользователь отклонил запрос. |
4100 | Неавторизованный аккаунт или метод. |
4101 | Метод доступен только для другого семейства сетей. |
4200 | Неподдерживаемый метод. |
4900 | Провайдер отключён. |
4901 | Провайдер отключён от запрошенной сети. |
5710 | Для сети пакета EIP-5792 в кошельке не настроен RPC (wallet_getCallsStatus / wallet_showCallsStatus). |
5720 | Повторяющийся идентификатор пакета EIP-5792 от dapp в wallet_sendCalls. |
5730 | Неизвестный идентификатор пакета EIP-5792 в wallet_getCallsStatus / wallet_showCallsStatus. |
См. Коды ошибок для более полной справки.
Повтор прерванных запросов
Истечение времени ожидания, закрытое окно одобрения или потеря соединения не всегда доказывают, что транзакция не была отправлена. Прежде чем запрашивать ещё одну подпись или отправку, проверьте известный хеш транзакции, историю транзакций или статус пакета. Если получение отправленной транзакции подтверждено, отправка остаётся успешной, даже если последующее обновление локальной истории завершилось ошибкой.
При необходимости повторяйте обычные запросы на чтение, но не повторяйте автоматически запросы на подписание, создание кошелька или отправку транзакции после неопределённого результата. Если аккаунт или сеть изменились, получите новое одобрение для текущего контекста. Если настройка смарт-аккаунта ожидает завершения, проверьте её статус в исходной сети, прежде чем снова пытаться выполнить развёртывание.