Отслеживание событий в блокчейне посредством gRPC интерфейса

gRPC-интерфейс имеет возможность отслеживания определённых групп событий, происходящих в блокчейне. События формируются в стримы, которые приходят в gRPC-интерфейс по подписке. Включение gRPC-интерфейса и его настройка выполняются через конфигурационный файл ноды, которая будет прослушиваться интерфейсом. Для инициализации подписки отправьте запрос SubscribeRequest(startFrom, transactionTypeFilter), где используются следующие параметры:

  • startFrom - момент начала стрима, возможные варианты:

    • CurrentEvent - получение событий от ноды в реальном времени по мере поступления,

    • GenesisBlock - получение событий с самого первого блока,

    • BlockSignature - получение событий после указанного блока.

  • transactionTypeFilter - фильтрация транзакций, которые будут приходить внутри событий, возможные варианты:

    • Any - все транзакции,

    • Filter - в событиях будут содержаться только те типы транзакций, которые будут указаны в списке внутри фильтра,

    • FilterNot - в событиях не будут содержаться только те типы транзакций, которые будут указаны в списке внутри фильтра.

Вместе с запросом отправляются метаданные для авторизации, включающие токен или фразу api-key. Поддерживаются оба варианта авторизации - по api-key и токену.

После оформления успешной подписки нода начнет стриминг следующих событий:

  • MicroBlockAppended - смайненный микроблок с параметрами:

    • transactions - полные тела транзакций из микроблока.

  • BlockAppended - смайненный блок с параметрами:

    • signature - подпись блока,

    • reference - подпись предыдущего блока,

    • tx ids - список ID транзакций из блока,

    • miner address - адрес майнера,

    • height - высота блока.

  • RollbackCompleted - событие отката блокчейна с параметрами:

    • return to block signature - подпись блока, до которого необходимо откатиться,

    • rollback tx ids - список ID транзакций, которые будут удалены из блокчейна.

  • AppendedBlockHistory - если в запросе на подписку не был выбран параметр CurrentEvent, клиент будет получать данный тип событий до тех пор, пока не дойдет до текущей высоты в блокчейне и тогда переключится на остальные события:

    • signature - подпись блока,

    • reference - подпись предыдущего блока,

    • transactions - полные тела транзакций из блока,

    • miner address - адрес майнера,

    • height - высота блока.

  • ErrorEvent - событие информирует о возникновении ошибки. Типы ошибок:

    • GenericError - общая или неизвестная ошибка с текстом сообщения,

    • MissingRequiredRequestField - незаполненное обязательное поле из SubscribeRequest,

    • BlockSignatureNotFoundError - подпись запрошенного блока из SubscribeRequest отсутствует в блокчейне,

    • MissingAuthorizationMetadata - отсутствие авторизационных метаданных при отправке SubscribeRequest,

    • InvalidApiKey - неверная фраза api-key, в случае авторизации c api-key,

    • InvalidToken - неверный токен, в случае авторизации по OAuth.