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
  • Клиентские библиотеки
    • Waves C#
      • Установка SDK
        Установка SDK
      • Запуск кода
        • Отправка транзакций
          Отправка транзакций
        • Использование криптографических утилит
          Использование криптографических утилит
        • Взаимодействие с нодой
          Взаимодействие с нодой
        • Развертывание смарт-контрактов
          Развертывание смарт-контрактов
        Запуск кода
      Waves C#
    • Gowaves
      • Установка SDK
        Установка SDK
      • Запуск кода
        • Отправка транзакций
          Отправка транзакций
        • Использование криптографических утилит
          Использование криптографических утилит
        • Взаимодействие с нодой
          Взаимодействие с нодой
        • Развертывание смарт-контрактов
          Развертывание смарт-контрактов
        Запуск кода
      Gowaves
    • WavesJ
      • Установка SDK
        Установка SDK
      • Запуск кода
        • Отправка транзакций
          Отправка транзакций
        • Использование криптографических утилит
          Использование криптографических утилит
        • Взаимодействие с нодой
          Взаимодействие с нодой
        • Развертывание смарт-контрактов
          Развертывание смарт-контрактов
        Запуск кода
      WavesJ
    • Ts-lib-crypto
      • Установка SDK
        Установка SDK
      Ts-lib-crypto
    • Waves-PHP
      • Установка SDK
        Установка SDK
      Waves-PHP
    • PyWaves-CE
      • Установка SDK
        Установка SDK
      PyWaves-CE
    • Waves-rust
      • Установка SDK
        Установка SDK
      Waves-rust
    Клиентские библиотеки
      • English
      • Русский
      On this page
        • Assets API
        • Addresses API
      waves_logo Docs

          # Взаимодействие с нодой

          Вы можете взаимодействоваь с API-методами Assets и Addresses.

          # Assets API

          Вы можете получить информацию о:

          • Распределении баланса активов.
          • Балансе активов по адресу.
          • Балансе актива по адресу.
          • Об активе.
          • Наличии NFT-токенах по адресу.

          # Распределение баланса активов

          Endpoint: GET /assets/{assetId}/distribution/{height}/limit/{limit}

          package com.example;
          
          // Необходимые импорты.
          import java.io.*;
          import java.net.*;
          import java.util.*;
          import java.util.regex.*;
          
          public class AssetBalanceDistribution {
              public static void main(String[] args) throws Exception {
          		// Укажите ID актива.
                  String assetId = "УКАЖИТЕ ID АКТИВА";
          
          		// Укажите максимальное количество возвращаяемых записей.
                  int limit = 100;
          
          		/*
                   * Укажите сеть:
                   * - Mainnet: "https://nodes.wavesnodes.com/"
          		 * - Testnet: "https://nodes-testnet.wavesnodes.com/"
          		 * - Stagenet: "https://nodes-stagenet.wavesnodes.com/"
                   */
                  String nodeUrl = "https://nodes-testnet.wavesnodes.com";
          
                  // Получение высоты последнего блока.
                  URL heightUrl = new URL(nodeUrl + "/blocks/height");
                  HttpURLConnection heightCon = (HttpURLConnection) heightUrl.openConnection();
                  Scanner heightScanner = new Scanner(new InputStreamReader(heightCon.getInputStream()));
                  String heightResp = heightScanner.nextLine();
                  heightScanner.close();
                  int height = Integer.parseInt(heightResp.replaceAll("\\D", "")) - 1;
          
                  // Создание URL-ссылки для получения данных о распределении баланса активов.
                  String url = nodeUrl + "/assets/" + assetId + "/distribution/" + height + "/limit/" + limit;
                  HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection();
          
          		// Анализ полученных данных.
                  Scanner scanner = new Scanner(new InputStreamReader(con.getInputStream()));
                  Pattern entry = Pattern.compile("\"([1-9A-HJ-NP-Za-km-z]{30,})\":(\\d+)");
          
          		// Вывод результатов.
                  System.out.println("––––––––––––––––––––––––––––––––––––––");
                  System.out.println("Распределение баланса активов (адрес: количество актива):");
          
                  while (scanner.hasNextLine()) {
                      String line = scanner.nextLine();
                      Matcher matcher = entry.matcher(line);
                      while (matcher.find()) {
                          String address = matcher.group(1);
                          long balanceLamports = Long.parseLong(matcher.group(2));
                          double balanceInWaves = balanceLamports / 100.0;
                          System.out.printf("%s: %.2f\n", address, balanceInWaves);
                      }
                      if (line.contains("\"hasNext\":true")) {
                          Matcher lastItem = Pattern.compile("\"lastItem\":\"(.*?)\"").matcher(line);
                          if (lastItem.find()) {
                              System.out.printf("\nДоступно больше страниц. Последний элемент: %s\n", lastItem.group(1));
                          }
                      }
                  }
                  scanner.close();
              }
          }
          

          # Баланс активов по адресу

          Endpoint: GET /assets/balance/{address}

          package com.example;
          
          // Необходимые импорты.
          import java.io.InputStreamReader;
          import java.net.HttpURLConnection;
          import java.net.URL;
          import java.util.List;
          import java.util.Map;
          import com.fasterxml.jackson.core.type.TypeReference;
          import com.fasterxml.jackson.databind.ObjectMapper;
          
          public class AllAssetBalancesForAddress {
              public static void main(String[] args) throws Exception {
          		// Укажите ID актива.
                  String address = "УКАЖИТЕ ID АКТИВА";
          
          		/*
                   * Укажите сеть:
                   * - Mainnet: "https://nodes.wavesnodes.com/"
          		 * - Testnet: "https://nodes-testnet.wavesnodes.com/"
          		 * - Stagenet: "https://nodes-stagenet.wavesnodes.com/"
                   */
                  String nodeUrl = "https://nodes-testnet.wavesnodes.com";
          
          		// Создание URL-ссылки.
                  URL url = new URL(nodeUrl + "/assets/balance/" + address);
                  HttpURLConnection con = (HttpURLConnection) url.openConnection();
          
          		// Сопоставление полученных данных.
                  ObjectMapper mapper = new ObjectMapper();
                  Map<String, Object> resp = mapper.readValue(
                      new InputStreamReader(con.getInputStream()),
                      new TypeReference<Map<String, Object>>() {}
                  );
                  List<Map<String,Object>> balances = (List<Map<String,Object>>) resp.get("balances");
          
          		// Вывод результатов.
                  System.out.println("––––––––––––––––––––––––––––––––––––––");
                  System.out.println("Баланс активов по адресу: " + address);
                  for (Map<String,Object> b : balances) {
                      String assetId = (String) b.get("assetId");
                      long raw = ((Number) b.get("balance")).longValue();
                      double formatted = raw / 1e2;
                      System.out.printf("ID актива: %s, Баланс: %.2f\n", assetId, formatted);
                  }
              }
          }
          

          # Баланс актива по адресу

          Endpoint: GET /assets/balance/{address}/{assetId}

          package com.example;
          
          // Необходимые импорты.
          import java.io.InputStreamReader;
          import java.net.HttpURLConnection;
          import java.net.URL;
          import java.util.Map;
          import com.fasterxml.jackson.core.type.TypeReference;
          import com.fasterxml.jackson.databind.ObjectMapper;
          
          public class BalanceOfSpecificAsset {
              public static void main(String[] args) throws Exception {
          		// Укажите адрес аккаунта.
                  String address = "УКАЖИТЕ АДРЕС";
          
          		// Укажите ID актива.
                  String assetId = "УКАЖИТЕ ID АКТИВА";
          
          		/*
                   * Укажите сеть:
                   * - Mainnet: "https://nodes.wavesnodes.com/"
          		 * - Testnet: "https://nodes-testnet.wavesnodes.com/"
          		 * - Stagenet: "https://nodes-stagenet.wavesnodes.com/"
                   */
                  String nodeUrl = "https://nodes-testnet.wavesnodes.com";
          
          		// Создание URL-адреса запроса.
                  URL url = new URL(nodeUrl + "/assets/balance/" + address + "/" + assetId);
                  HttpURLConnection con = (HttpURLConnection) url.openConnection();
          
          		// Сопоставление и форматирование данных.
                  ObjectMapper mapper = new ObjectMapper();
                  Map<String,Object> resp = mapper.readValue(
                      new InputStreamReader(con.getInputStream()),
                      new TypeReference<Map<String,Object>>() {}
                  );
                  long raw = ((Number)resp.get("balance")).longValue();
                  double formatted = raw / 1e2;
          
          		// Вывод результатов.
                  System.out.println("––––––––––––––––––––––––––––––––––––––");
                  System.out.printf(
                      "Баланс актива %s по адресу %s: %.2f\n",
                      resp.get("assetId"), resp.get("address"), formatted
                  );
              }
          }
          

          # Детали актива

          Endpoint: GET /assets/details/{assetId}

          package com.example;
          
          // Необходимые импорты.
          import java.io.InputStreamReader;
          import java.net.HttpURLConnection;
          import java.net.URL;
          import java.util.Map;
          import com.fasterxml.jackson.core.type.TypeReference;
          import com.fasterxml.jackson.databind.ObjectMapper;
          
          public class AssetDetails {
              public static void main(String[] args) throws Exception {
          		// Укажите ID актива.
                  String assetId = "УКАЖИТЕ ID АКТИВА";
          
          		/*
                   * Укажите сеть:
                   * - Mainnet: "https://nodes.wavesnodes.com/"
          		 * - Testnet: "https://nodes-testnet.wavesnodes.com/"
          		 * - Stagenet: "https://nodes-stagenet.wavesnodes.com/"
                   */
                  String nodeUrl = "https://nodes-testnet.wavesnodes.com";
          
          		// Создание URL-адреса запроса.
                  URL url = new URL(nodeUrl + "/assets/details/" + assetId);
                  HttpURLConnection con = (HttpURLConnection) url.openConnection();
          
          		// Сопоставление полученных данных.
                  ObjectMapper mapper = new ObjectMapper();
                  Map<String,Object> d = mapper.readValue(
                      new InputStreamReader(con.getInputStream()),
                      new TypeReference<Map<String,Object>>() {}
                  );
          
          		// Вывод результатов.
                  System.out.println("––––––––––––––––––––––––––––––––––––––");
                  System.out.printf("Наименование: %s%Описание: %s%Десятичных знаков: %d%Перевыпускаемость: %b%Адрес создателя: %s%n", 
                      d.get("name"), d.get("description"), ((Number)d.get("decimals")).intValue(), d.get("reissuable"), d.get("issuer")
                  );
              }
          }
          

          # Наличие NFT-токенов по адресу

          Endpoint: GET /assets/nft/{address}/limit/{limit}

          package com.example;
          
          // Необходимые импорты.
          import java.io.InputStreamReader;
          import java.net.HttpURLConnection;
          import java.net.URL;
          import java.util.List;
          import java.util.Map;
          import com.fasterxml.jackson.core.type.TypeReference;
          import com.fasterxml.jackson.databind.ObjectMapper;
          
          public class NFTsByAddress {
              public static void main(String[] args) throws Exception {
          		// Укажите адрес аккаунта.
                  String address = "УКАЖИТЕ АДРЕС";
          
          		// Укажите максимальное количество возвращаяемых записей.
                  int limit = 100;
          
          		/*
                   * Укажите сеть:
                   * - Mainnet: "https://nodes.wavesnodes.com/"
          		 * - Testnet: "https://nodes-testnet.wavesnodes.com/"
          		 * - Stagenet: "https://nodes-stagenet.wavesnodes.com/"
                   */
                  String nodeUrl = "https://nodes-testnet.wavesnodes.com";
          
          		// Создание URL-адреса запроса.
                  URL url = new URL(nodeUrl + "/assets/nft/" + address + "/limit/" + limit);
                  HttpURLConnection con = (HttpURLConnection) url.openConnection();
          
          		// Сопоставление полученных данных.
                  ObjectMapper mapper = new ObjectMapper();
                  List<Map<String,Object>> nfts = mapper.readValue(
                      new InputStreamReader(con.getInputStream()),
                      new TypeReference<List<Map<String,Object>>>() {}
                  );
          
          		// Вывод результатов.
                  System.out.println("––––––––––––––––––––––––––––––––––––––");
                  System.out.println("NFTs по адресу: " + address);
                  for (Map<String,Object> nft : nfts) {
          			// Результаты будут выведен при наличии NFT по указанному адресу.
                      System.out.printf("ID: %s | Наименование: %s | Описание: %s | Количество: %d%n",
                          nft.get("assetId"), nft.get("name"), nft.get("description"), ((Number)nft.get("quantity")).intValue());
                  }
              }
          }
          

          # Addresses API

          Вы можете получить информацию о:

          • Всех адресах в кошельке ноды.
          • Диапазоне адресов.
          • Балансе WAVES по адресу.
          • Балансе WAVES с подтверждениями.
          • Детальной информации о балансе.
          • Балансе нескольких адресов.
          • Записях данных аккаунта по адресу.
          • Записях данных по ключу.
          • Метаданных скрипта аккаунта.

          # Все адреса в кошельке ноды

          Endpoint: GET /addresses

          package com.example;
          
          // Необходимые импорты.
          import java.io.InputStreamReader;
          import java.net.HttpURLConnection;
          import java.net.URL;
          import java.util.List;
          import com.fasterxml.jackson.core.type.TypeReference;
          import com.fasterxml.jackson.databind.ObjectMapper;
          
          public class GetAllNodeWalletAddresses {
              public static void main(String[] args) throws Exception {
          		/*
                   * Укажите сеть:
                   * - Mainnet: "https://nodes.wavesnodes.com/"
          		 * - Testnet: "https://nodes-testnet.wavesnodes.com/"
          		 * - Stagenet: "https://nodes-stagenet.wavesnodes.com/"
                   */
                  String nodeUrl = "https://nodes-testnet.wavesnodes.com";
          
          		// Создание URL-адреса запроса.
                  URL url = new URL(nodeUrl + "/addresses");
                  HttpURLConnection con = (HttpURLConnection) url.openConnection();
          
          		// Сопоставление полученных данных.
                  ObjectMapper mapper = new ObjectMapper();
                  List<String> addresses = mapper.readValue(
                      new InputStreamReader(con.getInputStream()),
                      new TypeReference<List<String>>() {}
                  );
          
          		// Вывод результатов.
                  System.out.println("Node Wallet Addresses:");
                  addresses.forEach(addr -> System.out.println(addr));
              }
          }
          

          # Диапазон адресов

          Endpoint: GET /addresses/seq/{from}/{to}

          package com.example;
          
          // Необходимые импорты.
          import java.io.InputStreamReader;
          import java.net.HttpURLConnection;
          import java.net.URL;
          import java.util.List;
          import com.fasterxml.jackson.core.type.TypeReference;
          import com.fasterxml.jackson.databind.ObjectMapper;
          
          public class GetAddressRange {
              public static void main(String[] args) throws Exception {
          		// Индекс кошелька.
                  int from = 0, to = 4;
          
          		/*
                   * Укажите сеть:
                   * - Mainnet: "https://nodes.wavesnodes.com/"
          		 * - Testnet: "https://nodes-testnet.wavesnodes.com/"
          		 * - Stagenet: "https://nodes-stagenet.wavesnodes.com/"
                   */
                  String nodeUrl = "https://nodes-testnet.wavesnodes.com";
          
          		// Создание URL-адреса запроса.
                  URL url = new URL(nodeUrl + "/addresses/seq/" + from + "/" + to);
                  HttpURLConnection con = (HttpURLConnection) url.openConnection();
          
          		// Сопоставление полученных данных.
                  ObjectMapper mapper = new ObjectMapper();
                  List<String> addresses = mapper.readValue(
                      new InputStreamReader(con.getInputStream()),
                      new TypeReference<List<String>>() {}
                  );
          
          		// Вывод результатов.
                  System.out.printf("Адреса от %d до %d:\n", from, to);
                  addresses.forEach(System.out::println);
              }
          }
          

          # Баланс WAVES по адресу

          Endpoint: GET /addresses/balance/{address}

          package com.example;
          
          // Необходимые импорты.
          import java.io.InputStreamReader;
          import java.net.HttpURLConnection;
          import java.net.URL;
          import java.util.Map;
          import com.fasterxml.jackson.core.type.TypeReference;
          import com.fasterxml.jackson.databind.ObjectMapper;
          
          public class WavesBalance {
              public static void main(String[] args) throws Exception {
          		// Укажите адрес аккаунта.
                  String address = "УКАЖИТЕ АДРЕС";
          
          		/*
                   * Укажите сеть:
                   * - Mainnet: "https://nodes.wavesnodes.com/"
          		 * - Testnet: "https://nodes-testnet.wavesnodes.com/"
          		 * - Stagenet: "https://nodes-stagenet.wavesnodes.com/"
                   */
                  String nodeUrl = "https://nodes-testnet.wavesnodes.com";
          
          		// Создание URL-адреса запроса.
                  URL url = new URL(nodeUrl + "/addresses/balance/" + address);
                  HttpURLConnection con = (HttpURLConnection) url.openConnection();
          
          		// Сопоставление полученных данных.
                  ObjectMapper mapper = new ObjectMapper();
                  Map<String,Object> resp = mapper.readValue(
                      new InputStreamReader(con.getInputStream()),
                      new TypeReference<Map<String,Object>>() {}
                  );
                  long raw = ((Number)resp.get("balance")).longValue();
          
          		// Вывод результатов.
                  System.out.printf("Баланс адреса %s: %.8f WAVES\n", address, raw / 1e8);
              }
          }
          

          # Баланс WAVES с подтверждениями

          Endpoint: GET /addresses/balance/{address}/{confirmations}

          package com.example;
          
          // Необходимые импорты.
          import java.io.InputStreamReader;
          import java.net.HttpURLConnection;
          import java.net.URL;
          import java.util.Map;
          import com.fasterxml.jackson.core.type.TypeReference;
          import com.fasterxml.jackson.databind.ObjectMapper;
          
          public class WavesBalanceWithConfirmations {
              public static void main(String[] args) throws Exception {
          		// Укажите адрес аккаунта.
                  String address = "УКАЖИТЕ АДРЕС";
          
          		// Укажите количество подтверждений.
                  int confirmations = 2;
          
          		/*
                   * Укажите сеть:
                   * - Mainnet: "https://nodes.wavesnodes.com/"
          		 * - Testnet: "https://nodes-testnet.wavesnodes.com/"
          		 * - Stagenet: "https://nodes-stagenet.wavesnodes.com/"
                   */
                  String nodeUrl = "https://nodes-testnet.wavesnodes.com";
          
          		// Создание URL-адреса запроса.
                  URL url = new URL(nodeUrl + "/addresses/balance/" + address + "/" + confirmations);
                  HttpURLConnection con = (HttpURLConnection) url.openConnection();
          
          		// Сопоставление полученных данных.
                  ObjectMapper mapper = new ObjectMapper();
                  Map<String,Object> resp = mapper.readValue(
                      new InputStreamReader(con.getInputStream()),
                      new TypeReference<Map<String,Object>>() {}
                  );
                  long raw = ((Number)resp.get("balance")).longValue();
          
          		// Вывод результатов.
                  System.out.printf("Баланс адреса %s (>= %d количество подтверждений): %.8f WAVES\n", address, confirmations, raw / 1e8);
              }
          }
          

          # Детальная информация о балансе

          Endpoint: GET /addresses/balance/details/{address}

          Обратите внимание: Метод показывает доступные, регулярные, генерирующие и эффективные остатки на счету аккаунта.

          package com.example;
          
          // Необходимые импорты.
          import java.io.InputStreamReader;
          import java.net.HttpURLConnection;
          import java.net.URL;
          import java.util.Map;
          import com.fasterxml.jackson.core.type.TypeReference;
          import com.fasterxml.jackson.databind.ObjectMapper;
          
          public class DetailedBalanceInfo {
              public static void main(String[] args) throws Exception {
          		// Укажите адрес аккаунта.
                  String address = "УКАЖИТЕ АДРЕС";
          
          		/*
                   * Укажите сеть:
                   * - Mainnet: "https://nodes.wavesnodes.com/"
          		 * - Testnet: "https://nodes-testnet.wavesnodes.com/"
          		 * - Stagenet: "https://nodes-stagenet.wavesnodes.com/"
                   */
                  String nodeUrl = "https://nodes-testnet.wavesnodes.com";
          
          		// Создание URL-адреса запроса.
                  URL url = new URL(nodeUrl + "/addresses/balance/details/" + address);
                  HttpURLConnection con = (HttpURLConnection) url.openConnection();
          
          		// Сопоставление полученных данных.
                  ObjectMapper mapper = new ObjectMapper();
                  Map<String,Object> info = mapper.readValue(
                      new InputStreamReader(con.getInputStream()),
                      new TypeReference<Map<String,Object>>() {}
                  );
          
          		// Вывод результатов.
                  System.out.printf("Регулярный: %.8f WAVES%n", ((Number)info.get("regular")).doubleValue()/1e8);
                  System.out.printf("Доступный: %.8f WAVES%n", ((Number)info.get("available")).doubleValue()/1e8);
                  System.out.printf("Генерирующий: %.8f WAVES%n", ((Number)info.get("generating")).doubleValue()/1e8);
                  System.out.printf("Эффективный: %.8f WAVES%n", ((Number)info.get("effective")).doubleValue()/1e8);
              }
          }
          

          # Баланс нескольких адресов

          Endpoint: POST /addresses/balance

          package com.example;
          
          // Необходимые импорты.
          import java.io.InputStreamReader;
          import java.io.OutputStream;
          import java.net.HttpURLConnection;
          import java.net.URL;
          import java.util.List;
          import java.util.Map;
          import com.fasterxml.jackson.core.type.TypeReference;
          import com.fasterxml.jackson.databind.ObjectMapper;
          
          public class BalancesForMultipleAddresses {
              public static void main(String[] args) throws Exception {
          		// Укажите адреса аккаунтов.
                  List<String> addresses = List.of(
                      "УКАЖИТЕ ПЕРВЫЙ АДРЕС",
                      "УКАЖИТЕ ВТОРОЙ АДРЕС"
          			// ...
                  );
          
          		/*
                   * Укажите сеть:
                   * - Mainnet: "https://nodes.wavesnodes.com/addresses/balance"
          		 * - Testnet: "https://nodes-testnet.wavesnodes.com/addresses/balance"
          		 * - Stagenet: "https://nodes-stagenet.wavesnodes.com/addresses/balance"
                   */
                  String nodeUrl = "https://nodes-testnet.wavesnodes.com/addresses/balance";
          
          		// Сопоставление полученных данных.
                  ObjectMapper mapper = new ObjectMapper();
                  byte[] body = mapper.writeValueAsBytes(Map.of("addresses", addresses));
          		
          		// Создание URL-адреса запроса.
                  HttpURLConnection con = (HttpURLConnection) new URL(nodeUrl).openConnection();
                  con.setDoOutput(true);
                  con.setRequestMethod("POST");
                  con.setRequestProperty("Content-Type", "application/json");
          
                  try (OutputStream os = con.getOutputStream()) {
                      os.write(body);
                  }
          		
          		// Сопоставление полученных данных.
                  List<Map<String, Object>> results = mapper.readValue(
                      new InputStreamReader(con.getInputStream()),
                      new TypeReference<List<Map<String, Object>>>() {}
                  );
          
          		// Вывод результатов.
                  for (int i = 0; i < addresses.size(); i++) {
                      Map<String, Object> balanceEntry = results.get(i);
                      double balance = ((Number) balanceEntry.get("balance")).doubleValue() / 1e8;
                      System.out.printf("%s: %.8f WAVES%n", addresses.get(i), balance);
                  }
              }
          }
          

          # Записях данных аккаунта по адресу

          Endpoint: GET /addresses/data/{address}

          package com.example;
          
          // Необходимые импорты.
          import java.io.InputStreamReader;
          import java.net.HttpURLConnection;
          import java.net.URL;
          import java.util.List;
          import java.util.Map;
          import com.fasterxml.jackson.core.type.TypeReference;
          import com.fasterxml.jackson.databind.ObjectMapper;
          
          public class AccountDataEntries {
              public static void main(String[] args) throws Exception {
          		// Укажите адрес аккаунта.
                  String address = "УКАЖИТЕ АДРЕС";
          
          		/*
                   * Укажите сеть:
                   * - Mainnet: "https://nodes.wavesnodes.com/"
          		 * - Testnet: "https://nodes-testnet.wavesnodes.com/"
          		 * - Stagenet: "https://nodes-stagenet.wavesnodes.com/"
                   */
                  String nodeUrl = "https://nodes-testnet.wavesnodes.com";
          
          		// Создание URL-адреса запроса.
                  URL url = new URL(nodeUrl + "/addresses/data/" + address);
                  HttpURLConnection con = (HttpURLConnection) url.openConnection();
          
          		// Сопоставление полученных данных.
                  ObjectMapper mapper = new ObjectMapper();
          
                  List<Map<String,Object>> entries = mapper.readValue(
                      new InputStreamReader(con.getInputStream()),
                      new TypeReference<List<Map<String,Object>>>() {}
                  );
          
          		// Вывод результатов.
                  entries.forEach(e -> System.out.printf("%s (%s): %s%n", e.get("key"), e.get("type"), e.get("value")));
              }
          }
          

          # Записи данных по ключу

          Endpoint: GET /addresses/data/{address}/{key}

          package com.example;
          
          // Необходимые импорты.
          import java.io.InputStreamReader;
          import java.net.HttpURLConnection;
          import java.net.URL;
          import java.util.Map;
          import com.fasterxml.jackson.core.type.TypeReference;
          import com.fasterxml.jackson.databind.ObjectMapper;
          
          public class DataEntryByKey {
              public static void main(String[] args) throws Exception {
          		// Укажите адрес аккаунта.
                  String address = "УКАЖИТЕ АДРЕС";
          
          		// Укажите ключ аккаунта.
                  String key = "УКАЖИТЕ КЛЮЧ АККАУНТА";
          
          		/*
                   * Укажите сеть:
                   * - Mainnet: "https://nodes.wavesnodes.com/"
          		 * - Testnet: "https://nodes-testnet.wavesnodes.com/"
          		 * - Stagenet: "https://nodes-stagenet.wavesnodes.com/"
                   */
                  String nodeUrl = "https://nodes-testnet.wavesnodes.com";
          
          		// Создание URL-адреса запроса.
                  URL url = new URL(nodeUrl + "/addresses/data/" + address + "/" + key);
                  HttpURLConnection con = (HttpURLConnection) url.openConnection();
          
          		// Сопоставление полученных данных.
                  ObjectMapper mapper = new ObjectMapper();
                  Map<String,Object> entry = mapper.readValue(
                      new InputStreamReader(con.getInputStream()),
                      new TypeReference<Map<String,Object>>() {}
                  );
          
          		// Вывод результатов.
                  System.out.printf("%s (%s): %s%n", entry.get("key"), entry.get("type"), entry.get("value"));
              }
          }
          

          # Метаданные скрипта аккаунта

          Endpoint: GET /addresses/scriptInfo/{address}

          package com.example;
          
          // Необходимые импорты.
          import java.io.InputStreamReader;
          import java.net.HttpURLConnection;
          import java.net.URL;
          import java.util.Map;
          import com.fasterxml.jackson.core.type.TypeReference;
          import com.fasterxml.jackson.databind.ObjectMapper;
          
          public class ScriptInfo {
              public static void main(String[] args) throws Exception {
          		// Укажите адрес аккаунта.
                  String address = "УКАЖИТЕ АДРЕС";
          
          		/*
                   * Укажите сеть:
                   * - Mainnet: "https://nodes.wavesnodes.com/"
          		 * - Testnet: "https://nodes-testnet.wavesnodes.com/"
          		 * - Stagenet: "https://nodes-stagenet.wavesnodes.com/"
                   */
                  String nodeUrl = "https://nodes-testnet.wavesnodes.com";
          
          		// Создание URL-адреса запроса.
                  URL url = new URL(nodeUrl + "/addresses/scriptInfo/" + address);
                  HttpURLConnection con = (HttpURLConnection) url.openConnection();
          
          		// Сопоставление полученных данных.
                  ObjectMapper mapper = new ObjectMapper();
                  Map<String,Object> info = mapper.readValue(
                      new InputStreamReader(con.getInputStream()),
                      new TypeReference<Map<String,Object>>() {}
                  );
          
          		// Вывод результатов.
                  System.out.printf("Установлен скрипт: %b%n", info.get("script") != null);
                  if (info.get("script") != null) {
                      System.out.printf("Сложность скрипта: %d%nДополнительная комиссия: %d%n", ((Number)info.get("complexity")).intValue(), ((Number)info.get("extraFee")).intValue());
                  }
              }
          }
          
          Использование криптографических утилит
          Развертывание смарт-контрактов
          Использование криптографических утилит
          Развертывание смарт-контрактов