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
        • Требования
        • Руководство
      waves_logo Docs

          # Отправка транзакций

          Убедитесь в выполнении требований для отправки транзакций.

          # Требования

          • Кошелёк: Создайте кошелёк с помощью Keeper Wallet или WX Network .

            Примечание: Сохраните сид-фразу кошелька для отправки транзакций.

          • Токены: Получите токены WAVES для оплаты комиссии каждой транзакции:
            • Для сети Mainnet: Приобретите 0.001 WAVES через доступные способы пополнения кошелька .
            • Для сети Testnet: Приобретите 0.001 WAVES через Faucet .
            • Для сети Stagenet: Приобретите 0.001 WAVES через Faucet .

          # Руководство

          Выполните шаги инструкции для необходимого типа транзакции:

          • Issue.
          • Reissue.
          • Burn.
          • Transfer.
          • Mass Transfer.
          • Lease.
          • Lease Cancel.
          • Create Alias.
          • Data.
          • Set Script.
          • Set Asset Script.
          • Update Asset Info.
          • Invoke Script.
          • Sponsor Fee.

          Обратите внимание: Библиотека Waves-PHP SDK не поддерживает транзакцию Exchange.

          # Issue

          О транзакции Issue.

          В директории проекта:

          1. Замените содержимое файла waves.php следующим блоком кода:
            <?php
            
            require_once __DIR__ . '/vendor/autoload.php';
            
            // Необходимые импорты.
            use Waves\Account\PrivateKey;
            use Waves\API\Node;
            use Waves\Transactions\Amount;
            use Waves\Transactions\IssueTransaction;
            use Waves\Model\ChainId;
            use Waves\Model\Base64String;
            
            // Временно скрыть deprecated-предупреждения.
            error_reporting(E_ALL & ~E_DEPRECATED);
            
            // Укажите сид-фразу вашего аккаунта.
            $seedPhrase = 'УКАЖИТЕ ВАШУ СИД-ФРАЗУ';
            
            // Генерация приватного ключа из сид-фразы.
            $privateKey = PrivateKey::fromSeed($seedPhrase);
            
            /* 
             * Укажите ID сети:
             * - Mainnet:  `ChainId::MAINNET()`
             * - Testnet:  `ChainId::TESTNET()`
             * - Stagenet: `ChainId::STAGENET()`
             */
            $networkChainId = ChainId::TESTNET();
            
            /*
             * Укажите ссылку сети ноды:
             * - Mainnet: 'https://nodes.wavesnodes.com/'
             * - Testnet: 'https://nodes-testnet.wavesnodes.com/'
             * - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
             */
            $node = new Node('https://nodes-testnet.wavesnodes.com', $networkChainId);
            
            // Укажите Ride-скрипт ассета.
            $scriptSource = 
                "{-# STDLIB_VERSION 6 #-}\n" .
                "{-# CONTENT_TYPE EXPRESSION #-}\n" .
                "{-# SCRIPT_TYPE ASSET #-}\n\n" .
                "func trueReturner() = {\n" .
                "    true\n" .
                "}\n\n" .
                "trueReturner()";
            
            // Компиляция Ride-скрипта.
            $compiled = $node->compileScript($scriptSource);
            
            // Конвертация скомпилированного скрипта в Base64-строку.
            $scriptBase64 = $compiled->script();
            
            // Создание транзакции Issue.
            $issueTx = IssueTransaction::build(
                $privateKey->publicKey(),                      // Публичный ключ отправителя транзакции.
                'Наименование',                                // Наименование.
                100000000,                                     // Количество в наименьшей единице.
                8,                                             // Знаков после запятой.
                true,                                          // Флаг перевыпускаемости ассета.
                'Описание токена'                              // Описание.
            )
                ->setFee(Amount::of(100000000))                // Комиссия за транзакцию: 1 WAVES.
                ->setChainId($networkChainId)                  // ID сети.
                ->setScript($scriptBase64)                     // Скрипт ассета. Удалите данную строку для выпуска ассета без скрипта.
                ->setTimestamp(round(microtime(true) * 1000)); // Временная метка.
            
            // Подпись транзакции приватным ключом.
            $issueTxSigned = $issueTx->addProof($privateKey);
            
            // Отправка транзакции на ноду.
            $issueTxBroadcasted = $node->broadcast($issueTxSigned);
            
            // Ожидание появления транзакции в блокчейне.
            sleep(5);
            
            // Ожидание подтверждения транзакции.
            $issueTxConfirmed = $node->waitForTransaction($issueTxBroadcasted->id());
            
            // Получение JSON-данных о транзакции от ноды.
            function fetchTransactionJson(string $txId): ?array {
                $url = "https://nodes-testnet.wavesnodes.com/transactions/info/" . $txId;
                $response = file_get_contents($url);
                if ($response === false) return null;
                return json_decode($response, true);
            }
            
            $transactionJson = fetchTransactionJson($issueTxConfirmed->id()->toString());
            
            // Вывод результатов.
            echo "ID транзакции: " . $issueTxConfirmed->id()->toString() . PHP_EOL;
            echo "JSON-данные транзакции: " . json_encode($transactionJson, JSON_PRETTY_PRINT) . PHP_EOL;
            
          2. Запустите файл waves.php:
            php waves.php
            

          # Reissue

          О транзакции Reissue.

          В директории проекта:

          1. Замените содержимое файла waves.php следующим блоком кода:
            <?php
            
            require_once __DIR__ . '/vendor/autoload.php';
            
            // Необходимые импорты.
            use Waves\Account\PrivateKey;
            use Waves\API\Node;
            use Waves\Transactions\Amount;
            use Waves\Transactions\ReissueTransaction;
            use Waves\Model\ChainId;
            use Waves\Model\AssetId;
            
            // Временно скрыть deprecated-предупреждения.
            error_reporting(E_ALL & ~E_DEPRECATED);
            
            // Укажите сид-фразу вашего аккаунта.
            $seedPhrase = 'УКАЖИТЕ ВАШУ СИД-ФРАЗУ';
            
            // Генерация приватного ключа из сид-фразы.
            $privateKey = PrivateKey::fromSeed($seedPhrase);
            
            /* 
             * Укажите ID сети:
             * - Mainnet:  `ChainId::MAINNET()`
             * - Testnet:  `ChainId::TESTNET()`
             * - Stagenet: `ChainId::STAGENET()`
             */
            $networkChainId = ChainId::TESTNET();
            
            /*
             * Укажите ссылку сети ноды:
             * - Mainnet: 'https://nodes.wavesnodes.com/'
             * - Testnet: 'https://nodes-testnet.wavesnodes.com/'
             * - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
             */
            $node = new Node('https://nodes-testnet.wavesnodes.com', $networkChainId);
            
            // Укажите ID ассета.
            $assetId = AssetId::fromString('УКАЖИТЕ ID АССЕТА');
            
            // Создание объекта с ID объекта и его количеством.
            $amount = Amount::of(100000000, $assetId); // `100000000` для `1.00000000` токена.
            
            // Создание транзакции Reissue.
            $reissueTx = ReissueTransaction::build(
                $privateKey->publicKey(),                      // Публичный ключ отправителя транзакции.
                $amount,                                       // Количество токена для перевыпуска.
                true                                           // Флаг перевыпускаемости ассета.
            )
                ->setFee(Amount::of(100000000))                // Комиссия за транзакцию: 1 WAVES.
                ->setChainId($networkChainId)                  // ID сети.
                ->setTimestamp(round(microtime(true) * 1000)); // Временная метка.
            
            // Подпись транзакции приватным ключом.
            $reissueTxSigned = $reissueTx->addProof($privateKey);
            
            // Отправка транзакции на ноду.
            $reissueTxBroadcasted = $node->broadcast($reissueTxSigned);
            
            // Ожидание появления транзакции в блокчейне.
            sleep(5);
            
            // Ожидание подтверждения транзакции.
            $reissueTxConfirmed = $node->waitForTransaction($reissueTxBroadcasted->id());
            
            // Получение JSON-данных о транзакции от ноды.
            function fetchTransactionJson(string $txId): ?array {
                $url = "https://nodes-testnet.wavesnodes.com/transactions/info/" . $txId;
                $response = file_get_contents($url);
                if ($response === false) return null;
                return json_decode($response, true);
            }
            
            $transactionJson = fetchTransactionJson($reissueTxConfirmed->id()->toString());
            
            // Вывод результатов.
            echo "ID транзакции: " . $reissueTxConfirmed->id()->toString() . PHP_EOL;
            echo "JSON-данные транзакции: " . json_encode($transactionJson, JSON_PRETTY_PRINT) . PHP_EOL;
            
          2. Запустите файл waves.php:
            php waves.php
            

          # Burn

          О транзакции Burn.

          В директории проекта:

          1. Замените содержимое файла waves.php следующим блоком кода:
            <?php
            
            require_once __DIR__ . '/vendor/autoload.php';
            
            // Необходимые импорты.
            use Waves\Account\PrivateKey;
            use Waves\API\Node;
            use Waves\Transactions\Amount;
            use Waves\Transactions\BurnTransaction;
            use Waves\Model\ChainId;
            use Waves\Model\AssetId;
            
            // Временно скрыть deprecated-предупреждения.
            error_reporting(E_ALL & ~E_DEPRECATED);
            
            // Укажите сид-фразу вашего аккаунта.
            $seedPhrase = 'УКАЖИТЕ ВАШУ СИД-ФРАЗУ';
            
            // Генерация приватного ключа из сид-фразы.
            $privateKey = PrivateKey::fromSeed($seedPhrase);
            
            /* 
             * Укажите ID сети:
             * - Mainnet:  `ChainId::MAINNET()`
             * - Testnet:  `ChainId::TESTNET()`
             * - Stagenet: `ChainId::STAGENET()`
             */
            $networkChainId = ChainId::TESTNET();
            
            /*
             * Укажите ссылку сети ноды:
             * - Mainnet: 'https://nodes.wavesnodes.com/'
             * - Testnet: 'https://nodes-testnet.wavesnodes.com/'
             * - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
             */
            $node = new Node('https://nodes-testnet.wavesnodes.com', $networkChainId);
            
            // Укажите ID ассета.
            $assetId = AssetId::fromString('УКАЖИТЕ ID АССЕТА');
            
            // Создание объекта с ID объекта и его количеством.
            $amount = Amount::of(50000000, $assetId); // `50000000` для `0.50000000` токенов.
            
            // Создание транзакции Burn.
            $burnTx = BurnTransaction::build(
                $privateKey->publicKey(),                      // Публичный ключ отправителя транзакции.
                $amount                                        // Количество сжигаемого токена.
            )
                ->setFee(Amount::of(100000000))                // Комиссия за транзакцию: 1 WAVES.
                ->setChainId($networkChainId)                  // ID сети.
                ->setTimestamp(round(microtime(true) * 1000)); // Временная метка.
            
            // Подпись транзакции приватным ключом.
            $burnTxSigned = $burnTx->addProof($privateKey);
            
            // Отправка транзакции на ноду.
            $burnTxBroadcasted = $node->broadcast($burnTxSigned);
            
            // Ожидание появления транзакции в блокчейне.
            sleep(5);
            
            // Ожидание подтверждения транзакции.
            $burnTxConfirmed = $node->waitForTransaction($burnTxBroadcasted->id());
            
            // Получение JSON-данных о транзакции от ноды.
            function fetchTransactionJson(string $txId): ?array {
                $url = "https://nodes-testnet.wavesnodes.com/transactions/info/" . $txId;
                $response = file_get_contents($url);
                if ($response === false) return null;
                return json_decode($response, true);
            }
            
            $transactionJson = fetchTransactionJson($burnTxConfirmed->id()->toString());
            
            // Вывод результатов.
            echo "ID транзакции: " . $burnTxConfirmed->id()->toString() . PHP_EOL;
            echo "JSON-данные транзакции: " . json_encode($transactionJson, JSON_PRETTY_PRINT) . PHP_EOL;
            
          2. Запустите файл waves.php:
            php waves.php
            

          # Transfer

          О транзакции Transfer.

          В директории проекта:

          1. Замените содержимое файла waves.php следующим блоком кода:
            <?php
            
            require_once __DIR__ . '/vendor/autoload.php';
            
            // Необходимые импорты.
            use Waves\Account\PrivateKey;
            use Waves\API\Node;
            use Waves\Transactions\Amount;
            use Waves\Transactions\TransferTransaction;
            use Waves\Transactions\Recipient;
            use Waves\Model\ChainId;
            use Waves\Model\AssetId;
            use Waves\Common\Base58String;
            
            // Временно скрыть deprecated-предупреждения.
            error_reporting(E_ALL & ~E_DEPRECATED);
            
            // Укажите сид-фразу вашего аккаунта.
            $seedPhrase = 'УКАЖИТЕ ВАШУ СИД-ФРАЗУ';
            
            // Генерация приватного ключа из сид-фразы.
            $privateKey = PrivateKey::fromSeed($seedPhrase);
            
            /* 
             * Укажите ID сети:
             * - Mainnet:  `ChainId::MAINNET()`
             * - Testnet:  `ChainId::TESTNET()`
             * - Stagenet: `ChainId::STAGENET()`
             */
            $networkChainId = ChainId::TESTNET();
            
            /*
             * Укажите ссылку сети ноды:
             * - Mainnet: 'https://nodes.wavesnodes.com/'
             * - Testnet: 'https://nodes-testnet.wavesnodes.com/'
             * - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
             */
            $node = new Node('https://nodes-testnet.wavesnodes.com', $networkChainId);
            
            /* Укажите ассет для трансфера:
             * - Введите ID ассета;
             * - Или используйте `AssetId::WAVES()` для WAVES.
             */
            $assetId = AssetId::fromString('УКАЖИТЕ ID АССЕТА');
            
            // Укажите адрес получателя.
            $recipient = Recipient::fromAddressOrAlias('УКАЖИТЕ АДРЕС');
            
            // Укажите сумму трансфера.
            $amount = Amount::of(200000, $assetId); // Пример: `200000` за `0.002` WAVES.
            
            // Введите текст приложения или `null`.
            $attachment = null; // Base58String::fromString('Примео base58-строки');
            
            // Создание транзакции Transfer.
            $transferTx = TransferTransaction::build(
                $privateKey->publicKey(),                       // Публичный ключ отправителя транзакции.
                $recipient,                                     // Адрес получателя.
                $amount,                                        // Количество.
                $attachment                                     // Приложения.
            )
                ->setChainId($networkChainId)                   // ID сети.
                ->setFee(Amount::of(100000))                    // Комиссия за транзакцию: 0.001 WAVES.
                ->setTimestamp(round(microtime(true) * 1000));  // Временная метка.
            
            // Подпись транзакции приватным ключом.
            $transferTxSigned = $transferTx->addProof($privateKey);
            
            // Отправка транзакции на ноду.
            $transferTxBroadcasted = $node->broadcast($transferTxSigned);
            
            // Ожидание появления транзакции в блокчейне.
            sleep(5);
            
            // Ожидание подтверждения транзакции.
            $transferTxConfirmed = $node->waitForTransaction($transferTxBroadcasted->id());
            
            // Получение JSON-данных о транзакции от ноды.
            function fetchTransactionJson(string $txId): ?array {
                $url = "https://nodes-testnet.wavesnodes.com/transactions/info/" . $txId;
                $response = file_get_contents($url);
                if ($response === false) return null;
                return json_decode($response, true);
            }
            
            $transactionJson = fetchTransactionJson($transferTxConfirmed->id()->toString());
            
            // Вывод результатов.
            echo "ID транзакции: " . $transferTxConfirmed->id()->toString() . PHP_EOL;
            echo "JSON-данные транзакции: " . json_encode($transactionJson, JSON_PRETTY_PRINT) . PHP_EOL;
            
          2. Запустите файл waves.php:
            php waves.php
            

          # Mass Transfer

          О транзакции Mass Transfer.

          В директории проекта:

          1. Замените содержимое файла waves.php следующим блоком кода:
            <?php
            
            require_once __DIR__ . '/vendor/autoload.php';
            
            // Необходимые импорты.
            use Waves\Account\PrivateKey;
            use Waves\Account\Address;
            use Waves\API\Node;
            use Waves\Transactions\Amount;
            use Waves\Transactions\MassTransferTransaction;
            use Waves\Transactions\Recipient;
            use Waves\Model\ChainId;
            use Waves\Model\AssetId;
            use Waves\Transactions\Mass\Transfer;
            
            // Временно скрыть deprecated-предупреждения.
            error_reporting(E_ALL & ~E_DEPRECATED);
            
            // Укажите сид-фразу вашего аккаунта.
            $seedPhrase = 'УКАЖИТЕ ВАШУ СИД-ФРАЗУ';
            
            // Генерация приватного ключа из сид-фразы.
            $privateKey = PrivateKey::fromSeed($seedPhrase);
            
            /* 
             * Укажите ID сети:
             * - Mainnet:  `ChainId::MAINNET()`
             * - Testnet:  `ChainId::TESTNET()`
             * - Stagenet: `ChainId::STAGENET()`
             */
            $networkChainId = ChainId::TESTNET();
            
            /*
             * Укажите ссылку на ноду:
             * - Mainnet: "https://nodes.wavesnodes.com/"
             * - Testnet: "https://nodes-testnet.wavesnodes.com/"
             * - Stagenet: "https://nodes-stagenet.wavesnodes.com/"
             */
            $node = new Node('https://nodes-testnet.wavesnodes.com', $networkChainId);
            
            /* Укажите ассет для трансфера:
             * - Введите ID ассета;
             * - Или используйте `AssetId::WAVES()` для WAVES.
             */
            $assetId = AssetId::fromString('УКАЖИТЕ ID АССЕТА');
            
            // Создание массива данных трансферов.
            $transfers = [
                new Transfer(
                    Recipient::fromAddressOrAlias('УКАЖИТЕ АДРЕС ПЕРВОГО ПОЛУЧАТЕЛЯ'),
                    10000000 // Количество в наименьшей единице: 0.1 токена.
                ),
                new Transfer(
                    Recipient::fromAddressOrAlias('УКАЖИТЕ АДРЕС ВТОРОГО ПОЛУЧАТЕЛЯ'),
                    20000000 // Количество в наименьшей единице: 0.2 токена.
                ),
            ];
            
            // Создание транзакции Mass Transfer.
            $massTransferTx = MassTransferTransaction::build(
                $privateKey->publicKey(),                      // Публичный ключ отправителя транзакции.
                $assetId,                                      // ID ассета.
                $transfers                                     // Массив с деталями трансферов.
            )
                ->setChainId($networkChainId)                  // ID сети.
                ->setFee(Amount::of(200000))                   // Комиссия за транзакцию: 0.002 WAVES.
                ->setTimestamp(round(microtime(true) * 1000)); // Временная метка.
            
            // Подпись транзакции приватным ключом.
            $massTransferTxSigned = $massTransferTx->addProof($privateKey);
            
            // Отправка транзакции на ноду.
            $massTransferTxBroadcasted = $node->broadcast($massTransferTxSigned);
            
            // Ожидание появления транзакции в блокчейне.
            sleep(5);
            
            // Ожидание подтверждения транзакции.
            $massTransferTxConfirmed = $node->waitForTransaction($massTransferTxBroadcasted->id());
            
            // Получение JSON-данных о транзакции от ноды.
            function fetchTransactionJson(string $txId): ?array {
                $url = "https://nodes-testnet.wavesnodes.com/transactions/info/" . $txId;
                $response = file_get_contents($url);
                if ($response === false) return null;
                return json_decode($response, true);
            }
            
            $transactionJson = fetchTransactionJson($massTransferTxConfirmed->id()->toString());
            
            // Вывод результатов.
            echo "ID транзакции: " . $massTransferTxConfirmed->id()->toString() . PHP_EOL;
            echo "JSON-данные транзакции: " . json_encode($transactionJson, JSON_PRETTY_PRINT) . PHP_EOL;
            
          2. Запустите файл waves.php:
            php waves.php
            

          # Lease

          О транзакции Lease.

          В директории проекта:

          1. Замените содержимое файла waves.php следующим блоком кода:
            <?php
            
            require_once __DIR__ . '/vendor/autoload.php';
            
            // Необходимые импорты.
            use Waves\Account\PrivateKey;
            use Waves\API\Node;
            use Waves\Transactions\Recipient;
            use Waves\Transactions\LeaseTransaction;
            use Waves\Model\ChainId;
            use Waves\Transactions\Amount;
            
            // Временно скрыть deprecated-предупреждения.
            error_reporting(E_ALL & ~E_DEPRECATED);
            
            // Укажите сид-фразу вашего аккаунта.
            $seedPhrase = 'УКАЖИТЕ ВАШУ СИД-ФРАЗУ';
            
            // Генерация приватного ключа из сид-фразы.
            $privateKey = PrivateKey::fromSeed($seedPhrase);
            
            /* 
             * Укажите ID сети:
             * - Mainnet:  `ChainId::MAINNET()`
             * - Testnet:  `ChainId::TESTNET()`
             * - Stagenet: `ChainId::STAGENET()`
             */
            $networkChainId = ChainId::TESTNET();
            
            /*
             * Укажите ссылку сети ноды:
             * - Mainnet: 'https://nodes.wavesnodes.com/'
             * - Testnet: 'https://nodes-testnet.wavesnodes.com/'
             * - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
             */
            $node = new Node('https://nodes-testnet.wavesnodes.com', $networkChainId);
            
            // Укажите адрес получателя лизинга.
            $recipient = Recipient::fromAddressOrAlias('УКАЖИТЕ АДРЕС');
            
            // Укажите сумму лизинга.
            $leaseAmount = 100000000; // Пример: `100000000` за 1 WAVES.
            
            // Создание транзакции Lease.
            $leaseTx = LeaseTransaction::build(
                $privateKey->publicKey(),                      // Публичный ключ отправителя транзакции.
                $recipient,                                    // Адрес получателя.
                $leaseAmount                                   // Сумма.
            )
                ->setChainId($networkChainId)                  // ID сети.
                ->setFee(Amount::of(100000))                   // Комиссия: 0.001 WAVES.
                ->setTimestamp(round(microtime(true) * 1000)); // Временная метка.
            
            // Подпись транзакции приватным ключом.
            $leaseTxSigned = $leaseTx->addProof($privateKey);
            
            // Отправка транзакции на ноду.
            $leaseTxBroadcasted = $node->broadcast($leaseTxSigned);
            
            // Ожидание появления транзакции в блокчейне.
            sleep(5);
            
            // Ожидание подтверждения транзакции.
            $leaseTxConfirmed = $node->waitForTransaction($leaseTxBroadcasted->id());
            
            // Получение JSON-данных о транзакции от ноды.
            function fetchTransactionJson(string $txId): ?array {
                $url = "https://nodes-testnet.wavesnodes.com/transactions/info/" . $txId;
                $response = file_get_contents($url);
                if ($response === false) return null;
                return json_decode($response, true);
            }
            
            $transactionJson = fetchTransactionJson($leaseTxConfirmed->id()->toString());
            
            // Вывод результатов.
            echo "ID транзакции: " . $leaseTxConfirmed->id()->toString() . PHP_EOL;
            echo "JSON-данные транзакции: " . json_encode($transactionJson, JSON_PRETTY_PRINT) . PHP_EOL;
            
          2. Запустите файл waves.php:
            php waves.php
            

          # Lease Cancel

          О транзакции Lease Cancel.

          В директории проекта:

          1. Замените содержимое файла waves.php следующим блоком кода:
            <?php
            
            require_once __DIR__ . '/vendor/autoload.php';
            
            // Необходимые импорты.
            use Waves\Account\PrivateKey;
            use Waves\API\Node;
            use Waves\Transactions\LeaseCancelTransaction;
            use Waves\Model\ChainId;
            use Waves\Model\Id;
            use Waves\Transactions\Amount;
            
            // Временно скрыть deprecated-предупреждения.
            error_reporting(E_ALL & ~E_DEPRECATED);
            
            // Укажите сид-фразу вашего аккаунта.
            $seedPhrase = 'УКАЖИТЕ ВАШУ СИД-ФРАЗУ';
            
            // Генерация приватного ключа из сид-фразы.
            $privateKey = PrivateKey::fromSeed($seedPhrase);
            
            /* 
             * Укажите ID сети:
             * - Mainnet:  `ChainId::MAINNET()`
             * - Testnet:  `ChainId::TESTNET()`
             * - Stagenet: `ChainId::STAGENET()`
             */
            $networkChainId = ChainId::TESTNET();
            
            /*
             * Укажите ссылку сети ноды:
             * - Mainnet: 'https://nodes.wavesnodes.com/'
             * - Testnet: 'https://nodes-testnet.wavesnodes.com/'
             * - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
             */
            $node = new Node('https://nodes-testnet.wavesnodes.com', $networkChainId);
            
            // Укажите ID Lease-транзакции для отмены.
            $leaseTxIdToCancel = Id::fromString('УКАЖИТЕ ID LEASE-ТРАНЗАКЦИИ');
            
            // Создание транзакции Lease Cancel.
            $leaseCancelTx = LeaseCancelTransaction::build(
                $privateKey->publicKey(),                      // Публичный ключ отправителя транзакции.
                $leaseTxIdToCancel                             // ID Lease-транзакции.
            )
                ->setChainId($networkChainId)                  // ID сети.
                ->setFee(Amount::of(100000))                   // Комиссия: 0.001 WAVES.
                ->setTimestamp(round(microtime(true) * 1000)); // Временная метка.
            
            // Подпись транзакции приватным ключом.
            $leaseCancelTxSigned = $leaseCancelTx->addProof($privateKey);
            
            // Отправка транзакции на ноду.
            $leaseCancelTxBroadcasted = $node->broadcast($leaseCancelTxSigned);
            
            // Ожидание появления транзакции в блокчейне.
            sleep(5);
            
            // Ожидание подтверждения транзакции.
            $leaseCancelTxConfirmed = $node->waitForTransaction($leaseCancelTxBroadcasted->id());
            
            // Получение JSON-данных о транзакции от ноды.
            function fetchTransactionJson(string $txId): ?array {
                $url = "https://nodes-testnet.wavesnodes.com/transactions/info/" . $txId;
                $response = file_get_contents($url);
                if ($response === false) return null;
                return json_decode($response, true);
            }
            
            $transactionJson = fetchTransactionJson($leaseCancelTxConfirmed->id()->toString());
            
            // Вывод результатов.
            echo "ID транзакции: " . $leaseCancelTxConfirmed->id()->toString() . PHP_EOL;
            echo "JSON-данные транзакции: " . json_encode($transactionJson, JSON_PRETTY_PRINT) . PHP_EOL;
                ```
            
          2. Запустите файл waves.php:
            php waves.php
            

          # Create Alias

          О транзакции Create Alias.

          В директории проекта:

          1. Замените содержимое файла waves.php следующим блоком кода:
            <?php
            
            require_once __DIR__ . '/vendor/autoload.php';
            
            // Необходимые импорты.
            use Waves\Account\PrivateKey;
            use Waves\API\Node;
            use Waves\Transactions\CreateAliasTransaction;
            use Waves\Model\ChainId;
            use Waves\Model\Alias;
            use Waves\Transactions\Amount;
            
            // Временно скрыть deprecated-предупреждения.
            error_reporting(E_ALL & ~E_DEPRECATED);
            
            // Укажите сид-фразу вашего аккаунта.
            $seedPhrase = 'УКАЖИТЕ ВАШУ СИД-ФРАЗУ';
            
            // Генерация приватного ключа из сид-фразы.
            $privateKey = PrivateKey::fromSeed($seedPhrase);
            
            /* 
             * Укажите ID сети:
             * - Mainnet:  `ChainId::MAINNET()`
             * - Testnet:  `ChainId::TESTNET()`
             * - Stagenet: `ChainId::STAGENET()`
             */
            $networkChainId = ChainId::TESTNET();
            
            /*
             * Укажите ссылку сети ноды:
             * - Mainnet: 'https://nodes.wavesnodes.com/'
             * - Testnet: 'https://nodes-testnet.wavesnodes.com/'
             * - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
             */
            $node = new Node('https://nodes-testnet.wavesnodes.com', $networkChainId);
            
            // Создание псевдонима.
            $aliasName = 'УКАЖИТЕ ВАШ ПСЕВДОНИМ';
            $alias = Alias::fromString($aliasName);
            
            // Создание транзакции Create Alias.
            $createAliasTx = CreateAliasTransaction::build(
                $privateKey->publicKey(),                      // Публичный ключ отправителя транзакции.
                $alias                                         // Псевдоним.
            )
                ->setChainId($networkChainId)                  // ID сети.
                ->setFee(Amount::of(100000))                   // Комиссия: 0.001 WAVES.
                ->setTimestamp(round(microtime(true) * 1000)); // Временная метка.
            
            // Подпись транзакции приватным ключом.
            $createAliasTxSigned = $createAliasTx->addProof($privateKey);
            
            // Отправка транзакции на ноду.
            $createAliasTxBroadcasted = $node->broadcast($createAliasTxSigned);
            
            // Ожидание появления транзакции в блокчейне.
            sleep(5);
            
            // Ожидание подтверждения транзакции.
            $createAliasTxConfirmed = $node->waitForTransaction($createAliasTxBroadcasted->id());
            
            // Получение JSON-данных о транзакции от ноды.
            function fetchTransactionJson(string $txId): ?array {
                $url = "https://nodes-testnet.wavesnodes.com/transactions/info/" . $txId;
                $response = file_get_contents($url);
                if ($response === false) return null;
                return json_decode($response, true);
            }
            
            $transactionJson = fetchTransactionJson($createAliasTxConfirmed->id()->toString());
            
            // Вывод результатов.
            echo "ID транзакции: " . $createAliasTxConfirmed->id()->toString() . PHP_EOL;
            echo "JSON-данные транзакции: " . json_encode($transactionJson, JSON_PRETTY_PRINT) . PHP_EOL;
            
          2. Запустите файл waves.php:
            php waves.php
            

          # Data

          О транзакции Data.

          В директории проекта:

          1. Замените содержимое файла waves.php следующим блоком кода:
            <?php
            
            require_once __DIR__ . '/vendor/autoload.php';
            
            // Необходимые импорты.
            use Waves\Account\PrivateKey;
            use Waves\API\Node;
            use Waves\Transactions\Amount;
            use Waves\Transactions\DataTransaction;
            use Waves\Model\ChainId;
            use Waves\Model\DataEntry;
            use Waves\Model\EntryType;
            
            // Временно скрыть deprecated-предупреждения.
            error_reporting(E_ALL & ~E_DEPRECATED);
            
            // Укажите сид-фразу вашего аккаунта.
            $seedPhrase = 'УКАЖИТЕ ВАШУ СИД-ФРАЗУ';
            
            // Генерация приватного ключа из сид-фразы.
            $privateKey = PrivateKey::fromSeed($seedPhrase);
            
            /* 
             * Укажите ID сети:
             * - Mainnet:  `ChainId::MAINNET()`
             * - Testnet:  `ChainId::TESTNET()`
             * - Stagenet: `ChainId::STAGENET()`
             */
            $networkChainId = ChainId::TESTNET();
            
            /*
             * Укажите ссылку сети ноды:
             * - Mainnet: 'https://nodes.wavesnodes.com/'
             * - Testnet: 'https://nodes-testnet.wavesnodes.com/'
             * - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
             */
            $node = new Node('https://nodes-testnet.wavesnodes.com', $networkChainId);
            
            // Укажите данные для сохранения в хранилище аккаунта.
            $data = [
                DataEntry::build('key_string', EntryType::STRING, 'value string'),
                DataEntry::build('key_boolean', EntryType::BOOLEAN, true),
                DataEntry::build('key_integer', EntryType::INTEGER, 42),
                DataEntry::build('key_binary', EntryType::BINARY, base64_encode('Hello Binary')),
                DataEntry::build('key_delete', EntryType::DELETE)
            ]; // Пример значений.
            
            // Создание транзакции Data.
            $dataTx = DataTransaction::build(
                $privateKey->publicKey(),                      // Публичный ключ отправителя транзакции.
                $data                                          // Массив данных.
            )
                ->setFee(Amount::of(100000))                   // Комиссия за транзакцию: 0.001 WAVES.
                ->setChainId($networkChainId)                  // ID сети.
                ->setTimestamp(round(microtime(true) * 1000)); // Временная метка.
            
            // Подпись транзакции приватным ключом.
            $dataTxSigned = $dataTx->addProof($privateKey);
            
            // Отправка транзакции на ноду.
            $dataTxBroadcasted = $node->broadcast($dataTxSigned);
            
            // Ожидание появления транзакции в блокчейне.
            sleep(5);
            
            // Ожидание подтверждения транзакции.
            $dataTxConfirmed = $node->waitForTransaction($dataTxBroadcasted->id());
            
            // Получение JSON-данных о транзакции от ноды.
            function fetchTransactionJson(string $txId): ?array {
                $url = "https://nodes-testnet.wavesnodes.com/transactions/info/" . $txId;
                $response = file_get_contents($url);
                if ($response === false) return null;
                return json_decode($response, true);
            }
            
            $transactionJson = fetchTransactionJson($dataTxConfirmed->id()->toString());
            
            // Вывод результатов.
            echo "ID транзакции: " . $dataTxConfirmed->id()->toString() . PHP_EOL;
            echo "JSON-данные транзакции: " . json_encode($transactionJson, JSON_PRETTY_PRINT) . PHP_EOL;
            
          2. Запустите файл waves.php:
            php waves.php
            

          # Set Script

          О транзакции Set Script.

          В директории проекта:

          1. Замените содержимое файла waves.php следующим блоком кода:
            <?php
            
            require_once __DIR__ . '/vendor/autoload.php';
            
            // Необходимые импорты.
            use Waves\Account\PrivateKey;
            use Waves\API\Node;
            use Waves\Transactions\Amount;
            use Waves\Transactions\SetScriptTransaction;
            use Waves\Model\ChainId;
            
            // Временно скрыть deprecated-предупреждения.
            error_reporting(E_ALL & ~E_DEPRECATED);
            
            // Укажите сид-фразу вашего аккаунта.
            $seedPhrase = 'УКАЖИТЕ ВАШУ СИД-ФРАЗУ';
            
            // Генерация приватного ключа из сид-фразы.
            $privateKey = PrivateKey::fromSeed($seedPhrase);
            
            /* 
             * Укажите ID сети:
             * - Mainnet:  `ChainId::MAINNET()`
             * - Testnet:  `ChainId::TESTNET()`
             * - Stagenet: `ChainId::STAGENET()`
             */
            $networkChainId = ChainId::TESTNET();
            
            /*
             * Укажите ссылку сети ноды:
             * - Mainnet: 'https://nodes.wavesnodes.com/'
             * - Testnet: 'https://nodes-testnet.wavesnodes.com/'
             * - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
             */
            $node = new Node('https://nodes-testnet.wavesnodes.com', $networkChainId);
            
            // Укажите Ride-скрипт.
            $scriptSource = 
            "{-# STDLIB_VERSION 6 #-}\n" .
            "{-# CONTENT_TYPE EXPRESSION #-}\n" .
            "{-# SCRIPT_TYPE ACCOUNT #-}\n\n" .
            "true";
            
            // Компиляция Ride-скрипта.
            $compiled = $node->compileScript($scriptSource);
            
            // Конвертация скомпилированного скрипта в Base64-строку.
            $scriptBase64 = $compiled->script();
            
            // Создание a Set Script Transaction.
            $setScriptTx = (new SetScriptTransaction())
                ->setSender($privateKey->publicKey())              // Публичный ключ отправителя транзакции.
                ->setScript($scriptBase64)                         // Скрипт аккаунта. Уберите данную строку, если хотите удалить скрипт аккаунта.
                ->setType(SetScriptTransaction::TYPE)              // Тип транзакции.
                ->setVersion(SetScriptTransaction::LATEST_VERSION) // Версия транзакции.
                ->setFee(Amount::of(1400000))                      // Минимальная комиссия за транзакцию.
                ->setChainId($networkChainId)                      // ID сети.
                ->setTimestamp(round(microtime(true) * 1000));     // Временная метка.
            
            // Подпись транзакции приватным ключом.
            $setScriptTxSigned = $setScriptTx->addProof($privateKey);
            
            // Отправка транзакции на ноду.
            $setScriptTxBroadcasted = $node->broadcast($setScriptTxSigned);
            
            // Ожидание появления транзакции в блокчейне.
            sleep(5);
            
            // Ожидание подтверждения транзакции.
            $setScriptTxConfirmed = $node->waitForTransaction($setScriptTxBroadcasted->id());
            
            // Получение JSON-данных о транзакции от ноды.
            function fetchTransactionJson(string $txId): ?array {
                $url = "https://nodes-testnet.wavesnodes.com/transactions/info/" . $txId;
                $response = file_get_contents($url);
                if ($response === false) return null;
                return json_decode($response, true);
            }
            
            $transactionJson = fetchTransactionJson($setScriptTxConfirmed->id()->toString());
            
            // Вывод результатов.
            echo "ID транзакции: " . $setScriptTxConfirmed->id()->toString() . PHP_EOL;
            echo "JSON-данные транзакции: " . json_encode($transactionJson, JSON_PRETTY_PRINT) . PHP_EOL;
            
          2. Запустите файл waves.php:
            php waves.php
            

          # Set Asset Script

          О транзакции Set Asset Script.

          Обратите внимание: Вы можете установить скрипт актива только для тех активов, которые были выпущены с установленным Ride-скриптом .

          В директории проекта:

          1. Замените содержимое файла waves.php следующим блоком кода:
            <?php
            
            require_once __DIR__ . '/vendor/autoload.php';
            
            // Необходимые импорты.
            use Waves\Account\PrivateKey;
            use Waves\API\Node;
            use Waves\Model\ChainId;
            use Waves\Model\Base64String;
            use Waves\Model\AssetId;
            use Waves\Transactions\SetAssetScriptTransaction;
            use Waves\Transactions\Amount;
            
            // Временно скрыть deprecated-предупреждения.
            error_reporting(E_ALL & ~E_DEPRECATED);
            
            // Укажите сид-фразу вашего аккаунта.
            $seedPhrase = 'УКАЖИТЕ ВАШУ СИД-ФРАЗУ';
            
            // Генерация приватного ключа из сид-фразы.
            $privateKey = PrivateKey::fromSeed($seedPhrase);
            
            /* 
             * Укажите ID сети:
             * - Mainnet:  `ChainId::MAINNET()`
             * - Testnet:  `ChainId::TESTNET()`
             * - Stagenet: `ChainId::STAGENET()`
             */
            $networkChainId = ChainId::TESTNET();
            
            /*
             * Укажите ссылку сети ноды:
             * - Mainnet: 'https://nodes.wavesnodes.com/'
             * - Testnet: 'https://nodes-testnet.wavesnodes.com/'
             * - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
             */
            $node = new Node('https://nodes-testnet.wavesnodes.com', $networkChainId);
            
            // Укажите Ride-скрипта ассета.
            $scriptSource =
                "{-# STDLIB_VERSION 6 #-}\n" .
                "{-# CONTENT_TYPE EXPRESSION #-}\n" .
                "{-# SCRIPT_TYPE ASSET #-}\n\n" .
                "true";
            
            // Компиляция Ride-скрипта.
            $compiled = $node->compileScript($scriptSource);
            
            // Конвертация скомпилированного скрипта в Base64-строку.
            $scriptBase64 = $compiled->script();
            
            // Укажите ID ассета.
            $assetId = AssetId::fromString('УКАЖИТЕ ID АССЕТА');
            
            // Создание транзакции Set Asset Script.
            $setAssetScriptTx = SetAssetScriptTransaction::build(
                $privateKey->publicKey(),                      // Публичный ключ отправителя транзакции.
                $assetId,                                      // ID ассета.
                $scriptBase64                                  // Скрипт.
            )
                ->setFee(Amount::of(100000000))                // Комиссия за транзакцию: 1 WAVES.
                ->setChainId($networkChainId)                  // ID сети.
                ->setTimestamp(round(microtime(true) * 1000)); // Временная метка.
            
            // Подпись транзакции приватным ключом.
            $setAssetScriptTxSigned = $setAssetScriptTx->addProof($privateKey);
            
            // Отправка транзакции на ноду.
            $setAssetScriptBroadcasted = $node->broadcast($setAssetScriptTxSigned);
            
            // Ожидание появления транзакции в блокчейне.
            sleep(5);
            
            // Ожидание подтверждения транзакции.
            $setAssetScriptConfirmed = $node->waitForTransaction($setAssetScriptBroadcasted->id());
            
            // Получение JSON-данных о транзакции от ноды.
            function fetchTransactionJson(string $txId): ?array {
                $url = "https://nodes-testnet.wavesnodes.com/transactions/info/" . $txId;
                $response = file_get_contents($url);
                if ($response === false) return null;
                return json_decode($response, true);
            }
            
            $transactionJson = fetchTransactionJson($setAssetScriptConfirmed->id()->toString());
            
            // Вывод результатов.
            echo "ID транзакции: " . $setAssetScriptConfirmed->id()->toString() . PHP_EOL;
            echo "JSON-данные транзакции: " . json_encode($transactionJson, JSON_PRETTY_PRINT) . PHP_EOL;
            
          2. Запустите файл waves.php:
            php waves.php
            

          # Update Asset Info

          О транзакции Update Asset Info.

          В директории проекта:

          1. Замените содержимое файла waves.php следующим блоком кода:
            <?php
            
            require_once __DIR__ . '/vendor/autoload.php';
            
            // Необходимые импорты.
            use Waves\Account\PrivateKey;
            use Waves\API\Node;
            use Waves\Transactions\Amount;
            use Waves\Transactions\UpdateAssetInfoTransaction;
            use Waves\Model\ChainId;
            use Waves\Model\AssetId;
            
            // Временно скрыть deprecated-предупреждения.
            error_reporting(E_ALL & ~E_DEPRECATED);
            
            // Укажите сид-фразу вашего аккаунта.
            $seedPhrase = 'УКАЖИТЕ ВАШУ СИД-ФРАЗУ';
            
            // Генерация приватного ключа из сид-фразы.
            $privateKey = PrivateKey::fromSeed($seedPhrase);
            
            /* 
             * Укажите ID сети:
             * - Mainnet:  `ChainId::MAINNET()`
             * - Testnet:  `ChainId::TESTNET()`
             * - Stagenet: `ChainId::STAGENET()`
             */
            $networkChainId = ChainId::TESTNET();
            
            /*
             * Укажите ссылку сети ноды:
             * - Mainnet: 'https://nodes.wavesnodes.com/'
             * - Testnet: 'https://nodes-testnet.wavesnodes.com/'
             * - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
             */
            $node = new Node('https://nodes-testnet.wavesnodes.com', $networkChainId);
            
            // Укажите ID ассета.
            $assetId = AssetId::fromString('УКАЖИТЕ ID АССЕТА');
            
            // Создание транзакции Update Asset Info.
            $updateTx = UpdateAssetInfoTransaction::build(
                $privateKey->publicKey(),                      // Публичный ключ отправителя транзакции.
                $assetId,                                      // ID ассета.
                'ОбновленноеНаименование',                     // Новое наименование.
                'Обновленное описание'                         // Новое описание.
            )
                ->setFee(Amount::of(100000000))                // Комиссия за транзакцию: 1 WAVES.
                ->setChainId($networkChainId)                  // ID сети.
                ->setTimestamp(round(microtime(true) * 1000)); // Временная метка.
            
            // Подпись транзакции приватным ключом.
            $signedTx = $updateTx->addProof($privateKey);
            
            // Отправка транзакции на ноду.
            $broadcastedTx = $node->broadcast($signedTx);
            
            // Ожидание появления транзакции в блокчейне.
            sleep(5);
            
            // Ожидание подтверждения транзакции.
            $confirmedTx = $node->waitForTransaction($broadcastedTx->id());
            
            // Получение JSON-данных о транзакции от ноды.
            function fetchTransactionJson(string $txId): ?array {
                $url = "https://nodes-testnet.wavesnodes.com/transactions/info/" . $txId;
                $response = file_get_contents($url);
                if ($response === false) return null;
                return json_decode($response, true);
            }
            
            $transactionJson = fetchTransactionJson($confirmedTx->id()->toString());
            
            // Вывод результатов.
            echo "ID транзакции: " . $confirmedTx->id()->toString() . PHP_EOL;
            echo "JSON-данные транзакции: " . json_encode($transactionJson, JSON_PRETTY_PRINT) . PHP_EOL;
            
          2. Запустите файл waves.php:
            php waves.php
            

          # Invoke Script

          О транзакции Invoke Script.

          В директории проекта:

          1. Замените содержимое файла waves.php следующим блоком кода:
            <?php
            
            require_once __DIR__ . '/vendor/autoload.php';
            
            // Необходимые импорты.
            use Waves\Account\PrivateKey;
            use Waves\API\Node;
            use Waves\Transactions\Amount;
            use Waves\Transactions\Invocation\Arg;
            use Waves\Transactions\Invocation\FunctionCall;
            use Waves\Transactions\InvokeScriptTransaction;
            use Waves\Transactions\Recipient;
            use Waves\Common\Value;
            use Waves\Model\ChainId;
            
            // Временно скрыть deprecated-предупреждения.
            error_reporting(E_ALL & ~E_DEPRECATED);
            
            // Укажите сид-фразу вашего аккаунта.
            $seedPhrase = 'УКАЖИТЕ ВАШУ СИД-ФРАЗУ';
            
            // Генерация приватного ключа из сид-фразы.
            $privateKey = PrivateKey::fromSeed($seedPhrase);
            
            /* 
             * Укажите ID сети:
             * - Mainnet:  `ChainId::MAINNET()`
             * - Testnet:  `ChainId::TESTNET()`
             * - Stagenet: `ChainId::STAGENET()`
             */
            $networkChainId = ChainId::TESTNET();
            
            /*
             * Укажите ссылку сети ноды:
             * - Mainnet: 'https://nodes.wavesnodes.com/'
             * - Testnet: 'https://nodes-testnet.wavesnodes.com/'
             * - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
             */
            $node = new Node('https://nodes-testnet.wavesnodes.com', $networkChainId);
            
            // Укажите адрес dApp-приложения.
            $dApp = Recipient::fromAddressOrAlias('УКАЖИТЕ АДРЕС DAPP');
            
            // Укажите параметры вызываемой функции. Пример значений:
            $args = [];
            $args[] = Arg::as(Arg::STRING, Value::as('ExampleString'));
            $args[] = Arg::as(Arg::INTEGER, Value::as(123));
            $args[] = Arg::as(Arg::BOOLEAN, Value::as(true));
            
            // Укажите вызываемую функцию.
            $functionCall = FunctionCall::as('functionName', $args); // Пример значения.
            
            // Массив с платежами при наличии.
            $payments = [];
            
            // Создание транзакции Invoke Script.
            $invokeTx = InvokeScriptTransaction::build(
                $privateKey->publicKey(),                      // Публичный ключ отправителя транзакции.
                $dApp,                                         // Адрес dApp.
                $functionCall,                                 // Вызываемая функция.
                $payments                                      // Прикреплённые платежи.
            )
                ->setFee(Amount::of(500000))                   // Комиссия за транзакцию: 0.005 WAVES.
                ->setChainId($networkChainId)                  // ID сети.
                ->setTimestamp(round(microtime(true) * 1000)); // Временная метка.
            
            // Подпись транзакции приватным ключом.
            $invokeTxSigned = $invokeTx->addProof($privateKey);
            
            // Отправка транзакции на ноду.
            $invokeTxBroadcasted = $node->broadcast($invokeTxSigned);
            
            // Ожидание появления транзакции в блокчейне.
            sleep(5);
            $invokeTxConfirmed = $node->waitForTransaction($invokeTxBroadcasted->id());
            
            // Получение JSON-данных о транзакции от ноды.
            function fetchTransactionJson(string $txId): ?array {
                $url = "https://nodes-testnet.wavesnodes.com/transactions/info/" . $txId;
                $response = file_get_contents($url);
                if ($response === false) return null;
                return json_decode($response, true);
            }
            
            $transactionJson = fetchTransactionJson($invokeTxConfirmed->id()->toString());
            
            // Вывод результатов.
            echo "ID транзакции: " . $invokeTxConfirmed->id()->toString() . PHP_EOL;
            echo "JSON-данные транзакции: " . json_encode($transactionJson, JSON_PRETTY_PRINT) . PHP_EOL;
            
          2. Запустите файл waves.php:
            php waves.php
            

          # Sponsor Fee

          О транзакции Sponsor Fee.

          В директории проекта:

          1. Замените содержимое файла waves.php следующим блоком кода:
            <?php
            
            require_once __DIR__ . '/vendor/autoload.php';
            
            // Необходимые импорты.
            use Waves\Account\PrivateKey;
            use Waves\API\Node;
            use Waves\Transactions\Amount;
            use Waves\Transactions\SponsorFeeTransaction;
            use Waves\Model\ChainId;
            use Waves\Model\AssetId;
            
            // Временно скрыть deprecated-предупреждения.
            error_reporting(E_ALL & ~E_DEPRECATED);
            
            // Укажите сид-фразу вашего аккаунта.
            $seedPhrase = 'УКАЖИТЕ ВАШУ СИД-ФРАЗУ';
            
            // Генерация приватного ключа из сид-фразы.
            $privateKey = PrivateKey::fromSeed($seedPhrase);
            
            /* 
             * Укажите ID сети:
             * - Mainnet:  `ChainId::MAINNET()`
             * - Testnet:  `ChainId::TESTNET()`
             * - Stagenet: `ChainId::STAGENET()`
             */
            $networkChainId = ChainId::TESTNET();
            
            /*
             * Укажите ссылку сети ноды:
             * - Mainnet: 'https://nodes.wavesnodes.com/'
             * - Testnet: 'https://nodes-testnet.wavesnodes.com/'
             * - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
             */
            $node = new Node('https://nodes-testnet.wavesnodes.com', $networkChainId);
            
            // Укажите ID ассета.
            $assetId = AssetId::fromString('УКАЖИТЕ ID АССЕТА');
            
            // Создание транзакции Sponsor Fee.
            $sponsorTx = SponsorFeeTransaction::build(
                $privateKey->publicKey(),                      // Публичный ключ отправителя транзакции.
                $assetId,                                      // ID ассета.
                true                                           // Флаг, указывающий, является ли ассет спонсорским.
            )
                ->setFee(Amount::of(100000))                   // Комиссия: 0.001 WAVES.
                ->setChainId($networkChainId)                  // ID сети.
                ->setTimestamp(round(microtime(true) * 1000)); // Временная метка.
            
            // Подпись транзакции приватным ключом.
            $sponsorTxSigned = $sponsorTx->addProof($privateKey);
            
            // Отправка транзакции на ноду.
            $sponsorTxBroadcasted = $node->broadcast($sponsorTxSigned);
            
            // Ожидание появления транзакции в блокчейне.
            sleep(5);
            
            // Ожидание подтверждения транзакции.
            $sponsorTxConfirmed = $node->waitForTransaction($sponsorTxBroadcasted->id());
            
            // Получение JSON-данных о транзакции от ноды.
            function fetchTransactionJson(string $txId): ?array {
                $url = "https://nodes-testnet.wavesnodes.com/transactions/info/" . $txId;
                $response = file_get_contents($url);
                if ($response === false) return null;
                return json_decode($response, true);
            }
            
            $transactionJson = fetchTransactionJson($sponsorTxConfirmed->id()->toString());
            
            // Вывод результатов.
            echo "ID транзакции: " . $sponsorTxConfirmed->id()->toString() . PHP_EOL;
            echo "JSON-данные транзакции: " . json_encode($transactionJson, JSON_PRETTY_PRINT) . PHP_EOL;
            
          2. Запустите файл waves.php:
            php waves.php
            
          Запуск кода
          Использование криптографических утилит
          Запуск кода
          Использование криптографических утилит