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 & waves-transactions
      • Установка SDK
        Установка SDK
      • Запуск кода
        • Отправка транзакций
          Отправка транзакций
        • Использование криптографических утилит
          Использование криптографических утилит
        • Взаимодействие с нодой
          Взаимодействие с нодой
        • Развертывание смарт-контрактов
          Развертывание смарт-контрактов
        Запуск кода
      Ts-lib-crypto & waves-transactions
    • 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}

          <?php
          
          // Укажите ID ассета.
          $assetId = "УКАЖИТЕ ID АССЕТА";
          
          // Укажите максимальное количество записей для просмотра.
          $limit = 100;
          
          /*
           * Укажите сеть:
           * - Mainnet: "https://nodes.wavesnodes.com"
           * - Testnet: "https://nodes-testnet.wavesnodes.com"
           * - Stagenet: "https://nodes-stagenet.wavesnodes.com"
           */
          $nodeUrl = "https://nodes-testnet.wavesnodes.com";
          
          // Получение высоты последнего блока.
          $heightUrl = $nodeUrl . "/blocks/height";
          $heightResponse = file_get_contents($heightUrl);
          $height = json_decode($heightResponse, true)['height'];
          $height -= 1;
          
          // Создание URL-запроса.
          $url = "$nodeUrl/assets/$assetId/distribution/$height/limit/$limit";
          $response = file_get_contents($url);
          
          // Анализ полученных данных.
          $data = json_decode($response, true);
          
          // Вывод результатов.
          echo "––––––––––––––––––––––––––––––––––––––\n";
          echo "Распределение баланса активов (адрес: количество):\n";
          
          foreach ($data['items'] as $address => $amount) {
              $balanceInWaves = $amount / 100.0;
              printf("%s: %.2f\n", $address, $balanceInWaves);
          }
          
          // Check if more pages are available.
          if (!empty($data['hasNext']) && $data['hasNext'] === true) {
              if (!empty($data['lastItem'])) {
                  printf("\Доступно больше страниц. Последний элемент: %s\n", $data['lastItem']);
              }
          }
          

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

          Endpoint: GET /assets/balance/{address}

          <?php
          
          // Укажите адрес.
          $address = 'УКАЖИТЕ АДРЕС';
          
          /*
           * Укажите сеть:
           * - Mainnet:  'https://nodes.wavesnodes.com/'
           * - Testnet:  'https://nodes-testnet.wavesnodes.com/'
           * - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
           */
          $nodeUrl = 'https://nodes-testnet.wavesnodes.com';
          
          // Создание JSON-тела запроса.
          function getJson(array $opts): ?array {
              $ch = curl_init();
              curl_setopt_array($ch, $opts);
              $resp = curl_exec($ch);
              curl_close($ch);
              if ($resp === false) return null;
              return json_decode($resp, true);
          }
          
          // Создание URL-запроса.
          $balanceUrl   = $nodeUrl . '/assets/balance/' . $address;
          $balancesResp = getJson([
              CURLOPT_URL            => $balanceUrl,
              CURLOPT_RETURNTRANSFER => true,
          ]);
          $balances = $balancesResp['balances'] ?? [];
          
          // Вывод результатов.
          echo "––––––––––––––––––––––––––––––––––––––\n";
          echo "Баланс активов по адресу: $address\n";
          
          $decimalsCache = ['WAVES' => 8];
          
          foreach ($balances as $entry) {
              $assetIdRaw = $entry['assetId'];
              $assetKey   = $assetIdRaw === '' ? 'WAVES' : $assetIdRaw;
              $rawBalance = $entry['balance'];
              if (!isset($decimalsCache[$assetKey])) {
                  $detailsUrl = $nodeUrl . '/assets/details/' . $assetIdRaw;
                  $details    = getJson([
                      CURLOPT_URL            => $detailsUrl,
                      CURLOPT_RETURNTRANSFER => true,
                  ]) ?? [];
                  $decimalsCache[$assetKey] = $details['decimals'] ?? 0;
              }
              $decimals = $decimalsCache[$assetKey];
              $formatted = $rawBalance / (10 ** $decimals);
              $balanceStr = number_format($formatted, $decimals, '.', '');
              echo "Asset ID: {$assetKey}, Balance: {$balanceStr}\n";
          }
          

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

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

          <?php
          
          // Укажите адрес.
          $address = 'УКАЖИТЕ АДРЕС';
          
          // Укажите ID ассета.
          $assetId = 'УКАЖИТЕ ID АССЕТА';
          
          /*
           * Укажите сеть:
           * - Mainnet:  "https://nodes.wavesnodes.com/"
           * - Testnet:  "https://nodes-testnet.wavesnodes.com/"
           * - Stagenet: "https://nodes-stagenet.wavesnodes.com/"
           */
          $nodeUrl = 'https://nodes-testnet.wavesnodes.com';
          
          // Perform a GET request and decode JSON response as an array.
          function getJson(array $opts): ?array {
              $ch = curl_init();
              curl_setopt_array($ch, $opts);
              $resp = curl_exec($ch);
              curl_close($ch);
              if ($resp === false) return null;
              return json_decode($resp, true);
          }
          
          $balanceUrl = "{$nodeUrl}/assets/balance/{$address}/{$assetId}";
          $resp       = getJson([
              CURLOPT_URL            => $balanceUrl,
              CURLOPT_RETURNTRANSFER => true,
          ]) ?? [];
          $rawBalance = $resp['balance'] ?? 0;
          $detailsUrl = "{$nodeUrl}/assets/details/{$assetId}";
          $details    = getJson([
              CURLOPT_URL            => $detailsUrl,
              CURLOPT_RETURNTRANSFER => true,
          ]) ?? [];
          $decimals   = $details['decimals'] ?? 0;
          $formatted = $rawBalance / (10 ** $decimals);
          
          // Вывод результатов.
          echo "––––––––––––––––––––––––––––––––––––––\n";
          printf(
              "Баланс актива %s по адерсу %s: %." . $decimals . "f\n",
              $assetId,
              $address,
              $formatted
          );
          

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

          Endpoint: GET /assets/details/{assetId}

          <?php
          
          // Укажите ID ассета.
          $assetId = 'УКАЖИТЕ ID АССЕТА';
          
          /*
           * Укажите сеть:
           * - Mainnet:  "https://nodes.wavesnodes.com/"
           * - Testnet:  "https://nodes-testnet.wavesnodes.com/"
           * - Stagenet: "https://nodes-stagenet.wavesnodes.com/"
           */
          $nodeUrl = 'https://nodes-testnet.wavesnodes.com';
          
          // Выполнение GET-запроса и обработка полученных JSON-данных.
          function getJson(array $opts): ?array {
              $ch = curl_init();
              curl_setopt_array($ch, $opts);
              $resp = curl_exec($ch);
              curl_close($ch);
              if ($resp === false) return null;
              return json_decode($resp, true);
          }
          
          $detailsUrl = "{$nodeUrl}/assets/details/{$assetId}";
          $details = getJson([
              CURLOPT_URL            => $detailsUrl,
              CURLOPT_RETURNTRANSFER => true,
          ]) ?? [];
          $name        = $details['name'] ?? '';
          $description = $details['description'] ?? '';
          $decimals    = isset($details['decimals']) ? (int)$details['decimals'] : 0;
          $reissuable  = isset($details['reissuable']) ? (bool)$details['reissuable'] : false;
          $issuer      = $details['issuer'] ?? '';
          
          // Вывод результатов.
          echo "––––––––––––––––––––––––––––––––––––––\n";
          printf(
              "Наименование: %s\nОписание: %s\nЗнаков после запятых: %d\nПеревыпускаемость: %s\nСоздатель: %s\n",
              $name,
              $description,
              $decimals,
              $reissuable ? 'true' : 'false',
              $issuer
          );   
          

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

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

          <?php
          
          // Укажите адрес.
          $address = 'УКАЖИТЕ АДРЕС';
          
          // Укажите максимальное количество записей для просмотра.
          $limit = 100;
          
          /*
           * Укажите сеть:
           * - Mainnet:  "https://nodes.wavesnodes.com/"
           * - Testnet:  "https://nodes-testnet.wavesnodes.com/"
           * - Stagenet: "https://nodes-stagenet.wavesnodes.com/"
           */
          $nodeUrl = 'https://nodes-testnet.wavesnodes.com';
          
          // Создание URL-запроса.
          $url = "{$nodeUrl}/assets/nft/{$address}/limit/{$limit}";
          
          // Отправка GET-запроса и обработка полученных данных.
          $ch = curl_init();
          curl_setopt($ch, CURLOPT_URL, $url);
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
          $response = curl_exec($ch);
          curl_close($ch);
          
          $nfts = json_decode($response, true) ?: [];
          
          // Вывод результатов.
          echo "––––––––––––––––––––––––––––––––––––––\n";
          echo "NFT по адресу: $address\n";
          
          foreach ($nfts as $nft) {
              $assetId     = $nft['assetId']     ?? '';
              $name        = $nft['name']        ?? '';
              $description = $nft['description'] ?? '';
              $quantity    = isset($nft['quantity']) ? (int)$nft['quantity'] : 0;
          
              printf(
                  "ID: %s | Наименование: %s | Описание: %s | Количество: %d\n",
                  $assetId,
                  $name,
                  $description,
                  $quantity
              );
          }
          

          # Addresses API

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

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

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

          Endpoint: GET /addresses

          <?php
          
          /*
           * Укажите сеть:
           * - Mainnet:  "https://nodes.wavesnodes.com/"
           * - Testnet:  "https://nodes-testnet.wavesnodes.com/"
           * - Stagenet: "https://nodes-stagenet.wavesnodes.com/"
           */
          $nodeUrl = 'https://nodes-testnet.wavesnodes.com';
          
          // Создание URL-запроса.
          $url = $nodeUrl . '/addresses';
          
          // Отправка GET-запроса и обработка полученных данных.
          $ch = curl_init();
          curl_setopt($ch, CURLOPT_URL, $url);
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
          $response = curl_exec($ch);
          curl_close($ch);
          
          $addresses = json_decode($response, true) ?: [];
          
          // Вывод результатов.
          echo "––––––––––––––––––––––––––––––––––––––\n";
          echo "Адреса кошельков ноды:\n";
          
          foreach ($addresses as $addr) {
              echo $addr . "\n";
          }
          

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

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

          <?php
          
          // Стартовый и конеченый индексы кошельков.
          $from = 0;
          $to   = 4;
          
          /*
           * Укажите сеть:
           * - Mainnet:  "https://nodes.wavesnodes.com/"
           * - Testnet:  "https://nodes-testnet.wavesnodes.com/"
           * - Stagenet: "https://nodes-stagenet.wavesnodes.com/"
           */
          $nodeUrl = 'https://nodes-testnet.wavesnodes.com';
          
          // Создание URL-запроса.
          $url = sprintf('%s/addresses/seq/%d/%d', $nodeUrl, $from, $to);
          
          // Отправка GET-запроса и обработка полученных данных.
          $ch = curl_init();
          curl_setopt($ch, CURLOPT_URL, $url);
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
          $response = curl_exec($ch);
          curl_close($ch);
          $addresses = json_decode($response, true) ?: [];
          
          // Вывод результатов.
          printf("Адреса от %d до %d:\n", $from, $to);
          foreach ($addresses as $addr) {
              echo $addr . "\n";
          }
          

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

          Endpoint: GET /addresses/balance/{address}

          <?php
          
          // Укажите адрес.
          $address = 'УКАЖИТЕ АДРЕС';
          
          /*
           * Укажите сеть:
           * - Mainnet:  'https://nodes.wavesnodes.com/'
           * - Testnet:  'https://nodes-testnet.wavesnodes.com/'
           * - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
           */
          $nodeUrl = 'https://nodes-testnet.wavesnodes.com';
          
          // Создание URL-запроса.
          $url = $nodeUrl . '/addresses/balance/' . $address;
          
          // Отправка GET-запроса и обработка полученных данных.
          $ch = curl_init();
          curl_setopt($ch, CURLOPT_URL, $url);
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
          $response = curl_exec($ch);
          curl_close($ch);
          $data = json_decode($response, true) ?: [];
          $raw = isset($data['balance']) ? (int)$data['balance'] : 0;
          
          // Вывод результатов.
          printf("Баланс адреса %s: %.8f WAVES\n", $address, $raw / 1e8);
          

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

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

          <?php
          
          // Укажите адрес.
          $address = 'УКАЖИТЕ АДРЕС';
          
          // Укажите количество подтверждений.
          $confirmations = 2;
          
          /*
           * Укажите сеть:
           * - Mainnet:  'https://nodes.wavesnodes.com/'
           * - Testnet:  'https://nodes-testnet.wavesnodes.com/'
           * - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
           */
          $nodeUrl = 'https://nodes-testnet.wavesnodes.com';
          
          // Создание URL-запроса.
          $url = sprintf('%s/addresses/balance/%s/%d', $nodeUrl, $address, $confirmations);
          
          // Отправка GET-запроса и обработка полученных данных.
          $ch = curl_init();
          curl_setopt($ch, CURLOPT_URL, $url);
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
          $response = curl_exec($ch);
          curl_close($ch);
          $data = json_decode($response, true) ?: [];
          $raw = isset($data['balance']) ? (int)$data['balance'] : 0;
          
          // Вывод результатов.
          printf(
              "Баланс по адресу %s (>= %d подтверждений): %.8f WAVES\n",
              $address,
              $confirmations,
              $raw / 1e8
          );
          

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

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

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

          <?php
          
          // Укажите адрес.
          $address = 'УКАЖИТЕ АДРЕС';
          
          /*
           * Укажите сеть:
           * - Mainnet:  'https://nodes.wavesnodes.com/'
           * - Testnet:  'https://nodes-testnet.wavesnodes.com/'
           * - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
           */
          $nodeUrl = 'https://nodes-testnet.wavesnodes.com';
          
          // Создание URL-запроса.
          $url = $nodeUrl . '/addresses/balance/details/' . $address;
          
          // Отправка GET-запроса и обработка полученных данных.
          $ch = curl_init();
          curl_setopt($ch, CURLOPT_URL, $url);
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
          $response = curl_exec($ch);
          curl_close($ch);
          $info = json_decode($response, true) ?: [];
          
          // Вывод результатов.
          printf("Регулярный:   %.8f WAVES\n", (isset($info['regular'])   ? $info['regular']   : 0) / 1e8);
          printf("Доступный: %.8f WAVES\n", (isset($info['available']) ? $info['available'] : 0) / 1e8);
          printf("Генерирующий:%.8f WAVES\n", (isset($info['generating'])? $info['generating']: 0) / 1e8);
          printf("Эффективный: %.8f WAVES\n", (isset($info['effective']) ? $info['effective'] : 0) / 1e8);
          

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

          Endpoint: POST /addresses/balance

          <?php
          
          // Укажите адреса аккаунтов.
          $addresses = [
              'УКАЖИТЕ 1 АДРЕС',
              'УКАЖИТЕ 2 АДРЕС',
              // ...
          ];
          
          /*
           * Укажите сеть:
           * - Mainnet:  'https://nodes.wavesnodes.com/addresses/balance'
           * - Testnet:  'https://nodes-testnet.wavesnodes.com/addresses/balance'
           * - Stagenet: 'https://nodes-stagenet.wavesnodes.com/addresses/balance'
           */
          $nodeUrl = 'https://nodes-testnet.wavesnodes.com/addresses/balance';
          
          // Отправка POST-запроса и обработка полученных данных.
          $body = json_encode(['addresses' => $addresses]);
          $ch = curl_init();
          curl_setopt($ch, CURLOPT_URL, $nodeUrl);
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
          curl_setopt($ch, CURLOPT_POST, true);
          curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
          curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
          $response = curl_exec($ch);
          curl_close($ch);
          $results = json_decode($response, true) ?: [];
          
          // Вывод результатов.
          foreach ($addresses as $i => $address) {
              $balance = isset($results[$i]['balance']) ? $results[$i]['balance'] / 1e8 : 0;
              printf("%s: %.8f WAVES\n", $address, $balance);
          }
          

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

          Endpoint: GET /addresses/data/{address}

          <?php
          
          // Укажите адрес.
          $address = 'УКАЖИТЕ АДРЕС';
          
          /*
           * Укажите сеть:
           * - Mainnet:  'https://nodes.wavesnodes.com'
           * - Testnet:  'https://nodes-testnet.wavesnodes.com'
           * - Stagenet: 'https://nodes-stagenet.wavesnodes.com'
           */
          $nodeUrl = 'https://nodes-testnet.wavesnodes.com';
          
          // Создание URL-запроса.
          $url = $nodeUrl . '/addresses/data/' . $address;
          
          // Отправка GET-запроса и обработка полученных данных.
          $ch = curl_init();
          curl_setopt($ch, CURLOPT_URL, $url);
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
          $response = curl_exec($ch);
          curl_close($ch);
          $entries = json_decode($response, true) ?: [];
          
          // Вывод результатов.
          foreach ($entries as $entry) {
              printf("%s (%s): %s\n", $entry['key'], $entry['type'], $entry['value']);
          }
          

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

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

          <?php
          
          // Укажите адрес.
          $address = 'УКАЖИТЕ АДРЕС';
          
          // Укажите ключ аккаунта.
          $key = 'УКАЖИТЕ КЛЮЧ АККАУНТА';
          
          /*
           * Укажите сеть:
           * - Mainnet:  'https://nodes.wavesnodes.com'
           * - Testnet:  'https://nodes-testnet.wavesnodes.com'
           * - Stagenet: 'https://nodes-stagenet.wavesnodes.com'
           */
          $nodeUrl = 'https://nodes-testnet.wavesnodes.com';
          
          // Создание URL-запроса.
          $url = $nodeUrl . '/addresses/data/' . $address . '/' . $key;
          
          // Отправка GET-запроса и обработка полученных данных.
          $ch = curl_init();
          curl_setopt($ch, CURLOPT_URL, $url);
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
          $response = curl_exec($ch);
          curl_close($ch);
          $entry = json_decode($response, true) ?: [];
          
          // Вывод результатов.
          printf("%s (%s): %s\n", $entry['key'], $entry['type'], $entry['value']);
          

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

          Endpoint: GET /addresses/scriptInfo/{address}

          <?php
          
          // Укажите адрес.
          $address = 'УКАЖИТЕ АДРЕС';
          
          /*
           * Укажите сеть:
           * - Mainnet:  'https://nodes.wavesnodes.com'
           * - Testnet:  'https://nodes-testnet.wavesnodes.com'
           * - Stagenet: 'https://nodes-stagenet.wavesnodes.com'
           */
          $nodeUrl = 'https://nodes-testnet.wavesnodes.com';
          
          // Создание URL-запроса.
          $url = $nodeUrl . '/addresses/scriptInfo/' . $address;
          
          // Отправка GET-запроса и обработка полученных данных.
          $ch = curl_init();
          curl_setopt($ch, CURLOPT_URL, $url);
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
          $response = curl_exec($ch);
          curl_close($ch);
          
          $info = json_decode($response, true) ?: [];
          
          // Вывод результатов.
          $hasScript = isset($info['script']) && $info['script'] !== null;
          printf("Наличие скрипта: %s\n", $hasScript ? 'true' : 'false');
          
          if ($hasScript) {
              printf("Сложность скрипта: %d\nДополнительная комиссия: %d\n", $info['complexity'], $info['extraFee']);
          }
          
          Использование криптографических утилит
          Развертывание смарт-контрактов
          Использование криптографических утилит
          Развертывание смарт-контрактов