Как различать получение и результат транзакции в уведомлениях 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.

Документация