Как различать получение и результат транзакции в уведомлениях Solana
Платёжная форма может сообщить, что RPC получил подпись, пока ожидается финальный результат. У раннего и завершающего уведомлений разные данные.
Подпишитесь по идентификатору транзакции
Подставьте первую подпись транзакции в base58 в этот кадр WebSocket. Сохраните номер подписки из подтверждения. При включённых ранних уведомлениях узел может прислать receivedSignature до достижения указанного уровня подтверждения.
{
"jsonrpc": "2.0",
"id": 1,
"method": "signatureSubscribe",
"params": [
"FIRST_SIGNATURE",
{
"commitment": "finalized",
"enableReceivedNotification": true
}
]
}
Завершайте обработку по итоговому результату
Например, сначала приходит строка receivedSignature, затем объект с err, равным null. Узел увидел подпись и позже подтвердил успешное финализированное выполнение. Объект с ошибкой означает неудачу даже при полученном раннем уведомлении. Итоговое событие обрабатывайте и тогда, когда раннего не было.
После завершающего уведомления подписка прекращается. Если соединение оборвалось раньше, запросите подпись через getSignatureStatuses и перед закрытием заказа проверьте confirmationStatus и err.