Как следить за логами двух программ Solana по адресам
В фильтр mentions можно передать один публичный ключ. Для наблюдения за двумя программами нужны две подписки и учёт транзакций, которые обращаются к обеим.
Откройте две подписки в WebSocket
Подставьте ключ первой программы и отправьте кадр ниже. Затем отправьте второй кадр с id 2 и ключом второй программы. Сопоставьте подтверждение с идентификатором запроса и сохраните полученный номер подписки для маршрутизации уведомлений.
{
"jsonrpc": "2.0",
"id": 1,
"method": "logsSubscribe",
"params": [
{
"mentions": [
"PROGRAM_PUBLIC_KEY"
]
},
{
"commitment": "confirmed"
}
]
}
Объедините совпадения без повторного учёта
Допустим, подпись S пришла по подпискам 12 и 19. Сохраните одну запись транзакции S с обоими совпавшими адресами, логами и результатом исполнения. Если считать каждое уведомление выполненным вызовом, эта транзакция попадёт в отчёт дважды, а в число успешных попадут и неудачные попытки.
Упоминания адреса недостаточно для определения вызванной инструкции. Для классификации изучите данные инструкций и журнал исполнения. После разрыва создайте подписки заново и восстановите пропущенные подписи по истории адресов, если нужна полная выгрузка.