# Отправка транзакций
Убедитесь в выполнении требований для отправки транзакций.
# Требования
- Кошелёк: Создайте кошелёк с помощью 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
В директории проекта:
- Замените содержимое файла
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;
- Запустите файл
waves.php
:php waves.php
# Reissue
В директории проекта:
- Замените содержимое файла
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;
- Запустите файл
waves.php
:php waves.php
# Burn
В директории проекта:
- Замените содержимое файла
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;
- Запустите файл
waves.php
:php waves.php
# Transfer
В директории проекта:
- Замените содержимое файла
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;
- Запустите файл
waves.php
:php waves.php
# Mass Transfer
В директории проекта:
- Замените содержимое файла
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;
- Запустите файл
waves.php
:php waves.php
# Lease
В директории проекта:
- Замените содержимое файла
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;
- Запустите файл
waves.php
:php waves.php
# Lease Cancel
В директории проекта:
- Замените содержимое файла
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; ```
- Запустите файл
waves.php
:php waves.php
# Create Alias
В директории проекта:
- Замените содержимое файла
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;
- Запустите файл
waves.php
:php waves.php
# Data
В директории проекта:
- Замените содержимое файла
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;
- Запустите файл
waves.php
:php waves.php
# Set Script
В директории проекта:
- Замените содержимое файла
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;
- Запустите файл
waves.php
:php waves.php
# Set Asset Script
О транзакции Set Asset Script.
Обратите внимание: Вы можете установить скрипт актива только для тех активов, которые были выпущены с установленным Ride-скриптом.
В директории проекта:
- Замените содержимое файла
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;
- Запустите файл
waves.php
:php waves.php
# Update Asset Info
О транзакции Update Asset Info.
В директории проекта:
- Замените содержимое файла
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;
- Запустите файл
waves.php
:php waves.php
# Invoke Script
В директории проекта:
- Замените содержимое файла
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;
- Запустите файл
waves.php
:php waves.php
# Sponsor Fee
В директории проекта:
- Замените содержимое файла
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;
- Запустите файл
waves.php
:php waves.php