# Отправка транзакций
Убедитесь в выполнении требований для отправки транзакций.
# Требования
- Кошелёк: Создайте кошелёк с помощью 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.
Обратите внимание: Библиотека WavesKit SDK не поддерживает транзакцию Exchange.
# Issue
В директории проекта:
- Замените содержимое файла
waves.php
следующим блоком кода:<?php require_once __DIR__ . '/vendor/autoload.php'; // Необходимый импорт. use deemru\WavesKit; // Временно скрыть deprecated-предупреждения. error_reporting(E_ALL & ~E_DEPRECATED); // Укажите сид-фразу вашего аккаунта. $seedPhrase = 'УКАЖИТЕ ВАШУ СИД-ФРАЗУ'; /* Укажите ID сети: * - Mainnet: 'W' * - Testnet: 'T' */ $network = 'T'; /* * Укажите ссылку сети ноды: * - Mainnet: 'https://nodes.wavesnodes.com/' * - Testnet: 'https://nodes-testnet.wavesnodes.com/' */ $nodeHttp = 'https://nodes-testnet.wavesnodes.com/'; // Инициализация SDK и установка сид-фразы. $wk = new WavesKit($network); $wk->setSeed($seedPhrase); // Укажите Ride-скрипт ассета. $scriptSource = "{-# STDLIB_VERSION 6 #-}\n" . "{-# CONTENT_TYPE EXPRESSION #-}\n" . "{-# SCRIPT_TYPE ASSET #-}\n\n" . "func trueReturner() = {\n" . " true\n" . "}\n\n" . "trueReturner()"; // Компиляция скрипта. $scriptCompilation = $wk->compile( $scriptSource ); $scriptBase64 = $scriptCompilation['script'] ?? null; // Создание Issue-транзакция. $issueTx = $wk->txIssue( 'TokenName', // Наименование. 'Description of the token', // Описание. 333, // Количество в наименьшей единице. Пример: `333` для `0.00000333` токенов. 8, // Знаков после запятой. true, // Флаг перевыпускаемости ассета. $scriptBase64, // Скрипт или `null`. null ); // Подпись транзакции приватным ключом. $issueTxSigned = $wk->txSign($issueTx); // Отправка транзакции на ноду. $issueTxBroadcasted = $wk->txBroadcast($issueTxSigned); // Ожидание появления транзакции в блокчейне. sleep(5); // Получение JSON-данных о транзакции от ноды. function fetchTransactionJson(string $txId, string $nodeHttp): ?array { $url = rtrim($nodeHttp, '/') . '/transactions/info/' . rawurlencode($txId); $opts = [ "http" => [ "method" => "GET", "header" => "Accept: application/json\r\n", "timeout" => 10 ] ]; $context = stream_context_create($opts); $response = @file_get_contents($url, false, $context); if ($response === false) return null; return json_decode($response, true); } $txId = $issueTxBroadcasted['id'] ?? null; if ($txId === null) { echo "Broadcast failed; response:\n"; var_export($issueTxBroadcasted); exit(1); } $transactionJson = fetchTransactionJson($txId, $nodeHttp); // Вывод результатов. echo "ID транзакции: " . $txId . PHP_EOL; echo "JSON-данные транзакции: " . json_encode($transactionJson, JSON_PRETTY_PRINT) . PHP_EOL;
- Запустите файл
waves.php
:php waves.php
# Reissue
В директории проекта:
- Замените содержимое файла
waves.php
следующим блоком кода:<?php require_once __DIR__ . '/vendor/autoload.php'; // Необходимый импорт. use deemru\WavesKit; // Временно скрыть deprecated-предупреждения. error_reporting(E_ALL & ~E_DEPRECATED); // Укажите сид-фразу вашего аккаунта. $seedPhrase = 'УКАЖИТЕ ВАШУ СИД-ФРАЗУ'; /* Укажите ID сети: * - Mainnet: 'W' * - Testnet: 'T' */ $network = 'T'; /* * Укажите ссылку сети ноды: * - Mainnet: 'https://nodes.wavesnodes.com/' * - Testnet: 'https://nodes-testnet.wavesnodes.com/' */ $nodeHttp = 'https://nodes-testnet.wavesnodes.com/'; // Инициализация SDK и установка сид-фразы. $wk = new WavesKit($network); $wk->setSeed($seedPhrase); // Укажите ID ассета для перевыпуска. $assetId = 'УКАЖИТЕ ID АССЕТА'; // Создание Reissue-транзакции. $reissueTx = $wk->txReissue( $assetId, // ID ассета для перевыпуска. 3000, // Количество в наименьшей единице. Пример: `3000` для `30` токенов. true, // Флаг перевыпускаемости ассета. null ); // Подпись транзакции приватным ключом. $reissueTxSigned = $wk->txSign($reissueTx); // Отправка транзакции на ноду. $reissueTxBroadcasted = $wk->txBroadcast($reissueTxSigned); // Ожидание появления транзакции в блокчейне. sleep(5); // Получение JSON-данных о транзакции от ноды. function fetchTransactionJson(string $txId, string $nodeHttp): ?array { $url = rtrim($nodeHttp, '/') . '/transactions/info/' . rawurlencode($txId); $opts = [ "http" => [ "method" => "GET", "header" => "Accept: application/json\r\n", "timeout" => 10 ] ]; $context = stream_context_create($opts); $response = @file_get_contents($url, false, $context); if ($response === false) return null; return json_decode($response, true); } $txId = $reissueTxBroadcasted['id'] ?? null; if ($txId === null) { echo "Broadcast failed; response:\n"; var_export($reissueTxBroadcasted); exit(1); } $transactionJson = fetchTransactionJson($txId, $nodeHttp); // Вывод результатов. echo "ID транзакции: " . $txId . PHP_EOL; echo "JSON-данные транзакции: " . json_encode($transactionJson, JSON_PRETTY_PRINT) . PHP_EOL;
- Запустите файл
waves.php
:php waves.php
# Burn
В директории проекта:
- Замените содержимое файла
waves.php
следующим блоком кода:<?php require_once __DIR__ . '/vendor/autoload.php'; // Необходимый импорт. use deemru\WavesKit; // Временно скрыть deprecated-предупреждения. error_reporting(E_ALL & ~E_DEPRECATED); // Укажите сид-фразу вашего аккаунта. $seedPhrase = 'УКАЖИТЕ ВАШУ СИД-ФРАЗУ'; /* Укажите ID сети: * - Mainnet: 'W' * - Testnet: 'T' */ $network = 'T'; /* * Укажите ссылку сети ноды: * - Mainnet: 'https://nodes.wavesnodes.com/' * - Testnet: 'https://nodes-testnet.wavesnodes.com/' */ $nodeHttp = 'https://nodes-testnet.wavesnodes.com/'; // Инициализация SDK и установка сид-фразы. $wk = new WavesKit($network); $wk->setSeed($seedPhrase); // Укажите ID сжигаемого ассета. $assetId = 'УКАЖИТЕ ID АССЕТА'; // Создание Burn-транзакции. $burnTx = $wk->txBurn( $assetId, // ID сжигаемого ассета. 1000, // Количество в наименьшей единице. Пример: `1000` для `10` токенов. null ); // Подпись транзакции приватным ключом. $burnTxSigned = $wk->txSign($burnTx); // Отправка транзакции на ноду. $burnTxBroadcasted = $wk->txBroadcast($burnTxSigned); // Ожидание появления транзакции в блокчейне. sleep(5); // Получение JSON-данных о транзакции от ноды. function fetchTransactionJson(string $txId, string $nodeHttp): ?array { $url = rtrim($nodeHttp, '/') . '/transactions/info/' . rawurlencode($txId); $opts = [ "http" => [ "method" => "GET", "header" => "Accept: application/json\r\n", "timeout" => 10 ] ]; $context = stream_context_create($opts); $response = @file_get_contents($url, false, $context); if ($response === false) return null; return json_decode($response, true); } $txId = $burnTxBroadcasted['id'] ?? null; if ($txId === null) { echo "Broadcast failed; response:\n"; var_export($burnTxBroadcasted); exit(1); } $transactionJson = fetchTransactionJson($txId, $nodeHttp); // Вывод результатов. echo "ID транзакции: " . $txId . PHP_EOL; echo "JSON-данные транзакции: " . json_encode($transactionJson, JSON_PRETTY_PRINT) . PHP_EOL;
- Запустите файл
waves.php
:php waves.php
# Transfer
В директории проекта:
- Замените содержимое файла
waves.php
следующим блоком кода:<?php require_once __DIR__ . '/vendor/autoload.php'; // Необходимый импорт. use deemru\WavesKit; // Временно скрыть deprecated-предупреждения. error_reporting(E_ALL & ~E_DEPRECATED); // Укажите сид-фразу вашего аккаунта. $seedPhrase = 'УКАЖИТЕ ВАШУ СИД-ФРАЗУ'; /* Укажите ID сети: * - Mainnet: 'W' * - Testnet: 'T' */ $network = 'T'; /* * Укажите ссылку сети ноды: * - Mainnet: 'https://nodes.wavesnodes.com/' * - Testnet: 'https://nodes-testnet.wavesnodes.com/' */ $nodeHttp = 'https://nodes-testnet.wavesnodes.com/'; // Инициализация SDK и установка сид-фразы. $wk = new WavesKit($network); $wk->setSeed($seedPhrase); // Укажите ID ассета или используйте 'WAVES' для отправки WAVES. $assetId = 'УКАЖИТЕ ID АССЕТА'; // Укажит адрес получателя. $recipient = 'УКАЖИТЕ АДРЕС'; // Создание Transfer-транзакции. $transferTx = $wk->txTransfer( $recipient, // Адрес получателя. 5000, // Сумма трансфера в наименьшей единице. // Пример: // - Для кастомных ассетов: `5000` для `50` токенов. // - Для WAVES: `5000` для `0.00005000` WAVES. $assetID, // ID ассета. '', // Приложение. Пустая строка по умолчанию. null, // Комиссия. Null = станадртная комиссия за транзакцию. 'WAVES' // Актив для уплаты комиссии. ); // Подпись транзакции приватным ключом. $transferTxSigned = $wk->txSign($transferTx); // Отправка транзакции на ноду. $transferTxBroadcasted = $wk->txBroadcast($transferTxSigned); // Ожидание появления транзакции в блокчейне. sleep(5); // Получение JSON-данных о транзакции от ноды. function fetchTransactionJson(string $txId, string $nodeHttp): ?array { $url = rtrim($nodeHttp, '/') . '/transactions/info/' . rawurlencode($txId); $opts = [ "http" => [ "method" => "GET", "header" => "Accept: application/json\r\n", "timeout" => 10 ] ]; $context = stream_context_create($opts); $response = @file_get_contents($url, false, $context); if ($response === false) return null; return json_decode($response, true); } $txId = $transferTxBroadcasted['id'] ?? null; if ($txId === null) { echo "Broadcast failed; response:\n"; var_export($transferTxBroadcasted); exit(1); } $transactionJson = fetchTransactionJson($txId, $nodeHttp); // Вывод результатов. echo "ID транзакции: " . $txId . PHP_EOL; echo "JSON-данные транзакции: " . json_encode($transactionJson, JSON_PRETTY_PRINT) . PHP_EOL;
- Запустите файл
waves.php
:php waves.php
# Mass Transfer
В директории проекта:
- Замените содержимое файла
waves.php
следующим блоком кода:<?php require_once __DIR__ . '/vendor/autoload.php'; // Необходимый импорт. use deemru\WavesKit; // Временно скрыть deprecated-предупреждения. error_reporting(E_ALL & ~E_DEPRECATED); // Укажите сид-фразу вашего аккаунта. $seedPhrase = 'УКАЖИТЕ ВАШУ СИД-ФРАЗУ'; /* Укажите ID сети: * - Mainnet: 'W' * - Testnet: 'T' */ $network = 'T'; /* * Укажите ссылку сети ноды: * - Mainnet: 'https://nodes.wavesnodes.com/' * - Testnet: 'https://nodes-testnet.wavesnodes.com/' */ $nodeHttp = 'https://nodes-testnet.wavesnodes.com/'; // Инициализация SDK и установка сид-фразы. $wk = new WavesKit($network); $wk->setSeed($seedPhrase); // Укажите ID ассета или используйте 'WAVES' для отправки WAVES. $assetId = 'УКАЖИТЕ ID АССЕТА'; // Создание транзакция Mass Transfer. $recipients = [ 'УКАЖИТЕ АДРЕС ПЕРВОГО ПОЛУЧАТЕЛЯ', 'УКАЖИТЕ АДРЕС ВТОРОГО ПОЛУЧАТЕЛЯ', // ... ]; $amounts = [ 1000, // Сумма к получению для первого получателя в наименьшей единице. Пример: `1000` для `10` токенов. 2000, // Сумма к получению для второго получателя в наименьшей единице. Пример: `2000` для `20` токенов. // ... ]; $massTransferTx = $wk->txMass( $recipients, // Массив получателя. $amounts, // Массив сумм. $assetId // ID ассета или 'WAVES'. ); // Подпись транзакции приватным ключом. $massTransferTxSigned = $wk->txSign($massTransferTx); // Отправка транзакции на ноду. $massTransferTxBroadcasted = $wk->txBroadcast($massTransferTxSigned); // Ожидание появления транзакции в блокчейне. sleep(5); // Получение JSON-данных о транзакции от ноды. function fetchTransactionJson(string $txId, string $nodeHttp): ?array { $url = rtrim($nodeHttp, '/') . '/transactions/info/' . rawurlencode($txId); $opts = [ "http" => [ "method" => "GET", "header" => "Accept: application/json\r\n", "timeout" => 10 ] ]; $context = stream_context_create($opts); $response = @file_get_contents($url, false, $context); if ($response === false) return null; return json_decode($response, true); } $txId = $massTransferTxBroadcasted['id'] ?? null; if ($txId === null) { echo "Broadcast failed; response:\n"; var_export($massTransferTxBroadcasted); exit(1); } $transactionJson = fetchTransactionJson($txId, $nodeHttp); // Вывод результатов. echo "ID транзакции: " . $txId . PHP_EOL; echo "JSON-данные транзакции: " . json_encode($transactionJson, JSON_PRETTY_PRINT) . PHP_EOL;
- Запустите файл
waves.php
:php waves.php
# Lease
В директории проекта:
- Замените содержимое файла
waves.php
следующим блоком кода:<?php require_once __DIR__ . '/vendor/autoload.php'; // Необходимый импорт. use deemru\WavesKit; // Временно скрыть deprecated-предупреждения. error_reporting(E_ALL & ~E_DEPRECATED); // Укажите сид-фразу вашего аккаунта. $seedPhrase = 'УКАЖИТЕ ВАШУ СИД-ФРАЗУ'; /* Укажите ID сети: * - Mainnet: 'W' * - Testnet: 'T' */ $network = 'T'; /* * Укажите ссылку сети ноды: * - Mainnet: 'https://nodes.wavesnodes.com/' * - Testnet: 'https://nodes-testnet.wavesnodes.com/' */ $nodeHttp = 'https://nodes-testnet.wavesnodes.com/'; // Инициализация SDK и установка сид-фразы. $wk = new WavesKit($network); $wk->setSeed($seedPhrase); // Укажите адрес получателя лизинга. $recipient = 'УКАЖИТЕ АДРЕС'; // Укажите сумму лизинга в WAVES. $amount = 100000; // Пример: `100000` для `0.00100000` WAVES. // Создание Lease-транзакции. $leaseTx = $wk->txLease( $recipient, // Получатель лизинга. $amount // Сумма в WAVES. ); // Подпись транзакции приватным ключом. $leaseTxSigned = $wk->txSign($leaseTx); // Отправка транзакции на ноду. $leaseTxBroadcasted = $wk->txBroadcast($leaseTxSigned); // Ожидание появления транзакции в блокчейне. sleep(5); // Получение JSON-данных о транзакции от ноды. function fetchTransactionJson(string $txId, string $nodeHttp): ?array { $url = rtrim($nodeHttp, '/') . '/transactions/info/' . rawurlencode($txId); $opts = [ "http" => [ "method" => "GET", "header" => "Accept: application/json\r\n", "timeout" => 10 ] ]; $context = stream_context_create($opts); $response = @file_get_contents($url, false, $context); if ($response === false) return null; return json_decode($response, true); } $txId = $leaseTxBroadcasted['id'] ?? null; if ($txId === null) { echo "Broadcast failed; response:\n"; var_export($leaseTxBroadcasted); exit(1); } $transactionJson = fetchTransactionJson($txId, $nodeHttp); // Вывод результатов. echo "ID транзакции: " . $txId . PHP_EOL; echo "JSON-данные транзакции: " . json_encode($transactionJson, JSON_PRETTY_PRINT) . PHP_EOL;
- Запустите файл
waves.php
:php waves.php
# Lease Cancel
В директории проекта:
- Замените содержимое файла
waves.php
следующим блоком кода:<?php require_once __DIR__ . '/vendor/autoload.php'; // Необходимый импорт. use deemru\WavesKit; // Временно скрыть deprecated-предупреждения. error_reporting(E_ALL & ~E_DEPRECATED); // Укажите сид-фразу вашего аккаунта. $seedPhrase = 'УКАЖИТЕ ВАШУ СИД-ФРАЗУ'; /* Укажите ID сети: * - Mainnet: 'W' * - Testnet: 'T' */ $network = 'T'; /* * Укажите ссылку сети ноды: * - Mainnet: 'https://nodes.wavesnodes.com/' * - Testnet: 'https://nodes-testnet.wavesnodes.com/' */ $nodeHttp = 'https://nodes-testnet.wavesnodes.com/'; // Инициализация SDK и установка сид-фразы. $wk = new WavesKit($network); $wk->setSeed($seedPhrase); // Укажите ID Lease-транзакции, которую необходимо отменить. $leaseId = 'УКАЖИТЕ ID LEASE-транзакции'; // Создание транзакции Cancel Lease. $cancelLeaseTx = $wk->txLeaseCancel( $leaseId // ID Lease-транзакции. ); // Подпись транзакции приватным ключом. $cancelLeaseTxSigned = $wk->txSign($cancelLeaseTx); // Отправка транзакции на ноду. $cancelLeaseTxBroadcasted = $wk->txBroadcast($cancelLeaseTxSigned); // Ожидание появления транзакции в блокчейне. sleep(5); // Получение JSON-данных о транзакции от ноды. function fetchTransactionJson(string $txId, string $nodeHttp): ?array { $url = rtrim($nodeHttp, '/') . '/transactions/info/' . rawurlencode($txId); $opts = [ "http" => [ "method" => "GET", "header" => "Accept: application/json\r\n", "timeout" => 10 ] ]; $context = stream_context_create($opts); $response = @file_get_contents($url, false, $context); if ($response === false) return null; return json_decode($response, true); } $txId = $cancelLeaseTxBroadcasted['id'] ?? null; if ($txId === null) { echo "Broadcast failed; response:\n"; var_export($cancelLeaseTxBroadcasted); exit(1); } $transactionJson = fetchTransactionJson($txId, $nodeHttp); // Вывод результатов. echo "ID транзакции: " . $txId . PHP_EOL; echo "JSON-данные транзакции: " . json_encode($transactionJson, JSON_PRETTY_PRINT) . PHP_EOL;
- Запустите файл
waves.php
:php waves.php
# Create Alias
В директории проекта:
- Замените содержимое файла
waves.php
следующим блоком кода:<?php require_once __DIR__ . '/vendor/autoload.php'; // Необходимый импорт. use deemru\WavesKit; // Временно скрыть deprecated-предупреждения. error_reporting(E_ALL & ~E_DEPRECATED); // Укажите сид-фразу вашего аккаунта. $seedPhrase = 'УКАЖИТЕ ВАШУ СИД-ФРАЗУ'; /* Укажите ID сети: * - Mainnet: 'W' * - Testnet: 'T' */ $network = 'T'; /* * Укажите ссылку сети ноды: * - Mainnet: 'https://nodes.wavesnodes.com/' * - Testnet: 'https://nodes-testnet.wavesnodes.com/' */ $nodeHttp = 'https://nodes-testnet.wavesnodes.com/'; // Инициализация SDK и установка сид-фразы. $wk = new WavesKit($network); $wk->setSeed($seedPhrase); // Укажите желаемый псевдоним. $alias = 'youralias'; // Пример значения. // Создание транзакции Create Alias. $createAliasTx = $wk->txAlias( $alias // Alias to create. ); // Подпись транзакции приватным ключом. $createAliasTxSigned = $wk->txSign($createAliasTx); // Отправка транзакции на ноду. $createAliasTxBroadcasted = $wk->txBroadcast($createAliasTxSigned); // Ожидание появления транзакции в блокчейне. sleep(5); // Получение JSON-данных о транзакции от ноды. function fetchTransactionJson(string $txId, string $nodeHttp): ?array { $url = rtrim($nodeHttp, '/') . '/transactions/info/' . rawurlencode($txId); $opts = [ "http" => [ "method" => "GET", "header" => "Accept: application/json\r\n", "timeout" => 10 ] ]; $context = stream_context_create($opts); $response = @file_get_contents($url, false, $context); if ($response === false) return null; return json_decode($response, true); } $txId = $createAliasTxBroadcasted['id'] ?? null; if ($txId === null) { echo "Broadcast failed; response:\n"; var_export($createAliasTxBroadcasted); exit(1); } $transactionJson = fetchTransactionJson($txId, $nodeHttp); // Вывод результатов. echo "ID транзакции: " . $txId . PHP_EOL; echo "JSON-данные транзакции: " . json_encode($transactionJson, JSON_PRETTY_PRINT) . PHP_EOL;
- Запустите файл
waves.php
:php waves.php
# Data
В директории проекта:
- Замените содержимое файла
waves.php
следующим блоком кода:<?php require_once __DIR__ . '/vendor/autoload.php'; // Необходимый импорт. use deemru\WavesKit; // Временно скрыть deprecated-предупреждения. error_reporting(E_ALL & ~E_DEPRECATED); // Укажите сид-фразу вашего аккаунта. $seedPhrase = 'УКАЖИТЕ ВАШУ СИД-ФРАЗУ'; /* Укажите ID сети: * - Mainnet: 'W' * - Testnet: 'T' */ $network = 'T'; /* * Укажите ссылку сети ноды: * - Mainnet: 'https://nodes.wavesnodes.com/' * - Testnet: 'https://nodes-testnet.wavesnodes.com/' */ $nodeHttp = 'https://nodes-testnet.wavesnodes.com/'; // Инициализация SDK и установка сид-фразы. $wk = new WavesKit($network); $wk->setSeed($seedPhrase); // Создание случайных записей. $n = mt_rand(4, 10); // Количество записей. $dataEntries = []; for ($i = 0; $i < $n; $i++) { if ($i === 0) { $dataEntries["key_$i"] = mt_rand(); // Пример Integer-значения. } elseif ($i === 1) { $dataEntries["key_$i"] = (bool) mt_rand(0, 1); // Пример Boolean-значения. } elseif ($i === 2) { $binary = $wk->sha256($wk->randomSeed()); $dataEntries["key_$i"] = [$binary]; // Пример Binary-значения. } else { $dataEntries["key_$i"] = $wk->randomSeed(1); // Пример String-значения. } } // Создание Data-транзакции. $dataTx = $wk->txData($dataEntries); // Подпись транзакции приватным ключом. $dataTxSigned = $wk->txSign($dataTx); // Отправка транзакции на ноду. $dataTxBroadcasted = $wk->txBroadcast($dataTxSigned); // Ожидание появления транзакции в блокчейне. sleep(5); // Получение JSON-данных о транзакции от ноды. function fetchTransactionJson(string $txId, string $nodeHttp): ?array { $url = rtrim($nodeHttp, '/') . '/transactions/info/' . rawurlencode($txId); $opts = [ "http" => [ "method" => "GET", "header" => "Accept: application/json\r\n", "timeout" => 10 ] ]; $context = stream_context_create($opts); $response = @file_get_contents($url, false, $context); if ($response === false) return null; return json_decode($response, true); } $txId = $dataTxBroadcasted['id'] ?? null; if ($txId === null) { echo "Broadcast failed; response:\n"; var_export($dataTxBroadcasted); exit(1); } $transactionJson = fetchTransactionJson($txId, $nodeHttp); // Вывод результатов. echo "ID транзакции: " . $txId . PHP_EOL; echo "JSON-данные транзакции: " . json_encode($transactionJson, JSON_PRETTY_PRINT) . PHP_EOL;
- Запустите файл
waves.php
:php waves.php
# Set Script
В директории проекта:
- Замените содержимое файла
waves.php
следующим блоком кода:<?php require_once __DIR__ . '/vendor/autoload.php'; // Необходимый импорт. use deemru\WavesKit; // Временно скрыть deprecated-предупреждения. error_reporting(E_ALL & ~E_DEPRECATED); // Укажите сид-фразу вашего аккаунта. $seedPhrase = 'УКАЖИТЕ ВАШУ СИД-ФРАЗУ'; /* Укажите ID сети: * - Mainnet: 'W' * - Testnet: 'T' */ $network = 'T'; /* * Укажите ссылку сети ноды: * - Mainnet: 'https://nodes.wavesnodes.com/' * - Testnet: 'https://nodes-testnet.wavesnodes.com/' */ $nodeHttp = 'https://nodes-testnet.wavesnodes.com/'; // Инициализация SDK и установка сид-фразы. $wk = new WavesKit($network); $wk->setSeed($seedPhrase); // Укажите Ride-скрипт. $script = '{-# STDLIB_VERSION 4 #-} {-# CONTENT_TYPE DAPP #-} {-# SCRIPT_TYPE ACCOUNT #-} @Callable(i) func default() = [] ' ; // Компиляция скрипта. $scriptCompilation = $wk->compile( $script ); $scriptBase64 = $scriptCompilation['script'] ?? null; // Создание транзакции Set Script. $setScriptTx = $wk->txAddressScript($scriptBase64); // Или используйте `$wk->txAddressScript($null)` для удаления скрипта. // Подпись транзакции приватным ключом. $setScriptTxSigned = $wk->txSign($setScriptTx); // Отправка транзакции на ноду. $setScriptTxBroadcasted = $wk->txBroadcast($setScriptTxSigned); // Ожидание появления транзакции в блокчейне. sleep(5); // Получение JSON-данных о транзакции от ноды. function fetchTransactionJson(string $txId, string $nodeHttp): ?array { $url = rtrim($nodeHttp, '/') . '/transactions/info/' . rawurlencode($txId); $opts = [ "http" => [ "method" => "GET", "header" => "Accept: application/json\r\n", "timeout" => 10 ] ]; $context = stream_context_create($opts); $response = @file_get_contents($url, false, $context); if ($response === false) return null; return json_decode($response, true); } $txId = $setScriptTxBroadcasted['id'] ?? null; if ($txId === null) { echo "Broadcast failed; response:\n"; var_export($setScriptTxBroadcasted); exit(1); } $transactionJson = fetchTransactionJson($txId, $nodeHttp); // Вывод результатов. echo "ID транзакции: " . $txId . PHP_EOL; echo "JSON-данные транзакции: " . json_encode($transactionJson, JSON_PRETTY_PRINT) . PHP_EOL;
- Запустите файл
waves.php
:php waves.php
# Set Asset Script
О транзакции Set Asset Script.
Обратите внимание: Вы можете установить скрипт актива только для тех активов, которые были выпущены с установленным Ride-скриптом.
В директории проекта:
- Замените содержимое файла
waves.php
следующим блоком кода:<?php require_once __DIR__ . '/vendor/autoload.php'; // Необходимый импорт. use deemru\WavesKit; // Временно скрыть deprecated-предупреждения. error_reporting(E_ALL & ~E_DEPRECATED); // Укажите сид-фразу вашего аккаунта. $seedPhrase = 'УКАЖИТЕ ВАШУ СИД-ФРАЗУ'; /* Укажите ID сети: * - Mainnet: 'W' * - Testnet: 'T' */ $network = 'T'; /* * Укажите ссылку сети ноды: * - Mainnet: 'https://nodes.wavesnodes.com/' * - Testnet: 'https://nodes-testnet.wavesnodes.com/' */ $nodeHttp = 'https://nodes-testnet.wavesnodes.com/'; // Инициализация SDK и установка сид-фразы. $wk = new WavesKit($network); $wk->setSeed($seedPhrase); // Укажите ID ассета. $assetId = 'УКАЖИТЕ ID АССЕТА'; // Укажите Ride-скрипт ассета. $scriptSource = "{-# STDLIB_VERSION 5 #-}\n" . "{-# CONTENT_TYPE EXPRESSION #-}\n" . "{-# SCRIPT_TYPE ASSET #-}\n\n" . "true"; // Компиляция скрипта. $scriptCompilation = $wk->compile($scriptSource); $scriptBase64 = $scriptCompilation['script'] ?? null; // Создание транзакции Set Asset Script. $setAssetScriptTx = $wk->txAssetScript( $assetId, // ID ассета. $scriptBase64 // Скрипт или `null` для удаления скрипта. ); // Подпись транзакции приватным ключом. $setAssetScriptTxSigned = $wk->txSign($setAssetScriptTx); // Отправка транзакции на ноду. $setAssetScriptTxBroadcasted = $wk->txBroadcast($setAssetScriptTxSigned); // Ожидание появления транзакции в блокчейне. sleep(5); // Получение JSON-данных о транзакции от ноды. function fetchTransactionJson(string $txId, string $nodeHttp): ?array { $url = rtrim($nodeHttp, '/') . '/transactions/info/' . rawurlencode($txId); $opts = [ "http" => [ "method" => "GET", "header" => "Accept: application/json\r\n", "timeout" => 10 ] ]; $context = stream_context_create($opts); $response = @file_get_contents($url, false, $context); if ($response === false) return null; return json_decode($response, true); } $txId = $setAssetScriptTxBroadcasted['id'] ?? null; if ($txId === null) { echo "Broadcast failed; response:\n"; var_export($setAssetScriptTxBroadcasted); exit(1); } $transactionJson = fetchTransactionJson($txId, $nodeHttp); // Вывод результатов. echo "ID транзакции: " . $txId . PHP_EOL; echo "JSON-данные транзакции: " . json_encode($transactionJson, JSON_PRETTY_PRINT) . PHP_EOL;
- Запустите файл
waves.php
:php waves.php
# Update Asset Info
О транзакции Update Asset Info.
В директории проекта:
- Замените содержимое файла
waves.php
следующим блоком кода:<?php require_once __DIR__ . '/vendor/autoload.php'; // Необходимый импорт. use deemru\WavesKit; // Временно скрыть deprecated-предупреждения. error_reporting(E_ALL & ~E_DEPRECATED); // Укажите сид-фразу вашего аккаунта. $seedPhrase = 'УКАЖИТЕ ВАШУ СИД-ФРАЗУ'; /* Укажите ID сети: * - Mainnet: 'W' * - Testnet: 'T' */ $network = 'T'; /* * Укажите ссылку сети ноды: * - Mainnet: 'https://nodes.wavesnodes.com/' * - Testnet: 'https://nodes-testnet.wavesnodes.com/' */ $nodeHttp = 'https://nodes-testnet.wavesnodes.com/'; // Инициализация SDK и установка сид-фразы. $wk = new WavesKit($network); $wk->setSeed($seedPhrase); // Укажите ID ассета. $assetId = 'УКАЖИТЕ ID АССЕТА'; // Specify updated asset info. $assetName = 'UpdatedTokenName'; // Пример значения. $assetDescription = 'Updated description'; // Пример значения. // Создание транзакции Update Asset Info. $updateAssetInfoTx = $wk->txUpdateAssetInfo( $assetId, // ID ассета. $assetName, // Новое наименование. $assetDescription // Новое описание. ); // Подпись транзакции приватным ключом. $updateAssetInfoTxSigned = $wk->txSign($updateAssetInfoTx); // Отправка транзакции на ноду. $updateAssetInfoTxBroadcasted = $wk->txBroadcast($updateAssetInfoTxSigned); // Ожидание появления транзакции в блокчейне. sleep(5); // Получение JSON-данных о транзакции от ноды. function fetchTransactionJson(string $txId, string $nodeHttp): ?array { $url = rtrim($nodeHttp, '/') . '/transactions/info/' . rawurlencode($txId); $opts = [ "http" => [ "method" => "GET", "header" => "Accept: application/json\r\n", "timeout" => 10 ] ]; $context = stream_context_create($opts); $response = @file_get_contents($url, false, $context); if ($response === false) return null; return json_decode($response, true); } $txId = $updateAssetInfoTxBroadcasted['id'] ?? null; if ($txId === null) { echo "Broadcast failed; response:\n"; var_export($updateAssetInfoTxBroadcasted); exit(1); } $transactionJson = fetchTransactionJson($txId, $nodeHttp); // Вывод результатов. echo "ID транзакции: " . $txId . PHP_EOL; echo "JSON-данные транзакции: " . json_encode($transactionJson, JSON_PRETTY_PRINT) . PHP_EOL;
- Запустите файл
waves.php
:php waves.php
# Invoke Script
В директории проекта:
- Замените содержимое файла
waves.php
следующим блоком кода:<?php require_once __DIR__ . '/vendor/autoload.php'; // Необходимый импорт. use deemru\WavesKit; // Временно скрыть deprecated-предупреждения. error_reporting(E_ALL & ~E_DEPRECATED); // Укажите сид-фразу вашего аккаунта. $seedPhrase = 'УКАЖИТЕ ВАШУ СИД-ФРАЗУ'; /* Укажите ID сети: * - Mainnet: 'W' * - Testnet: 'T' */ $network = 'T'; /* * Укажите ссылку сети ноды: * - Mainnet: 'https://nodes.wavesnodes.com/' * - Testnet: 'https://nodes-testnet.wavesnodes.com/' */ $nodeHttp = 'https://nodes-testnet.wavesnodes.com/'; // Инициализация SDK и установка сид-фразы. $wk = new WavesKit($network); $wk->setSeed($seedPhrase); // Укажите адрес dApp или его псевдоним. $dAppAddress = 'УКАЖИТЕ АДРЕС DAPP'; // Укажите наименование вызываемой функции и необходимые аргументы. $functionName = 'yourFunctionName'; $functionArgs = [ // Пример: ['type' => 'integer', 'value' => 123], ]; // Создание транзакции Invoke Script. $invokeScriptTx = $wk->txInvokeScript( $dAppAddress, // Адрес dApp или его псевдоним. $functionName, // Наименование вызываемой функции. $functionArgs // Аргументы функции. ); // Подпись транзакции приватным ключом. $invokeScriptTxSigned = $wk->txSign($invokeScriptTx); // Отправка транзакции на ноду. $invokeScriptTxBroadcasted = $wk->txBroadcast($invokeScriptTxSigned); // Ожидание появления транзакции в блокчейне. sleep(5); // Получение JSON-данных о транзакции от ноды. function fetchTransactionJson(string $txId, string $nodeHttp): ?array { $url = rtrim($nodeHttp, '/') . '/transactions/info/' . rawurlencode($txId); $opts = [ "http" => [ "method" => "GET", "header" => "Accept: application/json\r\n", "timeout" => 10 ] ]; $context = stream_context_create($opts); $response = @file_get_contents($url, false, $context); if ($response === false) return null; return json_decode($response, true); } $txId = $invokeScriptTxBroadcasted['id'] ?? null; if ($txId === null) { echo "Broadcast failed; response:\n"; var_export($invokeScriptTxBroadcasted); exit(1); } $transactionJson = fetchTransactionJson($txId, $nodeHttp); // Вывод результатов. echo "ID транзакции: " . $txId . PHP_EOL; echo "JSON-данные транзакции: " . json_encode($transactionJson, JSON_PRETTY_PRINT) . PHP_EOL;
- Запустите файл
waves.php
:php waves.php
# Sponsor Fee
В директории проекта:
- Замените содержимое файла
waves.php
следующим блоком кода:<?php require_once __DIR__ . '/vendor/autoload.php'; // Необходимый импорт. use deemru\WavesKit; // Временно скрыть deprecated-предупреждения. error_reporting(E_ALL & ~E_DEPRECATED); // Укажите сид-фразу вашего аккаунта. $seedPhrase = 'УКАЖИТЕ ВАШУ СИД-ФРАЗУ'; /* Укажите ID сети: * - Mainnet: 'W' * - Testnet: 'T' */ $network = 'T'; /* * Укажите ссылку сети ноды: * - Mainnet: 'https://nodes.wavesnodes.com/' * - Testnet: 'https://nodes-testnet.wavesnodes.com/' */ $nodeHttp = 'https://nodes-testnet.wavesnodes.com/'; // Инициализация SDK и установка сид-фразы. $wk = new WavesKit($network); $wk->setSeed($seedPhrase); // Укажите ID спонсорского ассета. $assetId = 'УКАЖИТЕ ID АССЕТА'; // Укажите минимальную спонсорскую комиссию в WAVES. $minSponsoredFee = 100000; // Создание Sponsorship-транзакции. $sponsorshipTx = $wk->txSponsorship( $assetId, // ID ассета. $minSponsoredFee // Минимальная спонсорская комиссия или 0 для отмены спонсорства. ); // Подпись транзакции приватным ключом. $sponsorshipTxSigned = $wk->txSign($sponsorshipTx); // Отправка транзакции на ноду. $sponsorshipTxBroadcasted = $wk->txBroadcast($sponsorshipTxSigned); // Ожидание появления транзакции в блокчейне. sleep(5); // Получение JSON-данных о транзакции от ноды. function fetchTransactionJson(string $txId, string $nodeHttp): ?array { $url = rtrim($nodeHttp, '/') . '/transactions/info/' . rawurlencode($txId); $opts = [ "http" => [ "method" => "GET", "header" => "Accept: application/json\r\n", "timeout" => 10 ] ]; $context = stream_context_create($opts); $response = @file_get_contents($url, false, $context); if ($response === false) return null; return json_decode($response, true); } $txId = $sponsorshipTxBroadcasted['id'] ?? null; if ($txId === null) { echo "Broadcast failed; response:\n"; var_export($sponsorshipTxBroadcasted); exit(1); } $transactionJson = fetchTransactionJson($txId, $nodeHttp); // Вывод результатов. echo "ID транзакции: " . $txId . PHP_EOL; echo "JSON-данные транзакции: " . json_encode($transactionJson, JSON_PRETTY_PRINT) . PHP_EOL;
- Запустите файл
waves.php
:php waves.php