gRPC — это технология удаленного вызова функций: клиент вызывает метод сервиса почти как обычную функцию, а данные передаются по сети в компактном формате. Контракт методов и сообщений обычно описывается в файле Protocol Buffers.
Простыми словами, gRPC заранее договаривается, какие команды доступны и из каких полей состоит запрос. Это удобно для связи сервисов и для высокопроизводительных blockchain API, где важны строгие типы и потоковая передача данных.
gRPC это простыми словами
gRPC — это протокол удалённого вызова процедур, который помогает сервисам быстро обмениваться данными. Он использует HTTP/2, Protocol Buffers и часто применяется в backend-системах, микросервисах и blockchain infrastructure.
Как работает gRPC-протокол
Разработчик описывает service, методы и message-типы в .proto-файле. Генератор создает клиентский и серверный код для выбранных языков. Во время вызова данные сериализуются, передаются по HTTP/2 и преобразуются обратно в типизированный объект.
gRPC поддерживает обычный request/response, server streaming, client streaming и двунаправленный streaming. Это модель API, а не отдельный blockchain consensus protocol.
Что такое Protocol Buffers и пример .proto-файла
Protocol Buffers описывает типы сообщений и методы сервиса в строгой схеме, из которой генерируются клиентский и серверный код.
syntax = "proto3";
service NodeService {
rpc GetBlock (BlockRequest) returns (BlockResponse);
}
message BlockRequest {
string hash = 1;
}
message BlockResponse {
string hash = 1;
int64 height = 2;
}
gRPC, REST, WebSocket и JSON-RPC — сравнение
| Подход | Как работает | Где используется | Плюсы | Минусы |
|---|---|---|---|---|
| gRPC | Типизированные вызовы по HTTP/2 | Микросервисы, nodes, indexers | Компактность и streaming | Сложнее ручная отладка |
| REST | HTTP-ресурсы и обычно JSON | Публичные web API | Простота и совместимость | Нет единой streaming-модели |
| WebSocket | Постоянное двустороннее соединение | События real-time | Низкая задержка событий | Нужны reconnect и контроль состояния |
| JSON-RPC | Вызов метода с параметрами в JSON | EVM и другие blockchain nodes | Прямой доступ к методам | Схема типов слабее |
Где используется gRPC
- Связь внутренних микросервисов с единым контрактом.
- Потоковые обновления, телеметрия и real-time события.
- Мобильные и backend-клиенты с генерируемым SDK.
- Высоконагруженные API с частыми небольшими сообщениями.
- Blockchain nodes, indexers и сервисы распространения транзакций.
gRPC в blockchain infrastructure
Некоторые blockchain-клиенты публикуют gRPC API для чтения блоков, состояния и подписок. Например, в экосистемах с Protobuf gRPC может быть нативным интерфейсом ноды, тогда как EVM-продукты чаще используют JSON-RPC.
Для индексатора streaming уменьшает задержку между появлением события и обработкой. Но приложение все равно должно учитывать reconnect, backpressure, пропущенные диапазоны, reorg и повторную синхронизацию после разрыва.
gRPC — один из протоколов доступа к нодам в современной blockchain-инфраструктура, наряду с JSON-RPC, REST и WebSocket.
Для проектов, которым нужен стабильный gRPC-доступ, Settla предлагает аренда blockchain нод с поддержкой нескольких протоколов.
Выбор между gRPC и стандартным JSON-RPC определяется задачей — подробнее на странице RPC provider.
Плюсы и минусы gRPC API
Плюсы
Строгий контракт, генерация SDK, компактные сообщения, четыре модели вызова и эффективный streaming.
Ограничения
Бинарные данные сложнее смотреть вручную, browser требует адаптера, изменения схемы нужно вести совместимо.
Когда выбирать
Когда контролируются обе стороны интеграции и важны throughput, типизация или поток событий.
Когда REST проще
Для публичного browser API, простого CRUD и интеграций, где важна минимальная сложность клиента.
Пример использования gRPC простыми словами
Индексатор открывает streaming-метод SubscribeBlocks. Сервер отправляет новые блоки по мере появления, клиент сохраняет их и подтверждает собственный прогресс. После reconnect клиент запрашивает недостающий диапазон обычным unary-методом, чтобы не потерять данные.
Это надежнее наивной бесконечной подписки: поток отвечает за скорость, а контрольная синхронизация — за полноту. Такой паттерн применим к blockchain explorer, аналитике и уведомлениям.
По теме
RPC, WebSocket и REST по одному ключу
Соберите интеграцию на бесплатном тарифе, а рабочий трафик уведите на тот эндпоинт, который ему нужен, — без собственных нод.
Посмотреть API для разработчиков