Отслеживание событий в блокчейне посредством 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.