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}

          async function getAssetDistributionRaw(
              assetId: string,
              limit = 100
            ): Promise<void> {
              try {
                /*
                 * Укажите ссылку на ноду в нужной сети:
                 * - Mainnet: "https://nodes.wavesnodes.com/"
                 * - Testnet: "https://nodes-testnet.wavesnodes.com/"
                 * - Stagenet: "https://nodes-stagenet.wavesnodes.com/"
                 */
                const nodeUrl = 'https://nodes-testnet.wavesnodes.com';
            
                // Получение высоты последнего блока.
                const heightResp = await fetch(`${nodeUrl}/blocks/height`);
                const heightData: { height: number } = await heightResp.json();
                const height = heightData.height - 1;
            
                // Создание URL-запроса.
                const url = `${nodeUrl}/assets/${assetId}/distribution/${height}/limit/${limit}`;
                const resp = await fetch(url);
            
                // Преобразование ответа запроса в текст.
                const text: string = await resp.text();
            
                // Regex-выражение для нахождения необходимых значений.
                const entryRegex = /"([1-9A-HJ-NP-Za-km-z]{30,})":(\d+)/g;
            
                // Вывод результатов.
                console.log('––––––––––––––––––––––––––––––––––––––');
                console.log('Распределение активов (адрес: количество):');
            
                let match: RegExpExecArray | null;
                while ((match = entryRegex.exec(text)) !== null) {
                  const address: string = match[1];
                  const balanceLamports: number = Number(match[2]);
                  const balanceInWaves: number = balanceLamports / 100;
                  console.log(`${address}: ${balanceInWaves.toFixed(2)}`);
                }
            
                // Проверка наличия дополнтиельных страниц с данными для пагинации.
                if (text.includes('"hasNext":true')) {
                  const lastItemMatch = /"lastItem":"(.*?)"/.exec(text);
                  if (lastItemMatch) {
                    console.log(`\Доступно больше страниц. Последний элемент: ${lastItemMatch[1]}`);
                  }
                }
              } catch (error) {
                console.error('Ошибка:', error);
              }
            }
            
            // Укажите ID актива.
            const assetId = 'УКАЖИТЕ ID АКТИВА';
            
            getAssetDistributionRaw(assetId);
          

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

          Endpoint: GET /assets/balance/{address}

          async function getAllAssetBalancesForAddress(address: string): Promise<void> {
              try {
                /*
                 * Укажите ссылку на ноду в нужной сети:
                 * - Mainnet: "https://nodes.wavesnodes.com/"
                 * - Testnet: "https://nodes-testnet.wavesnodes.com/"
                 * - Stagenet: "https://nodes-stagenet.wavesnodes.com/"
                 */
                const nodeUrl: string = 'https://nodes-testnet.wavesnodes.com';
            
                // Создание URL-запроса.
                const url: string = `${nodeUrl}/assets/balance/${address}`;
            
                // Получение ответа на данный запрос.
                const resp: Response = await fetch(url);
                const data: {
                  address: string;
                  balances: { assetId: string; balance: number }[];
                } = await resp.json();
            
                // Получение данных балансов.
                const balances = data.balances || [];
            
                console.log('––––––––––––––––––––––––––––––––––––––');
                console.log(`Баланс активов по адресу: ${address}`);
            
                // Вывод результатов.
                for (const b of balances) {
                  const assetId: string = b.assetId;
                  const raw: number = Number(b.balance);
                  const formatted: number = raw / 100;
                  console.log(`ID актива: ${assetId}, Баланс: ${formatted.toFixed(2)}`);
                }
              } catch (error) {
                console.error('Ошибка:', error);
              }
            }
            
            // Укажите адрес аккаунта.
            const address: string = 'УКАЖИТЕ АДРЕС';
            
            getAllAssetBalancesForAddress(address);
          

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

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

          async function getBalanceOfSpecificAsset(address: string, assetId: string): Promise<void> {
              try {
                /*
                 * Укажите ссылку на ноду в нужной сети:
                 * - Mainnet: "https://nodes.wavesnodes.com/"
                 * - Testnet: "https://nodes-testnet.wavesnodes.com/"
                 * - Stagenet: "https://nodes-stagenet.wavesnodes.com/"
                 */
                const nodeUrl: string = 'https://nodes-testnet.wavesnodes.com';
            
                // Создание URL-запроса.
                const url: string = `${nodeUrl}/assets/balance/${address}/${assetId}`;
            
                // Получение ответа на данный запрос.
                const resp: Response = await fetch(url);
                const data: {
                  address: string;
                  assetId: string;
                  balance: number;
                } = await resp.json();
            
                // Получение и форматирование данных баланса.
                const raw: number = Number(data.balance);
                const formatted: number = raw / 100;
            
                // Вывод результатов.
                console.log('––––––––––––––––––––––––––––––––––––––');
                console.log(`Баланс актива ${data.assetId} по адресу ${data.address}: ${formatted.toFixed(2)}`);
              } catch (error) {
                console.error('Ошибка:', error);
              }
            }
            
            // Укажите адрес аккаунта.
            const address: string = 'УКАЖИТЕ АДРЕС';
            
            // Укажите ID актива.
            const assetId: string = 'УКАЖИТЕ ID АКТИВА';
            
            getBalanceOfSpecificAsset(address, assetId);
          

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

          Endpoint: GET /assets/details/{assetId}

          async function getAssetDetails(assetId: string): Promise<void> {
              try {
                /*
                 * Укажите ссылку на ноду в нужной сети:
                 * - Mainnet: "https://nodes.wavesnodes.com/"
                 * - Testnet: "https://nodes-testnet.wavesnodes.com/"
                 * - Stagenet: "https://nodes-stagenet.wavesnodes.com/"
                 */
                const nodeUrl: string = 'https://nodes-testnet.wavesnodes.com';
            
                // Создание URL-запроса.
                const url: string = `${nodeUrl}/assets/details/${assetId}`;
            
                // Получение ответа на данный запрос.
                const resp: Response = await fetch(url);
                const data: {
                  name: string;
                  description: string;
                  decimals: number;
                  reissuable: boolean;
                  issuer: string;
                } = await resp.json();
            
                // Вывод результатов.
                console.log('––––––––––––––––––––––––––––––––––––––');
                console.log(`Наименование: ${data.name}`);
                console.log(`Описание: ${data.description}`);
                console.log(`Знаков после запятой: ${data.decimals}`);
                console.log(`Перевыпускаемость: ${data.reissuable}`);
                console.log(`Создатель: ${data.issuer}`);
              } catch (error) {
                console.error('Ошибка:', error);
              }
            }
            
            // Укажите ID актива.
            const assetId: string = 'УКАЖИТЕ ID АКТИВА';
            
            getAssetDetails(assetId);
          

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

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

          async function getNFTsByAddress(address: string, limit: number = 100): Promise<void> {
              try {
                /*
                 * Укажите ссылку на ноду в нужной сети:
                 * - Mainnet: "https://nodes.wavesnodes.com/"
                 * - Testnet: "https://nodes-testnet.wavesnodes.com/"
                 * - Stagenet: "https://nodes-stagenet.wavesnodes.com/"
                 */
                const nodeUrl: string = 'https://nodes-testnet.wavesnodes.com';
            
                // Создание URL-запроса.
                const url: string = `${nodeUrl}/assets/nft/${address}/limit/${limit}`;
            
                // Получение ответа на данный запрос.
                const resp: Response = await fetch(url);
                const nfts: {
                  assetId: string;
                  name: string;
                  description: string;
                  quantity: number;
                }[] = await resp.json();
            
                // Вывод результатов.
                console.log('––––––––––––––––––––––––––––––––––––––');
                console.log(`NFT-активы по адерсу: ${address}`);
            
                for (const nft of nfts) {
                  console.log(`ID: ${nft.assetId} | Наименование: ${nft.name} | Описание: ${nft.description} | Количество: ${nft.quantity}`);
                }
              } catch (error) {
                console.error('Ошибка:', error);
              }
            }
            
            // Укажите адрес аккаунта.
            const address: string = 'УКАЖИТЕ АДРЕС';
            
            getNFTsByAddress(address);
          

          # Addresses API

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

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

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

          Endpoint: GET /addresses

          async function getAllNodeWalletAddresses(): Promise<void> {
              try {
                /*
                 * Укажите ссылку на ноду в нужной сети:
                 * - Mainnet: "https://nodes.wavesnodes.com/"
                 * - Testnet: "https://nodes-testnet.wavesnodes.com/"
                 * - Stagenet: "https://nodes-stagenet.wavesnodes.com/"
                 */
                const nodeUrl: string = 'https://nodes-testnet.wavesnodes.com';
            
                // Создание URL-запроса.
                const url: string = `${nodeUrl}/addresses`;
            
                // Получение ответа на данный запрос.
                const resp: Response = await fetch(url);
                const addresses: string[] = await resp.json();
            
                // Вывод результатов.
                console.log('Адреса в кошельке ноды:');
                addresses.forEach((addr: string): void => {
                  console.log(addr);
                });
              } catch (error) {
                console.error('Ошибка:', error);
              }
            }
            
            getAllNodeWalletAddresses();
          

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

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

          async function getAddressRange(from: number, to: number): Promise<void> {
              try {
                /*
                 * Укажите ссылку на ноду в нужной сети:
                 * - Mainnet: "https://nodes.wavesnodes.com/"
                 * - Testnet: "https://nodes-testnet.wavesnodes.com/"
                 * - Stagenet: "https://nodes-stagenet.wavesnodes.com/"
                 */
                const nodeUrl: string = 'https://nodes-testnet.wavesnodes.com';
            
                // Создание URL-запроса.
                const url: string = `${nodeUrl}/addresses/seq/${from}/${to}`;
            
                // Получение ответа на данный запрос.
                const resp: Response = await fetch(url);
                const addresses: string[] = await resp.json();
            
                // Вывод результатов.
                console.log(`Адрес с индексом от ${from} до ${to}:`);
                addresses.forEach((address: string): void => {
                  console.log(address);
                });
              } catch (error) {
                console.error('Ошибка:', error);
              }
            }
            
            // Диапазон индексов кошельков.
            const from = 0;
            const to = 4;
            
            getAddressRange(from, to);
          

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

          Endpoint: GET /addresses/balance/{address}

          async function getWavesBalance(address: string): Promise<void> {
              try {
                /*
                 * Укажите ссылку на ноду в нужной сети:
                 * - Mainnet: "https://nodes.wavesnodes.com/"
                 * - Testnet: "https://nodes-testnet.wavesnodes.com/"
                 * - Stagenet: "https://nodes-stagenet.wavesnodes.com/"
                 */
                const nodeUrl: string = 'https://nodes-testnet.wavesnodes.com';
            
                // Создание URL-запроса.
                const url: string = `${nodeUrl}/addresses/balance/${address}`;
            
                // Получение ответа на данный запрос.
                const resp: Response = await fetch(url);
                const data: { balance: number } = await resp.json();
            
                // Конвертация баланса.
                const wavesBalance = data.balance / 1e8;
            
                // Вывод результатов.
                console.log(`Баланс по адресу ${address}: ${wavesBalance.toFixed(8)} в WAVES`);
              } catch (error) {
                console.error('Ошибка:', error);
              }
            }
            
            // Укажите адрес аккаунта.
            const address = 'УКАЖИТЕ АДРЕС';
            
            getWavesBalance(address);
          

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

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

          async function getWavesBalanceWithConfirmations(address: string, confirmations: number): Promise<void> {
              try {
                /*
                 * Укажите ссылку на ноду в нужной сети:
                 * - Mainnet: "https://nodes.wavesnodes.com/"
                 * - Testnet: "https://nodes-testnet.wavesnodes.com/"
                 * - Stagenet: "https://nodes-stagenet.wavesnodes.com/"
                 */
                const nodeUrl: string = 'https://nodes-testnet.wavesnodes.com';
            
                // Создание URL-запроса.
                const url: string = `${nodeUrl}/addresses/balance/${address}/${confirmations}`;
            
                // Получение ответа на данный запрос.
                const resp: Response = await fetch(url);
                const data: { balance: number } = await resp.json();
            
                // Конвертация баланса.
                const wavesBalance = data.balance / 1e8;
            
                // Вывод результатов.
                console.log(`Баланс по адресу ${address} (с количеством подтверждений <= ${confirmations}): ${wavesBalance.toFixed(8)} WAVES`);
              } catch (error) {
                console.error('Ошибка:', error);
              }
            }
            
            // Укажите адрес аккаунта.
            const address = 'УКАЖИТЕ АДРЕС';
          
            // Укажите количество подтверждений.
            const confirmations = 2;
            
            getWavesBalanceWithConfirmations(address, confirmations);
          

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

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

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

          async function getDetailedBalanceInfo(address: string): Promise<void> {
              try {
                /*
                 * Укажите ссылку на ноду в нужной сети:
                 * - Mainnet: "https://nodes.wavesnodes.com/"
                 * - Testnet: "https://nodes-testnet.wavesnodes.com/"
                 * - Stagenet: "https://nodes-stagenet.wavesnodes.com/"
                 */
                const nodeUrl: string = 'https://nodes-testnet.wavesnodes.com';
            
                // Создание URL-запроса.
                const url: string = `${nodeUrl}/addresses/balance/details/${address}`;
            
                // Получение ответа на данный запрос.
                const resp: Response = await fetch(url);
                const info: {
                  regular: number;
                  available: number;
                  generating: number;
                  effective: number;
                } = await resp.json();
            
                // Вывод результатов.
                console.log(`Регулярный: ${(info.regular / 1e8).toFixed(8)} WAVES`);
                console.log(`Доступный: ${(info.available / 1e8).toFixed(8)} WAVES`);
                console.log(`Генерирующий: ${(info.generating / 1e8).toFixed(8)} WAVES`);
                console.log(`Эффективный: ${(info.effective / 1e8).toFixed(8)} WAVES`);
              } catch (error) {
                console.error('Ошибка:', error);
              }
            }
            
            // Укажите адрес аккаунта.
            const address = 'УКАЖИТЕ АДРЕС';
            
            getDetailedBalanceInfo(address);
          

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

          Endpoint: POST /addresses/balance

          async function getBalancesForMultipleAddresses(addresses: string[]): Promise<void> {
              try {
                /*
                 * Укажите ссылку на ноду в нужной сети:
                 * - Mainnet: "https://nodes.wavesnodes.com/addresses/balance"
                 * - Testnet: "https://nodes-testnet.wavesnodes.com/addresses/balance"
                 * - Stagenet: "https://nodes-stagenet.wavesnodes.com/addresses/balance"
                 */
                const nodeUrl = 'https://nodes-testnet.wavesnodes.com/addresses/balance';
            
                // Создание POST-запрсоа.
                const body = JSON.stringify({ addresses });
            
                // Отправка POST-запроса
                const resp = await fetch(nodeUrl, {
                  method: 'POST',
                  headers: { 'Content-Type': 'application/json' },
                  body,
                });
            
                // Parse the response.
                const results: { address: string; balance: number }[] = await resp.json();
            
                // Вывод результатов.
                for (let i = 0; i < addresses.length; i++) {
                  const entry = results[i];
                  const balance = entry.balance / 1e8;
                  console.log(`${addresses[i]}: ${balance.toFixed(8)} WAVES`);
                }
              } catch (error) {
                console.error('Ошибка:', error);
              }
            }
            
            // Укажите адреса аккаунтов.
            const addresses = [
              'УКАЖИТЕ 1-ЫЙ АДРЕС',
              'УКАЖИТЕ 2-ЫЙ АДРЕС'
              // ...
            ];
            
            getBalancesForMultipleAddresses(addresses);
          

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

          Endpoint: GET /addresses/data/{address}

          async function getAccountDataEntries(address: string): Promise<void> {
              try {
                /*
                 * Укажите ссылку на ноду в нужной сети:
                 * - Mainnet: "https://nodes.wavesnodes.com/"
                 * - Testnet: "https://nodes-testnet.wavesnodes.com/"
                 * - Stagenet: "https://nodes-stagenet.wavesnodes.com/"
                 */
                const nodeUrl = 'https://nodes-testnet.wavesnodes.com';
            
                // Создание URL-запроса.
                const url = `${nodeUrl}/addresses/data/${address}`;
            
                // Получение ответа на данный запрос.
                const resp = await fetch(url);
            
                // Парсинг JSON-данных.
                type DataEntry = { key: string; type: string; value: any };
                const entries: DataEntry[] = await resp.json();
            
                // Вывод результатов.
                entries.forEach(e => {
                  console.log(`${e.key} (${e.type}): ${e.value}`);
                });
              } catch (error) {
                console.error('Ошибка:', error);
              }
            }
            
            // Укажите адрес аккаунта.
            const address = 'УКАЖИТЕ АДРЕС';
            
            getAccountDataEntries(address);
          

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

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

          async function getDataEntryByKey(address: string, key: string): Promise<void> {
              try {
                /*
                 * Укажите ссылку на ноду в нужной сети:
                 * - Mainnet: "https://nodes.wavesnodes.com/"
                 * - Testnet: "https://nodes-testnet.wavesnodes.com/"
                 * - Stagenet: "https://nodes-stagenet.wavesnodes.com/"
                 */
                const nodeUrl = 'https://nodes-testnet.wavesnodes.com';
            
                // Создание URL-запроса.
                const url = `${nodeUrl}/addresses/data/${address}/${key}`;
            
                // Получение ответа на данный запрос.
                const resp = await fetch(url);
            
                // Парсинг JSON-данных.
                type DataEntry = { key: string; type: string; value: any };
                const entry: DataEntry = await resp.json();
            
                // Вывод результатов.
                console.log(`${entry.key} (${entry.type}): ${entry.value}`);
              } catch (error) {
                console.error('Ошибка:', error);
              }
            }
            
            // Укажите адрес аккаунта.
            const address = 'УКАЖИТЕ АДРЕС';
          
            // Укажите ключ аккаунта.
            const key = 'УКАЖИТЕ КЛЮЧ АККАУНТА';
            
            getDataEntryByKey(address, key);
          

          # Информация о скрипте аккаунта

          Endpoint: GET /addresses/scriptInfo/{address}

          async function getScriptInfo(address: string): Promise<void> {
              try {
                /*
                 * Укажите ссылку на ноду в нужной сети:
                 * - Mainnet: "https://nodes.wavesnodes.com/"
                 * - Testnet: "https://nodes-testnet.wavesnodes.com/"
                 * - Stagenet: "https://nodes-stagenet.wavesnodes.com/"
                 */
                const nodeUrl = 'https://nodes-testnet.wavesnodes.com';
            
                // Создание URL-запроса.
                const url = `${nodeUrl}/addresses/scriptInfo/${address}`;
            
                // Получение ответа на данный запрос.
                const resp = await fetch(url);
            
                // Парсинг JSON-данных.
                type ScriptInfoResponse = {
                  script: string | null;
                  complexity?: number;
                  extraFee?: number;
                };
                const info: ScriptInfoResponse = await resp.json();
            
                // Вывод результатов.
                console.log(`Has Script: ${info.script !== null}`);
                if (info.script !== null) {
                  console.log(`Сложность: ${info.complexity}`);
                  console.log(`Дополнительная комиссия: ${info.extraFee}`);
                }
              } catch (error) {
                console.error('Ошибка:', error);
              }
            }
            
            // Укажите адрес аккаунта.
            const address = 'УКАЖИТЕ АДРЕС';
            
            getScriptInfo(address);
          
          Использование криптографических утилит
          Развертывание смарт-контрактов
          Использование криптографических утилит
          Развертывание смарт-контрактов