waves_logo Docs
  • Руководство владельца ноды
    Руководство владельца ноды
  • Установить ноду Waves
    • Развернуть ноду в Docker
      Развернуть ноду в Docker
    • Установить ноду на Ubuntu
      Установить ноду на Ubuntu
    • Установить ноду на macOS
      Установить ноду на macOS
    • Установить ноду на Windows
      Установить ноду на Windows
    • Установить из исходников (сборка SBT)
      Установить из исходников (сборка SBT)
    Установить ноду Waves
  • Синхронизировать блокчейн Waves
    • Импортировать и экспортировать блокчейн
      Импортировать и экспортировать блокчейн
    • Загрузить актуальный блокчейн
      Загрузить актуальный блокчейн
    • Откатить ноду
      Откатить ноду
    Синхронизировать блокчейн Waves
  • Генерировать блоки
    Генерировать блоки
  • Обновить ноду
    Обновить ноду
  • Конфигурация ноды
    Конфигурация ноды
  • Логирование
    Логирование
  • Кошелек ноды
    Кошелек ноды
  • Фичи
    • Протокол активации
      Протокол активации
    Фичи
  • Собственный блокчейн
    Собственный блокчейн
  • REST API ноды
    • API-ключ
      API-ключ
    • Работа с транзакциями
      Работа с транзакциями
    • Формат числовых полей
      Формат числовых полей
    • Постраничная выборка
      Постраничная выборка
    • CORS
      CORS
    • Ограничения пула публичных нод
      Ограничения пула публичных нод
    • Медленные запросы
      Медленные запросы
    • Коды ответов и ошибки
      Коды ответов и ошибки
    REST API ноды
  • Расширения
    • gRPC Server
      gRPC Server
    • Blockchain Updates
      Blockchain Updates
    Расширения
  • Устранение неполадок
    • Генерация блока FAQ
      Генерация блока FAQ
    Устранение неполадок
  • Нода на языке Go
    Нода на языке Go
      • English
      • Русский
      On this page
        • Генерация клиента
        • Установка расширения на ноду
        • gRPC на публичных нодах
        • Отладка с помощью gRPCurl
      waves_logo Docs

          # gRPC Server

          gRPC Server — расширение ноды, которое позволяет запускать gRPC -сервисы.

          gRPC-сервисы предоставляют информацию про:

          • аккаунты
          • блоки
          • блокчейн
          • токены
          • транзакции

          gRPC Server можно использовать на легкой ноде.

          # Генерация клиента

          Для подключения к gRPC-сервисам используются клиенты, которые генерируются из proto-файлов .

          Пример использования gRPC-клиента, сгенерированного из .proto-файлов: Загрузка блоков на C# .

          Для создания TypeScript- или JavaScript-клиента рекомендуем использовать библиотеку node-api-grpc .

          # Установка расширения на ноду

          gRPC Server можно установить на ноду двумя способами: с помощью DEB-пакета и с помощью TGZ-архива.

          # Установка с помощью DEB-пакета

          1. Скачайте последнюю версию DEB-пакета со страницы Releases (секция Assets).

            Имя пакета с расширением:

            • для Mainnet grpc-server_{номер версии}_all.deb

            • для Testnet grpc-server-testnet_{номер версии}_all.deb

            • для Stagenet grpc-server-stagenet_{номер версии}_all.deb

          2. Установите пакет.

            Для 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
            
          3. Отредактируйте файл конфигурации ноды (см. раздел Конфигурация ноды). Для 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 # Укажите порт
            }
            

            3.3. Если требуется предоставить внешний доступ к grpc-серверу вашей ноды, используйте Nginx’s proxy pass module или SSH port forwarding .

            Более простой, но не рекомендуемый способ — добавить настройку:

            waves {
               ...
               grpc {
                  ...
                  host = 0.0.0.0 # Укажите IP-адрес
            }
            
          4. Перезапустите ноду.

            Для Mainnet:

            sudo systemctl restart waves
            

            Для Testnet:

            sudo systemctl restart waves-testnet
            

            Для Stagenet:

            sudo systemctl start waves-stagenet
            

          # Установка с помощью TGZ-архива

          1. Скачайте TGZ-архив с расширением со страницы Releases (секция Assets) на GitHub.

            Имя TGZ-архива с расширением:

            • для Mainnet grpc-server-{номер версии}.tgz

            • для Testnet grpc-server-testnet-{номер версии}.tgz

            • для Stagenet grpc-server-stagenet-{номер версии}.tgz

          2. Распакуйте архив в папку с JAR-файлом ноды.

          3. Создайте новый файл конфигурации или откройте существующий (см. раздел Конфигурация ноды).

            3.1. Добавьте gRPC Server в секцию waves.extensions:

            waves {
               ...
               extensions = [
                  com.wavesplatform.api.grpc.GRPCServerExtension
               ]
            }
            

            3.2. Если требуется изменить порт для подключения клиента (по умолчанию 6870), добавьте настройку:

            waves {
               ...
               grpc {
                  port = 6877 # Укажите порт
            }
            
          4. Выполните команду:

            Для 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: nodes.wavesnodes.com:6870
          • Testnet: nodes-testnet.wavesnodes.com:6870
          • Stagenet: nodes-stagenet.wavesnodes.com:6870

          Ограничения:

          • Количество одновременных запросов с одного IP-адреса — не более 5.
          • Количество запросов в секунду с одного IP-адреса — не более 20.

          # Отладка с помощью gRPCurl

          gRPCurl — инструмент командной строки для взаимодействия с серверами gRPC, аналог curl для gRPC. С помощью gRPCurl вы можете без написания кода сделать запрос к gRPC-серверу ноды Waves и получить данные в терминале.

          Использование gRPCurl:

          • Получить список сервисов

            Пример запроса:

            grpcurl -plaintext nodes.wavesnodes.com:6870 list
            

            Пример ответа:

            grpc.reflection.v1alpha.ServerReflection
            waves.node.grpc.AccountsApi
            waves.node.grpc.AssetsApi
            waves.node.grpc.BlockchainApi
            waves.node.grpc.BlocksApi
            waves.node.grpc.TransactionsApi
            
          • Получить список функций сервиса

            grpcurl -plaintext nodes.wavesnodes.com:6870 describe waves.node.grpc.AssetsApi
            
            service AssetsApi {
              rpc GetInfo ( .waves.node.grpc.AssetRequest ) returns ( .waves.node.grpc.AssetInfoResponse );
              rpc GetNFTList ( .waves.node.grpc.NFTRequest ) returns ( stream .waves.node.grpc.NFTResponse );
            }
            
          • Получить описание сообщения

            grpcurl -plaintext nodes.wavesnodes.com:6870 describe waves.node.grpc.AssetRequest
            
            waves.node.grpc.AssetRequest is a message:
            message AssetRequest {
            bytes asset_id = 1;
            }
            
          • Выполнить запрос к gRPC-серверу

            Укажите в запросе параметр -d и аргументы в формате JSON.

            grpcurl -plaintext \
              -d '{ "asset_id": "PFrWEj4csGLWzPmlsjs/xccLxChfBm27mGoHZtYJSzU=" }' \
              nodes.wavesnodes.com:6870 waves.node.grpc.AssetsApi/GetInfo
            
            {
              "issuer": "+DXhXpxJzivkcqVUIh0dPuze4ThmLFnYVutb7RRxrSs=",
              "name": "DogWhite",
              ...
              "sequenceInBlock": 1,
              "issueHeight": 2563608
            }
            

          ⚠️ Все массивы байтов в JSON должны быть представлены в кодировке base64, в том числе адреса, идентификаторы ассетов и другие данные, которые в REST API ноды представлены в base58. Ответ также содержит данные в кодировке base64.

          Расширения
          Blockchain Updates
          Расширения
          Blockchain Updates