waves_logo Docs
  • Обзор
    Обзор
  • Практические руководства
    • Получение данных из блокчейна
      Получение данных из блокчейна
    • Создание и отправка транзакций
      Создание и отправка транзакций
    • Токенизация
      Токенизация
    • Распространение токена (airdrop)
      Распространение токена (airdrop)
    • Прием платежей
      Прием платежей
    • Обмен токенов
      Обмен токенов
    • Простое голосование
      Простое голосование
    Практические руководства
  • Смарт-контракты Waves
    Смарт-контракты Waves
  • dApp
    • Создание и запуск dApp
      Создание и запуск dApp
    dApp
  • Cмарт-аккаунт
    • Создание смарт-аккаунта
      Создание смарт-аккаунта
    • [en] Creating and deploying a script manually
      [en] Creating and deploying a script manually
    • [en] Video tutorials
      [en] Video tutorials
    Cмарт-аккаунт
  • Cмарт-ассет
    Cмарт-ассет
  • Инструменты разработчика
    • Waves IDE
      Waves IDE
    • Расширение для VS Code
      Расширение для VS Code
    • Surfboard
      Surfboard
    • Ride REPL
      Ride REPL
    Инструменты разработчика
  • Signer ◆
    Signer ◆
  • Waves API
    • Data Service API
      Data Service API
    • Node REST API 🡥
      Node REST API 🡥
    • Node gRPC Server 🡥
      Node gRPC Server 🡥
    • Blockchain Updates 🡥
      Blockchain Updates 🡥
    Waves API
  • Клиентские библиотеки
    • [en] Waves transactions
      [en] Waves transactions
    • [en] PyWaves
      [en] PyWaves
    • [en] WavesJ
      [en] WavesJ
    • [en] WavesCS
      [en] WavesCS
    • [en] WavesC
      [en] WavesC
    • [en] GoWaves
      [en] GoWaves
    • [en] WavesRS
      [en] WavesRS
    • [en] Community libraries
      [en] Community libraries
    Клиентские библиотеки
      • English
      • Русский
      On this page
        • Поиск транзакций
        • Получение рыночных данных
        • Ограничения
      waves_logo Docs

          # Waves Data Service API

          Дата-сервис Waves агрегирует данные блокчейна в реляционную базу данных PostrgreSQL и обеспечивает быстрый и удобный поиск информации по множеству фильтров.

          API дата-сервиса позволяет получить следующие данные:

          • Список транзакций, в том числе транзакций каждого типа.
          • Данные токенов (ассетов) по ID или биржевым тикерам.
          • Рыночные данные о торговле криптовалютами.

          Команда Waves предоставляет инстансы дата-сервиса с общедоступными публичными методами API. Интерактивная документация в Swagger UI доступна по ссылкам:

          • Mainnet: https://api.wavesplatform.com/v0/docs/
          • Testnet: https://api-testnet.wavesplatform.com/v0/docs/
          • Stagenet: https://api-stagenet.wavesplatform.com/v0/docs/

          💡 Все запросы к API дата-сервиса можно выполнять как методом GET, так и методом POST. Параметры POST-запроса нужно указать в теле запроса в формате JSON; имена ключей такие же, как имена query-параметров в GET-запросе.

          # Поиск транзакций

          • Методы /transactions/{txType} предоставляют список транзакций указанного типа, с применением различных фильтров в зависимости от типа. Например, метод /transactions/transfer возвращает список транзакций перевода с отбором по отправителю, получателю, а также по идентификатору ассета.
          • Метод /transactions/all предоставляет список транзакций независимо от типа, с отбором по адресу отправителя и временной метке.

          Для списков транзакций доступна постраничная выборка. Вместе со списком транзакций методы возвращают поля isLastPage и lastCursor. Если "isLastPage": false, то для получения следующей страницы нужно указать в запросе в параметре after значение из lastCursor.

          # Получение рыночных данных

          API дата-сервиса предоставляет рыночные данные по любой паре ассетов. Источником данных являются транзакции обмена. Источником тикеров является биржа Waves.Exchange , разработанная сторонней командой из сообщества.

          • Методы /pairs* предоставляют текущие рыночные данные: цену последней сделки и данные за последние 24 часа: минимальную, максимальную и среднюю цену, объем и количество сделок и др.

            ⚠️ Текущие рыночные данные, в том числе цена, недоступны для пары ассетов, если по ней не было ни одной сделки (транзакции обмена) за последние 24 часа.

          • Метод /candles предоставляет данные для графика свечей OHCLV (open-high-low-close-volume) за указанный период.

          Если в ответе отсутствуют данные

          Если методы возвращают по выбранной паре {amountAsset}/{priceAsset} null или Not found, причины могут быть следующие:

          1. Ассеты указаны в запросе в неправильном порядке. Необходимо определить, какой из ассетов является amount-ассетом (базовой валютой), а какой — price-ассетом (валютой котировки):

            • Вы можете посмотреть пары ассетов в приложении Waves.Exchange (для Mainnet , Testnet или Stagenet ). Первый ассет в паре — это amount-ассет, второй — price-ассет.

            • Вы также можете определить пары с помощью метода GET /matcher/settings API матчера (для Mainnet , Testnet или Stagenet ):

               • Если оба ассета есть в списке priceAssets, price-ассетом является тот, который следует первым.

               • Если в списке есть только один ассет из пары, он и является price-ассетом.

               • Если обоих ассетов нет в списке, их ID в байтовом представлении нужно отсортировать лексикографически: первый (наименьший) является price-ассетом.

            Подробнее см. раздел Matcher API документации Waves.Exchange.

          2. Не было транзакций обмена по выбранной паре в тот период, за который метод предоставляет данные (последние 24 часа для методов /pairs*). Проверить это можно с помощью метода /transactions/exchange , получив, например, 10 последних транзакций обмена по этой паре.

          Рыночные данные доступны по всем матчерам — отправителям транзакций обмена или по выбранному матчеру. Чтобы получить данные по выбранному матчеру, укажите в запросе адрес матчера.

          💡 Адрес матчера Waves.Exchange:

          • Mainnet: 3PEjHv3JGjcWNpYEEkif2w8NXV4kbhnoGgu
          • Testnet: 3N8aZG6ZDfnh8YxS6aNcteobN8eXTWHaBBd
          • Stagenet: 3MQkebjth2vaisUu7ENGYWEij3qWQdLxibe

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

          • Количество одновременных соединений с одного IP-адреса — не более 15. При превышении лимита возвращается HTTP-статус 418.
          • Количество запросов в секунду с одного IP-адреса — не более 40. Если количество поступающих запросов превышает заданное значение, то избыточные запросы ставятся в очередь на обработку. Размер очереди (burst) — 20. Если количество избыточных запросов превысило размер очереди, новые запросы не ставятся в очередь, возвращается HTTP-статус 429.

          ⚠️ Проверяйте производительность запросов к API дата-сервиса, прежде чем запускать свое приложение в продакшен и давать нагрузку. Если используемая вами комбинация фильтров работает медленно (время ответа порядка секунды), обратитесь в чат разработчиков в Telegram : мы подскажем, как получить нужные вам данные другим способом, или оптимизируем обработку такого запроса в дата-сервисе.

          Waves API
          Node REST API 🡥
          Waves API
          Node REST API 🡥