Как следить за логами двух программ Solana по адресам

В фильтр mentions можно передать один публичный ключ. Для наблюдения за двумя программами нужны две подписки и учёт транзакций, которые обращаются к обеим.

Откройте две подписки в WebSocket

Подставьте ключ первой программы и отправьте кадр ниже. Затем отправьте второй кадр с id 2 и ключом второй программы. Сопоставьте подтверждение с идентификатором запроса и сохраните полученный номер подписки для маршрутизации уведомлений.

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "logsSubscribe",
  "params": [
    {
      "mentions": [
        "PROGRAM_PUBLIC_KEY"
      ]
    },
    {
      "commitment": "confirmed"
    }
  ]
}

Объедините совпадения без повторного учёта

Допустим, подпись S пришла по подпискам 12 и 19. Сохраните одну запись транзакции S с обоими совпавшими адресами, логами и результатом исполнения. Если считать каждое уведомление выполненным вызовом, эта транзакция попадёт в отчёт дважды, а в число успешных попадут и неудачные попытки.

Упоминания адреса недостаточно для определения вызванной инструкции. Для классификации изучите данные инструкций и журнал исполнения. После разрыва создайте подписки заново и восстановите пропущенные подписи по истории адресов, если нужна полная выгрузка.

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