# gRPC Server
gRPC Server — расширение ноды, которое позволяет запускать gRPC-сервисы.
gRPC-сервисы предоставляют информацию про:
# Генерация клиента
Для подключения к gRPC-сервисам используются клиенты, которые генерируются из proto-файлов.
Пример использования gRPC-клиента, сгенерированного из .proto-файлов: Загрузка блоков на C#.
Для создания TypeScript- или JavaScript-клиента рекомендуем использовать библиотеку node-api-grpc.
# Установка расширения на ноду
gRPC Server можно установить на ноду двумя способами: с помощью DEB-пакета и с помощью TGZ-архива.
# Установка с помощью DEB-пакета
Скачайте последнюю версию DEB-пакета со страницы Releases (секция Assets).
Имя пакета с расширением:
• для Mainnet
grpc-server_{номер версии}_all.deb
• для Testnet
grpc-server-testnet_{номер версии}_all.deb
• для Stagenet
grpc-server-stagenet_{номер версии}_all.deb
Установите пакет.
Для Mainnet:
sudo dpkg -i grpc-server_{номер версии}_all.deb
Для Testnet:
sudo dpkg -i grpc-server-testnet_{номер версии}_all.deb
Для Stagenet:
sudo dpkg -i grpc-server-stagenet_{номер версии}_all.deb
Отредактируйте файл конфигурации ноды (см. раздел Конфигурация ноды). Для Mainnet файл конфигурации находится по адресу
/etc/waves/waves.conf
, для Testnet —/etc/waves-testnet/waves.conf
, для Stagenet —/etc/waves-stagenet/waves.conf
.3.1. Добавьте gRPC Server в секцию
waves.extensions
:waves { ... extensions = [ com.wavesplatform.api.grpc.GRPCServerExtension ] }
3.2. Если требуется изменить порт для подключения клиента (по умолчанию 6870), добавьте настройку:
waves { ... grpc { port = 6877 # Укажите порт }
Перезапустите ноду.
Для Mainnet:
sudo systemctl restart waves
Для Testnet:
sudo systemctl restart waves-testnet
Для Stagenet:
sudo systemctl start waves-stagenet
# Установка с помощью TGZ-архива
Скачайте TGZ-архив с расширением со страницы Releases (секция Assets) на GitHub.
Имя TGZ-архива с расширением:
• для Mainnet
grpc-server-{номер версии}.tgz
• для Testnet
grpc-server-testnet-{номер версии}.tgz
• для Stagenet
grpc-server-stagenet-{номер версии}.tgz
Распакуйте архив в папку с JAR-файлом ноды.
Создайте новый файл конфигурации или откройте существующий (см. раздел Конфигурация ноды).
3.1. Добавьте gRPC Server в секцию
waves.extensions
:waves { ... extensions = [ com.wavesplatform.api.grpc.GRPCServerExtension ] }
3.2. Если требуется изменить порт для подключения клиента (по умолчанию 6870), добавьте настройку:
waves { ... grpc { port = 6877 # Укажите порт }
Выполните команду:
Для Mainnet:
java -cp 'waves-all-{номер версии}.jar:grpc-server-{номер версии}/lib/*' com.wavesplatform.Application {имя файла конфигурации}.conf
Для Testnet:
java -cp 'waves-all-{номер версии}.jar:grpc-server-testnet-{номер версии}/lib/*' com.wavesplatform.Application {имя файла конфигурации}.conf
Для Stagenet:
java -cp 'waves-all-{номер версии}.jar:grpc-server-stagenet-{номер версии}/lib/*' com.wavesplatform.Application {имя файла конфигурации}.conf
В Windows используйте
;
вместо:
, например:java -cp 'waves-all-{номер версии}.jar;grpc-server-{номер версии}/lib/*' com.wavesplatform.Application {имя файла конфигурации}.conf
# gRPC на публичных нодах
С целью ознакомления вы можете подключиться к общедоступным gRPC-сервисам, которые предоставляет команда Waves:
- Mainnet: https://nodes.wavesnodes.com:6870
- Testnet: https://nodes-testnet.wavesnodes.com:6870
- Stagenet: https://nodes-stagenet.wavesnodes.com:6870
Ограничения:
- Количество одновременных запросов с одного IP-адреса — не более 5.
- Количество запросов в секунду с одного IP-адреса — не более 20.
# Отладка с помощью gRPCurl
gRPCurl — инструмент командной строки для взаимодействия с серверами gRPC, аналог curl
для gRPC.
С помощью gRPCurl вы можете без написания кода сделать запрос к gRPC-сервера ноды Waves и получить данные в терминале:
Установите gRPCurl, см. Способы установки.
Склонируйте или скачайте репозиторий с proto-файлами.
В запросе укажите параметры:
•
plaintext
•
-proto
— путь к proto-файлу с декларацией сервиса, к которому выполняется запрос,•
--import-path
— путь к каталогу со всеми схемами,•
-d
— аргументы запроса в формате JSON,• адрес ноды и порт gRPC-сервера,
• вызываемый сервис и метод.
⚠️ Все массивы байтов в JSON должны быть представлены в кодировке base64, в том числе адреса, идентификаторы ассетов и другие данные, которые в REST API ноды представлены в base58. Ответ также содержит данные в кодировке base64.
Пример запроса:
grpcurl -v -plaintext \
-proto /home/projects/waves/protobuf-schemas/proto/waves/node/grpc/assets_api.proto \
-import-path /home/projects/waves/protobuf-schemas/proto \
-d '{ "asset_id": "PFrWEj4csGLWzPmlsjs/xccLxChfBm27mGoHZtYJSzU=" }' \
nodes.wavesnodes.com:6870 waves.node.grpc.AssetsApi/GetInfo